我目前正面临着我的单实例clickonce部署应用程序的问题,也许有人对它有很好的了解。
我的应用程序由Web应用程序调用,该应用程序将参数传递给此exe。现在的问题是,如果应用程序已经运行,则需要相当长的时间,直到新实例启动,参数被移交给正在运行的实例,并关闭(打开URL,检查更新,... )。
那么有没有办法检测到有一个正在运行的实例,而没有引入一个新的小应用程序来执行此检测?
目标是减少时间,第二个,第三个......调用需要将参数传递给正在运行的实例。
答案 0 :(得分:1)
设置部署设置时,您可以告诉VS仅让应用程序每x次更新一次(每天一次,每周一次等)。您还可以告诉它启动应用程序并在后台更新。我认为这两个都可以解决你自己的问题。
设置位于“发布”标签上的“项目”设置中。单击“安装模式和设置”部分中的“更新”按钮,然后设置适当的设置。
答案 1 :(得分:1)
不,它不是一个后台应用程序。 Web应用程序和Winforms应用程序正在使用数据库的类似子集。我试图不详细说明,因为这对问题并不重要,但要更清楚:使用Web应用程序,用户正在为我们的业务案例创建元数据,并使用Winforms应用程序进行用户操作他们的具体工作。
通过此链接,可以创建一组新的元数据,并在“working-app”中交叉检查结果。
所以有两个具体的场景:
Winforms-App未在客户端上运行:当用户点击click-once开始菜单条目或Web应用程序中的链接时,一切都应该按照现在的方式完成(更新时)检查,....)。所以这种情况对我有用。
Winforms-App正在客户端上运行:正在运行的实例应该尽快显示新的元数据集,而不进行任何一次点击更新检查,或者其他任何内容。 我试图绕过这种情况,弹出“点击一次启动应用程序”对话框,新的应用程序实例正在启动,新实例将参数传递给正在运行的实例并关闭自身。 所以我在寻找一个解决方案,在那里我实现了这个目标,而没有创建一个新的小型exe,这是由Web应用程序知道的,它可以完成这项工作。
答案 2 :(得分:0)
我想我不清楚,我想要实现的目标。
我要做的是,如果有一个实例在运行,直接访问这个实例,而不启动clickonce网址。我正在寻找一个解决方案,我不需要编写一个小程序(也必须部署,...),它检查应用程序是否正在运行,如果是,则移交参数,如果没有启动clickonce url。
后台更新实际上不是一个选项,因为这个“连接到应用程序”屏幕仍然存在且消耗时间,并且必须每个用户每次都运行最新版本的应用程序。
答案 3 :(得分:0)
这似乎是Click-Once技术的一个有趣用途。 我认为Click-Once非常适合将客户端应用程序分发到企业内的多个最终用户计算机。
在这里描述的情况下,这是一个Web服务器应用程序使用的后台应用程序 - 我希望它只安装在企业中的几台服务器上。
我的问题是:
了解这一点可能有助于解决您的问题。