我有一个安装Windows服务的MSI。我希望服务接收消息并能够自我更新。我试图剥离一个运行另一个程序集的新进程,然后使用/ Uninstall标志运行MSIEXEC,然后安装一个新的MSI。
这里的问题是它似乎什么也没做。我看过它似乎是一个Admin权限问题。我添加了一个'runas'动词来强制执行管理员权限:MSI现在运行但需要用户交互(我不想要)以符合UAC。是否可以将此过程完全自动化?
感谢。
答案 0 :(得分:1)
您的方法不正确。
您无需自行卸载服务包,这应由新版本处理。 Windows Installer默认通过major upgrades支持此功能。
此外,您无法在服务运行时更新服务。因此,您的服务应该创建一个临时文件并启动一个进程。然后,该临时进程可以处理更新(新版本下载和执行)。此外,此临时进程应在更新后停止,并以某种方式删除其文件。
这并不像看起来那么容易。这就是好的Updater应用程序需要花费很多钱的原因。