在WIX升级期间重新启动Windows服务

时间:2018-06-09 03:48:16

标签: installation wix windows-services windows-installer

我们已安装Windows服务作为msi WIX安装程序的一部分。在升级过程中,我们尝试重新启动服务而不是完全重新安装以安全保护服务用户信誉。

在这方面讨论了很多帖子,但没有任何结论。

通过执行以下操作,尝试在升级期间禁用DeleteServices,

<InstallExecuteSequence>
   <DeleteServices>NOT UPGRADINGPRODUCTCODE</DeleteServices>
</InstallExecuteSequence>

注意:上面的代码也在旧的MSI中

但仍然看到服务实际上被删除并重新安装。尝试在升级期间禁用安装服务,如下所示

<InstallServices>NOT WIX_UPGRADE_DETECTED</InstallServices>

但是服务处于停止状态,安装程序失败,ExecServiceConfig代码为1603,因为服务未处于运行状态。

关于此的任何指示都会有所帮助

1 个答案:

答案 0 :(得分:0)

我曾经写过类似(我认为)类似的回答: Wix: Windows Service sometimes uninstalled when upgrading 。请阅读该链接以获得一些不同的建议。

次要升级 :除了链接答案中的选项之外,您还可以使用次要升级 - 如果这是一个可行的选项。在次要升级中,产品不会被卸载然后重新安装,而是“就地”升级。对于小的升级工作,你需要遵循组件规则到字母 - 这可能很难做,但你可以肯定升级而不会失去你的服务信誉。 See bottom here for how a minor upgrade is applied。我将链接到an answer with a little bit of info on late REP

永久组件 :如上面所述的链接答案所述,您可以将具有服务配置设置的组件设置为永久性。在这种情况下,它在升级期间永远不会被卸载,但在真正的卸载期间也不会被卸载。因此,您必须在“实际”卸载时手动清除服务安装和文件安装(而不是设置UPGRADINGPRODUCTCODE的主要升级启动卸载)。一种简单的方法,我真的不喜欢那么多。

(托管)服务帐户 :不是我使用过的东西,但可以调查上面链接答案中描述的较新的concept of managed service accounts吗? Step-by-step

延迟REP /服务MSI :正确调度RemoveExistingProducts意味着在升级方案期间不应卸载您的服务(有关详细信息,请参阅链接的答案)。可能很难遵循所有组件规则,但您可以通过将您的服务放在自己的最小服务安装MSI中,然后通过WiX Burn软件包安装(按顺序安装MSI文件)来简化这一过程。

如上所述,请阅读相似的答案:Wix: Windows Service sometimes uninstalled when upgrading