Wix 主要升级 : how do I prevent Windows service reinstallation?

标签 wix windows-installer

我正在开发一个应该安装多个 Windows 服务的安装程序。我们经常制作新版本(使用新的 .msi 文件),并且我们使用重大升级使其更容易安装到以前的安装中。

问题是我们需要在不覆盖服务配置(例如帐户用户名和密码)的情况下更新服务文件。

我们正在使用 ServiceInstallServiceControl在包含服务的组件内部 exe文件。有没有办法让 ServiceInstall 执行有条件的(使用类似 REMOVE="ALL" AND NOT UPGRADINGPRODUCTCODE 的条件)所以升级时不会卸载服务(只是停止以便我们可以升级文件)?

一种解决方案是使用自定义操作,但也许有更好的方法?

谢谢!

最佳答案

看来我找错地方了。我的问题的解决方案是添加 NOT UPGRADINGPRODUCTCODEDeleteServices标准 Action 。

这解决了我的问题。这种方法的警告是当前 msi 安装的所有服务文件被删除(或不删除)。所以我不能在升级时有选择地删除/保留服务。但是,这对我来说很好 - 我满足了在升级过程中保留服务登录信息(但不是实际服务代码)的要求。

更新:DeleteServices 的条件可以从 InstallExecuteSequence 中的 WiX 访问元素。

关于Wix 主要升级 : how do I prevent Windows service reinstallation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2228855/

相关文章:

WiX -- 将文件安装到系统驱动器

c# - WiX安装程序MSI未安装使用Visual Studio 2017创建的Winform应用

c++ - WiX Bootstrapper - 难以检测软件是否已安装 C++ 可再发行组件、SQL Server Compact 3.5 SP2

wix - 未解析对 WiX 中符号的引用 (LGHT0094)(没有非法字符?)

windows - Wix <MajorUpgrade> 在捆绑 VC 可再发行组件后无法正常工作

visual-studio - 如何根据其版本生成MSI软件包名称?

tags - WIX:我可以在安装时通过命令提示符设置升级指南吗?

java - 在 Windows 上安装带有嵌入式 Tomcat 的 Java Web 应用程序(使用系统托盘管理)

windows-7 - 使用 VS 创建的基本 MSI 安装程序需要管理员

c# - Wix 安装程序 : Error when tring to run a custom action from a button click - A DLL required for this install to complete could not be run