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

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

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

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

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

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

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

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

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

ClickOnce不是更好的选择吗?

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