查找运行clickonce部署的单实例应用程序?

时间:2008-10-03 07:50:04

标签: clickonce single-instance

我目前正面临着我的单实例clickonce部署应用程序的问题,也许有人对它有很好的了解。

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

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

目标是减少时间,第二个,第三个......调用需要将参数传递给正在运行的实例。

4 个答案:

答案 0 :(得分:1)

设置部署设置时,您可以告诉VS仅让应用程序每x次更新一次(每天一次,每周一次等)。您还可以告诉它启动应用程序并在后台更新。我认为这两个都可以解决你自己的问题。

设置位于“发布”标签上的“项目”设置中。单击“安装模式和设置”部分中的“更新”按钮,然后设置适当的设置。

答案 1 :(得分:1)

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

通过此链接,可以创建一组新的元数据,并在“working-app”中交叉检查结果。

所以有两个具体的场景:

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

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

答案 2 :(得分:0)

我想我不清楚,我想要实现的目标。

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

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

答案 3 :(得分:0)

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

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

我的问题是:

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

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