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支持此功能。

此外,您無法在服務運行時更新服務。所以你的服務應該創建一個臨時文件並啓動一個進程。然後該臨時進程可以處理更新(新版本下載和執行)。此外,這個臨時過程應該在更新後停止,並以某種方式刪除它的文件。

這並不像看起來那麼容易。這就是爲什麼好的更新程序應用程序花費大量金錢。