我在自助服务终端上有一个程序,其中包含相关服务,通过定期在网上查看更新版本的MSI来更新程序。如果找到一个,它将安装它,程序可能仍在运行。
为了解决上述解决方案的DLL冲突,我使用版本重命名MSI中的程序集,以便在旧版本运行时安装新版本。应用程序将轮询安装目录以获取较新的版本程序集,如果它在未使用时立即重新启动。有没有更好的方法来做到这一点?
答案 0 :(得分:2)
这不是ClickOnce更好的选择吗?
答案 1 :(得分:2)
我以前做过这个故事。它的工作原理如下:
用户界面正在以登录用户身份运行。
该服务作为系统运行。该服务检查内容并将其下载到临时目录。然后它使用/ JM命令通告MSI。安装程序现在可以由非特权用户安装。
服务向应用程序发送IPC消息,说明是时候安装了。应用程序启动安装程序,向其传递一个标志,指示重新启动应用程序。应用程序退出释放锁定的文件。
在安装程序结束时,该标志会使安装程序重新启动应用程序。
另请查看wuw4 library。它有助于创建大量此解决方案。