我们已经安装了一个windows服务作为msi WIX安装程序的一部分。在升级期间,我们正在尝试重新启动服务,而不是完全重新安装,以安全保护服务用户凭据。
在这方面讨论了很多帖子,但没有一个是决定性的。
已尝试通过执行以下操作在升级过程中禁用DeleteServices,
<InstallExecuteSequence>
<DeleteServices>NOT UPGRADINGPRODUCTCODE</DeleteServices>
</InstallExecuteSequence>
注意:上面的代码也是在旧的MSI中
但仍然看到服务被实际删除和重新安装。已尝试在升级期间禁用installservice,如下所示
<InstallServices>NOT WIX_UPGRADE_DETECTED</InstallServices>
但服务处于停止状态,安装程序在操作中失败,ExecServiceConfig代码为1603,因为服务未处于运行状态。
任何关于这方面的建议都会很有帮助。
发布于 2018-06-10 05:51:22
不久前,我为类似的东西写了一个答案:。请阅读该链接以获得几个不同的建议。
Minor Upgrade:除了链接答案中的选项外,您还可以使用次要升级-如果这是一个可行的选项。在较小的升级中,产品不是卸载然后重新安装,而是“就地”升级。对于较小的升级,您需要严格遵守组件规则-这可能很难做到,但您肯定可以在不丢失服务证书的情况下进行升级。See bottom here for how a minor upgrade is applied。我将直接链接到an answer with a little bit of info on late REP。
Permanent Component:正如上面链接的答案所述,您可以将具有服务配置设置的组件设置为永久组件。在这种情况下,它永远不会在升级过程中卸载,但也不会在真正的卸载过程中卸载。因此,您必须在“真正的”卸载时手动清理服务安装和文件安装(与设置UPGRADINGPRODUCTCODE
的主要升级启动卸载相反)。一种简单的方法,我并不是很喜欢。
(托管)服务帐户:不是我用过的东西,但可以调查上面链接答案中描述的较新的concept of managed service accounts?Step-by-step。
Late REP / Service :正确安排RemoveExistingProducts
late意味着在升级方案期间不应卸载您的服务(有关详细信息,请参阅链接的答案)。严格遵守所有组件规则可能很困难,但您可以通过将您的服务放在自己的最小服务安装微星中,然后通过WiX刻录捆绑包进行安装(按顺序安装微星文件)来缓解这一点。
正如多次提到的,请务必阅读类似的答案:Wix: Windows Service sometimes uninstalled when upgrading。
https://stackoverflow.com/questions/50770724
复制相似问题