Wix Installer升级时ADDLOCAL参数致原有功能丢失,如何保留旧功能装新功能?
如何在Wix Installer升级时保留原有功能并安装新功能
你提到的思路完全正确!Windows Installer本身就提供了INSTALLED_FEATURES这个预定义属性,它会自动指代当前系统中已经安装的所有功能,刚好能满足你“保留原有N个功能 + 新增FEATURE_NEW”的需求。
为什么之前的命令会移除原有功能?
当你只指定ADDLOCAL=FEATURE_NEW时,Windows Installer会将其理解为“仅安装FEATURE_NEW这一个功能”,因此会自动移除之前已经安装的FEATURE1、FEATURE2等未被列在ADDLOCAL中的功能——这是Windows Installer的默认行为,它会严格按照你指定的功能集合来维护安装状态。
正确的命令写法
你只需要把INSTALLED_FEATURES和新功能一起加入ADDLOCAL参数即可,注意/v后面的参数要整体用引号包裹(避免空格导致参数解析错误):
setup.exe /v"/qn ADDLOCAL=INSTALLED_FEATURES,FEATURE_NEW"
或者你也可以直接调用msiexec(有时候更直观):
msiexec /i your_installer.msi /qn ADDLOCAL=INSTALLED_FEATURES,FEATURE_NEW
额外注意事项
- 确保原有功能的
AllowAdvertise属性没有被设置为no(Wix默认是允许的,一般无需额外配置),否则INSTALLED_FEATURES可能无法正确识别这些功能。 - 如果FEATURE_NEW依赖其他未安装的功能,你需要把依赖功能也加入
ADDLOCAL,或者确保你的安装包已经配置了自动处理依赖的逻辑。 - 执行命令前,可以先用
msiexec /i your_installer.msi /qb(半交互模式)测试一下,确认功能选择符合预期,再换成/qn静默模式。
这样执行后,Windows Installer会保留所有已安装的原有功能,同时安装FEATURE_NEW,完全符合你的需求。
内容的提问来源于stack exchange,提问作者user3664223
相关产品推荐
相关产品推荐

