1

我有一个安装Windows服务的MSI。我希望服务能够收到消息并能够自行更新。我尝试了一个新的进程,它运行另一个程序集,然后运行带有/ Uninstall标志的MSIEXEC,然后安装一个新的MSI。自动升级Windows服务

这里的问题是,它似乎什么都不做。我曾看过它似乎是一个管理员权限问题。我添加了一个动词'runas'来强制执行管理权限:MSI现在运行,但需要用户交互(我不想)符合UAC。这个过程是否可以完全自动化?

谢谢。

+0

[从服务(本地系统帐户)运行msiexec]的可能重复](http://stackoverflow.com/questions/2603969/running-msiexec-from-a-service-local-system-account) –

回答

1

您的方法不正确。

你不需要自己卸载服务包,这应该由新版本来处理。 Windows Installer默认通过major upgrades支持此功能。

此外,您无法在服务运行时更新服务。所以你的服务应该创建一个临时文件并启动一个进程。然后该临时进程可以处理更新(新版本下载和执行)。此外,这个临时过程应该在更新后停止,并以某种方式删除它的文件。

这并不像看起来那么容易。这就是为什么好的更新程序应用程序花费大量金钱。