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

WIX Bundle中ExePackage传递InstallFolder参数失效问题咨询

问题原因

变量替换失效是WiX Burn的变量规则导致的配置错误:

  • WiX Burn引擎的变量严格区分大小写:你在Bundle节点下定义的变量名为InstallFolder(I、F大写,其余字母小写),但在ExePackage的安装命令中引用的是全大写的[INSTALLFOLDER],Burn无法识别这个不存在的变量,会直接将其替换为空字符串,最终生成的参数就缺失了盘符前缀,和日志里显示的Target="\Analytics\Database"现象完全吻合。
  • 你当前定义的InstallFolder变量默认不允许外部参数覆盖,无法通过命令行传入自定义路径。
修复方案
  1. 修正变量定义,增加Overridable="yes"属性允许外部传参覆盖默认值:
<Variable Name="InstallFolder" Type="string" Value="c:\$(var.Company)" Overridable="yes"/>
  1. 修正ExePackage安装命令中的变量引用,保证变量名和定义完全一致:
<ExePackage Id="Database.CLI.Attach"
            DisplayName="Attach database to the SqlLocalDb instance."
            SourceFile="$(var.SourceFile)"
            InstallCommand="attach Target=&quot;[InstallFolder]\$(var.Department)\$(var.ProductName)&quot;"
            Vital="yes"
            Compressed="no"
            PerMachine="yes">
    <!-- 原有ExitCode配置无需修改 -->
</ExePackage>
静默安装传参说明

你提到的Database.Setup.exe InstallLocation=c:\temp命令不可用,注意两点:

  • 传参的变量名必须和Bundle中定义的变量名完全大小写一致,你定义的变量是InstallFolder,不是InstallLocation
  • 必须给变量配置Overridable="yes"属性,否则Burn会忽略外部传入的同名参数,始终使用配置里写死的默认值

正确的静默安装自定义路径命令格式为:

Database.Setup.exe /quiet InstallFolder=c:\temp

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 05:09:19