刻录部署和 运行 包含其他 MSI 的批处理文件

burn deploy and run batch file containing other MSIs

我是 WIX 和 Burn 的新手。 我正在尝试安装一个 .bat 文件,然后 运行 它。 .bat 文件 运行 是其他 MSI,因此它不能 运行 来自安装项目。

我尝试了两种方法,都使用 Burn:

方法一 我试过将批处理文件添加为要刻录的有效载荷,但我不知道如何在目标机器上引用 .bat 文件...

    <Bundle Name=...>
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" >
        <Payload Id="QuickTimeSilentInstallBAT" Compressed="yes"  SourceFile="C:\QT\QuickTimeSilentInstall.bat"
        </BootstrapperApplicationRef>
        <Chain>
             <PackageGroupRef Id="NetFx45Redist"/>
             <ExePackage Id="QuickTimeSilentInstallExePKG" Name="QuickTimeSilentInstall.bat" /> 
        </Chain>
</Bundle>

所以这里我得到一个错误,ExePackage 名称无效,因为它包含“.”。特点。我正在尝试将 .bat 文件名放入 'name' 属性中,因为此处的文档 http://wixtoolset.org/documentation/manual/v3/xsd/wix/exepackage.html 将名称属性描述为 'The destination path and file name for this chain payload'

方法二 在刻录链中,首先安装一个单独的 MSI 来部署 .bat 文件.... 然后使用 ExePackage 到 运行 该 .bat 文件。我的问题是我不知道如何确定目标机器上 .bat 文件的路径(不对其进行硬编码)——我尝试引用部署 .bat 的项目——但我找不到方法访问相关的 'Directory'

Context 我会提到这一点,以防万一有更好的方法来实现我的目标 - 我正在尝试将 QuickTime 静默安装到目标机器上。这涉及调用 2 个 msis 和一个 exe - 这就是我的 .bat 文件正在做的事情

方法 3:执行批处理文件在 Burn 中执行的操作。直接使用 MsiPackageExePackage 元素,而不是尝试 运行 批处理文件。 (无论如何,ExePackage 不能 运行 批处理文件。)