1

我在信息亭上有一个程序,该程序具有相关服务,通过定期在网上检查是否有更新版本的 MSI 来更新程序。如果它找到一个,它将安装它,该程序可能仍在运行。

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

4

2 回答 2

2

ClickOnce 在这里不是更好的选择吗?

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

于 2012-01-24T12:40:45.457 回答
2

我以前做过这个故事。它是这样工作的:

UI 以登录用户身份运行。

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

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

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

还要看看wuw4 库。它有助于创建很多这种解决方案。

于 2012-01-24T22:20:21.240 回答