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

WiX Toolset:如何在同一捆绑包中根据前序安装选择运行后续安装程序

可行解决方案如下:

你遇到的问题本质是WiX Burn 默认会在整个安装链启动前完成所有搜索逻辑,不会中途自动重跑,只要手动指定搜索的执行时机即可解决,常用方案有两类:

方案1:最小改动产线方案(推荐)

  • 首先修改你的自有软件自定义安装程序逻辑:用户勾选激光扫描仪相关功能时,安装完成后在固定注册表路径写入标识值,比如在HKLM\Software\Company\OurSoftware\Features下写入DWORD类型的LaserScannerEnabled,值为1代表用户选了对应功能,未勾选则不写入或者写0。
  • 然后在Bundle中调整搜索逻辑,给搜索项加Before属性指定执行时机,让它在第三方安装包启动前再执行搜索:
<util:RegistrySearch 
    Id="CheckLaserFeatureEnabled"
    Root="HKLM"
    Key="Software\Company\OurSoftware\Features"
    Value="LaserScannerEnabled"
    Variable="LASER_FEATURE_ENABLED"
    Result="value"
    Before="LaserScannerConfiguratorInstaller"
    Win64="yes" <!-- 如果你是64位软件需要加这个属性,避免搜错32位注册表节点 -->
/>
  • 最后修改第三方安装包的安装条件:
<ExePackage 
    Id="LaserScannerConfiguratorInstaller"
    SourceFile="3rd-party-installers\path\to\laser-scanner-configurator-installer.exe"
    InstallCondition="LASER_FEATURE_ENABLED = 1" 
/>

方案2:自定义BA场景方案

如果你已经在使用自定义Bootstrapper Application,可以在自有软件安装完成的回调事件里直接给Burn变量赋值,无需额外写注册表:

  • 在BA代码中监听自有软件包的安装完成事件,判断用户选择的功能后,调用Engine.SetVariable("LASER_FEATURE_ENABLED", true)手动设置变量值,后续第三方包直接用这个变量做安装条件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:15:03