c#在Windows上更新程序仍在运行时

时间:2012-01-24 09:27:16

标签: c# .net windows-installer kiosk

我在自助服务终端上有一个程序,其中包含相关服务,通过定期在网上查看更新版本的MSI来更新程序。如果找到一个,它将安装它,程序可能仍在运行。

为了解决上述解决方案的DLL冲突,我使用版本重命名MSI中的程序集,以便在旧版本运行时安装新版本。应用程序将轮询安装目录以获取较新的版本程序集,如果它在未使用时立即重新启动。有没有更好的方法来做到这一点?

2 个答案:

答案 0 :(得分:2)

这不是ClickOnce更好的选择吗?

http://msdn.microsoft.com/en-us/library/t71a733d.aspx

答案 1 :(得分:2)

我以前做过这个故事。它的工作原理如下:

用户界面正在以登录用户身份运行。

该服务作为系统运行。该服务检查内容并将其下载到临时目录。然后它使用/ JM命令通告MSI。安装程序现在可以由非特权用户安装。

服务向应用程序发送IPC消息,说明是时候安装了。应用程序启动安装程序,向其传递一个标志,指示重新启动应用程序。应用程序退出释放锁定的文件。

在安装程序结束时,该标志会使安装程序重新启动应用程序。

另请查看wuw4 library。它有助于创建大量此解决方案。