4

我目前正面临我的单实例 clickonce 部署应用程序的问题,也许有人对此有一个好主意。

我的应用程序由一个 Web 应用程序调用,该应用程序将参数传递给这个 exe。现在的问题是,如果应用程序已经在运行,则需要相当长的时间,直到新实例启动,参数移交给正在运行的实例,然后关闭(打开 URL,检查更新,.. .)。

那么有没有办法检测到有一个正在运行的实例,而不引入一个新的小应用程序,这个检测呢?

目标是减少第二次,第三次,...调用需要将参数获取到正在运行的实例的时间。

4

4 回答 4

1

当您设置部署设置时,您可以告诉 VS 只让应用程序每隔 x 时间更新一次(每天一次、每周一次等)。您还可以告诉它启动应用程序并在后台更新。我认为这两种方法都可以自行解决您的问题。

这些设置位于“发布”选项卡上的“项目设置”中。单击“安装模式和设置”部分中的“更新”按钮并设置适当的设置。

于 2008-10-03T09:15:26.687 回答
1

不,它不是后台应用程序。Web 应用程序和 Winforms 应用程序正在使用类似的数据库子集。我尽量不详细说明,因为这对问题并不重要,但要更清楚:用户正在使用 Web 应用程序为我们的业务案例创建元数据,而使用 Winforms 应用程序的用户正在做他们的具体工作。

因此,通过此链接,可以创建一组新的元数据,并在“工作应用程序”中交叉检查结果。

所以有2个具体的场景:

  1. Winforms-App 未在客户端上运行:当用户单击单击一次的开始菜单条目或 Web 应用程序中的链接时,一切都应该按照现在的方式完成(通过更新检查,... )。所以这个场景对我有用。

  2. Winforms-App 正在客户端上运行:正在运行的实例应尽快显示新的元数据集,无需任何单击一次更新检查或其他任何操作。在这种情况下,我试图绕过“单击一次启动应用程序”对话框弹出,新应用程序实例正在启动,新实例正在将参数传递给正在运行的实例并自行关闭。所以我寻找一个解决方案,我实现了这一点,而不是创建一个新的小 exe,它被 web 应用程序所知道,它可以完成工作。

于 2008-10-06T06:52:26.543 回答
0

这似乎是 Click-Once 技术的一个有趣用途。我的印象是 Click-Once 非常适合将客户端 应用程序分发到企业内的多台最终用户机器。

在此处描述的情况下,这是一个由 Web 服务器应用程序使用的后台应用程序——我希望它只安装在企业中的几台服务器上。

我的问题是:

  • 如果 Web 应用程序可以检测到参数,您的 Web 应用程序将如何将参数传递给正在运行的实例?(例如 .NET 远程处理?)
  • 您通过 Click-Once(而不是 Windows 安装程序)分发此后台应用程序的原因是什么?

了解这一点可能有助于解决您的问题。

于 2008-10-05T04:14:55.817 回答
0

我想我没有说清楚,我想要实现什么。

我想要做的是,如果有一个实例正在运行,直接访问这个实例,而不启动 clickonce url。我正在寻找一个解决方案,我不必编写一个小程序(也必须部署它,...),它检查应用程序是否正在运行,如果是,则交出参数,如果不启动点击一次网址。

后台更新并不是一个真正的选择,因为这个“连接到应用程序”屏幕仍然存在并且会消耗时间,而且每个用户每次都在运行最新版本的应用程序是必须的。

于 2008-10-03T10:04:33.750 回答