为什么我的 WiX 生成的 msi 安装到错误的目录

Why is my WiX generated msi installing to the wrong directory

我正在尝试使用 Wix 命令行工具集编写批处理脚本,以从生成的 Heat 文件和自定义 .wxs 文件构建 .msi 文件。

下面的批处理脚本目前正在大部分正确地构建 .msi 文件。但是,当 运行 时,它会将二进制文件直接安装到 C: 驱动器,而不是将它们安装到自定义 wxs 文件中指定的安装文件夹。

谁能指出我遗漏了什么,因为我不知所措。

批处理脚本:

"%WIX%bin\heat" dir .\bin\ -srd -gg -pog:Binaries -cg AppBinComponentGroup -out .\AppHeatGen.wxs
"%WIX%bin\candle" .\*.wxs -o .\wixbuild\wixobj\
"%WIX%bin\light" -b .\bin\ .\wixbuild\wixobj\*.wixobj -o .\wixbuild\wixbin\AppInstaller.msi

自定义 wxs:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*" Name="App" Language="1033" Version="1.0.1.0">
        <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
        <MediaTemplate EmbedCab="yes" />

        <Feature Id="ProductFeature" Title="App" Level="1">
            <ComponentGroupRef Id="AppBinComponentGroup" />
        </Feature>
    </Product>

    <Fragment>
    <SetDirectory Id="APPLICATIONFOLDER" Value="C:\InstallDir" />
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="APPLICATIONFOLDER">
        <Directory Id="INSTALLFOLDER" Name="App" />
            </Directory>
        </Directory>
    </Fragment>
</Wix>

在使用 wix 脚本尝试不同的东西后,我发现 heat 命令将所有组件目录值设置为 TARGETDIR。

解决方法是更新 heat 命令以包含一个 -dr 标签,其中包含所需的安装文件夹 ID 作为值。

"%WIX%bin\heat" dir .\bin\ -dr INSTALLFOLDER -srd -gg -pog:Binaries -cg AppBinComponentGroup -out .\AppHeatGen.wxs