未定义的预处理器变量“$(var.WixInstall.TargetPath)”。 WixInstaller D:work\Extractor\WixInstaller\Product.wxs

Undefined preprocessor variable '$(var.WixInstall.TargetPath)'. WixInstaller D:work\Extractor\WixInstaller\Product.wxs

我在使用 Wix 创建 windows 安装程序时遇到以下错误。 未定义的预处理器变量“$(var.WixInstall.TargetPath)”。 WixInstaller D:\work\Extractor\WixInstaller\Product.wxs

请注意:我尝试了以下答案但没有收获 [ , [WiX undefined preprocessor variable , [

Product.wxs代码

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*" Name="WixInstaller" Language="1033" Version="1.0.0.0" Manufacturer="" UpgradeCode="PUT-GUID-HERE">
        <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

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

        <Feature Id="ProductFeature" Title="WixInstaller" Level="1">
            <ComponentGroupRef Id="ProductComponents" />
        </Feature>
    </Product>

    <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
                <Directory Id="INSTALLFOLDER" Name="WixInstaller" />
            </Directory>
        </Directory>
    </Fragment>

    <Fragment>
        <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
             <Component Id="ProductComponent">
        <File Source="$(var.WixInstall.TargetPath)" />
      </Component>
        </ComponentGroup>
    </Fragment>
</Wix>

获得检测信号:首先要做的事情是:编译你的源代码,这样你就可以检查是否还有其他问题:

  1. 绝对路径:请尝试对您知道存在于目标位置:

     <File Source="D:\My Files\MyBinary.exe" />
    
  2. 制造商:接下来设置"Manufacturer" attribute到某事。只要有东西,什么都行。输入您的公司名称 - 显然。

=> 尝试编译。这应该会成功。


Missing Definition:好的,心跳加速,让我们尝试解决问题。你从哪里得到这个 pre-processor 结构:

<File Source="$(var.WixInstall.TargetPath)" />

这是来自某个样本还是什么的?我假设 "WixInstall" 指的是 Visual Studio 解决方案中的 WiX 项目本身?通常,您可以像这样在解决方案中引用项目 - 通过名称 - 但通常您会引用另一个项目,例如“MyBinaryProject”,并且您会像这样引用其构建输出:

<File Source="$(var.MyBinaryProject.TargetPath)" />

您需要确保您引用的项目确实在 Visual Studio 解决方案中。并且您需要添加对它的引用:

  1. 在您的 WiX 项目中右键单击 "References" => Add Reference...
  2. "Projects"select你要引用的项目下,按AddOK.

WiX 文档Using Project References and Variables - 有关 built-in 变量的详细信息,请参阅 WiX 文档条目当您引用了其他 Visual Studio 个项目时可用。


常规预处理器变量:除了 built-in 预处理器变量之外,当您添加对另一个 [=118] 的引用时=]项目,也可以定义自己的变量:

<?define MyTest= "D:\My Files\MyBinary.exe" ?>
<...>
<File Source="$(var.MyTest)" />

链接:

  • 有关高级 pre-processor 功能和其他内容的更多信息:Wix Installer : Setting component condition property when doing a MSIEXEC admin install at command line
  • 关于 WiX 中的不同变量类型:
  • WiX quick start short version
  • WiX quick start very long version

该代码在您的解决方案中引用了一个名为 WiXInstall 的项目。

我推荐看:https://github.com/iswix-llc/iswix-tutorials