You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wix v3.11安装器改可选功能为全装后升级异常求助

Wix v3.11升级时未自动安装所有功能的问题排查

问题根源

MSI的升级逻辑默认会继承现有安装的功能状态——哪怕你在新安装包中将所有Feature的Level设为1,升级过程中也只会对用户之前已安装的功能执行升级操作,不会主动启用之前未安装的功能。这是MSI的原生行为,用于保留用户最初的安装选择,但不符合你现在“强制安装所有功能”的需求。

解决办法

方法1:在Bundle中强制传递ADDLOCAL=ALL参数

修改<MsiPackage>节点,添加MsiProperty属性,强制所有功能安装:

<MsiPackage DisplayInternalUI="no"
            EnableFeatureSelection="no"
            MsiProperty="ADDLOCAL=ALL" />

这个参数会告诉MSI在安装(包括升级)过程中,强制安装所有标记为可安装的功能。

方法2:在Product中通过自定义动作重置升级时的功能状态

在<Product>节点下添加自定义动作,当检测到升级操作时,自动设置ADDLOCAL=ALL:

<Product ...>
  <!-- 其他配置 -->
  <InstallExecuteSequence>
    <SetProperty Id="ADDLOCAL" Value="ALL" Before="InstallInitialize">
      Installed AND NOT REMOVE~="ALL"
    </SetProperty>
  </InstallExecuteSequence>
</Product>
  • 条件Installed AND NOT REMOVE~="ALL"用于判断当前操作是升级(已安装产品且不是执行卸载)。
  • 该动作会在安装初始化前强制设置ADDLOCAL为ALL,覆盖MSI默认的功能状态继承行为。

补充验证

如果是大升级(Major Upgrade),确保<MajorUpgrade>元素的配置没有限制功能安装:

<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed."
              AllowDowngrades="no"
              Disallow="no" />

无需设置MigrateFeatures="yes"(该属性用于保留旧版本的功能状态,与当前需求冲突)。

内容的提问来源于stack exchange,提问作者Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 03:27:16