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

2024-03-20

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

请注意:我已经尝试过以下答案但没有收获 [Wix“未定义的预处理器变量” https://stackoverflow.com/questions/32784833/wix-undefined-preprocessor-variable%5D , [WiX 未定义的预处理器变量 https://stackoverflow.com/questions/2063630/wix-undefined-preprocessor-variable%5D , [WiX - 未定义的预处理器变量“$(var.SetupProject1.TargetDir)” https://stackoverflow.com/questions/47995549/wix-undefined-preprocessor-variable-var-setupproject1-targetdir%5D

产品.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对某事。只要有东西存在,任何事情都会发生。显然,请输入您的公司名称。

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


缺少定义: 好吧,有了心跳,让我们尝试解决这个问题。您从哪里获得此预处理器构造:

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

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

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

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

  1. 右键点击"References"在你的 WiX 项目中 =>Add Reference...
  2. Under "Projects"选择您要参考的项目,按Add and OK.

WiX 文档: 使用项目引用和变量 http://wixtoolset.org/documentation/manual/v3/votive/votive_project_references.html- 请参阅 WiX 文档条目,了解引用其他 Visual Studio 项目时可用的内置变量的详细信息。


常规预处理器变量:除了添加对另一个 Visual Studio 项目的引用时获得的内置预处理器变量外,您还可以定义自己的变量:

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

Links:

  • 有关高级预处理器功能和其他内容的更多信息:Wix 安装程序:在命令行执行 MSIEXEC 管理安装时设置组件条件属性 https://stackoverflow.com/questions/49449985/wix-installer-setting-component-condition-property-when-doing-a-msiexec-admin/49501700#49501700
  • 关于 WiX 中的不同变量类型:WiX(Windows Installer Xml),创建通用变量 https://stackoverflow.com/questions/50444241/wix-windows-installer-xml-create-universal-variables/50452114#50452114
  • WiX 快速入门简版 https://stackoverflow.com/questions/63305272/adventures-in-installing-a-c-wpf-application-wix/63308043#63308043
  • WiX快速入门很长版本 https://stackoverflow.com/questions/25004226/msi-vs-nuget-packages-which-are-is-better-for-continuous-delivery/25005864#25005864
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 在 OnModelCreating 期间设置列名称

    Issue 我目前正在尝试通过设置的属性为我的表及其列添加前缀 我正在使用实体框架核心 我已经正确地为表名添加了前缀 但我似乎无法弄清楚列的前缀 我有一种感觉 我需要使用反射 我已经留下了我的 可能很糟糕的 反思尝试 有人有办法在实体中设置
  • CSharpRepl emacs 集成?

    我碰巧知道莫诺CSharpRepl http www mono project com CsharpRepl 是否有 emacs csharp 模式使用它在一个窗口中运行 REPL 并像 python 模式一样在另一个窗口中编译 运行 C
  • 从模板切换传递的类型

    在 C 中是否可以检查传递给模板函数的类型 例如 template
  • 在开关中使用“goto”?

    我看到了一个建议的编码标准 内容如下Never use goto unless in a switch statement fall through 我不跟 这个 例外 案例到底是什么样的 这证明了goto 此构造在 C 中是非法的 swi
  • 计算另一个表达式中的 C# 表达式

    我想在另一个表达式中使用一个表达式 Expression
  • 一元 +/- 运算符如何可能导致“-a”或“+a”中的整数提升,“a”是算术数据类型常量/变量?

    这句看似微不足道的台词摘自我的迈克 巴纳汉和布雷迪的 C 书 第 2 8 8 2 节 http publications gbdirect co uk c book chapter2 expressions and arithmetic h
  • 使用 LINQ 更新 IEnumerable 对象的简单方法

    假设我有一个这样的业务对象 class Employee public string name public int id public string desgination public int grade List
  • 获取 boost Spirit 语法中的当前行

    我正在尝试使用 boostspirit 获取正在解析的文件的当前行 我创建了一个语法类和结构来解析我的命令 我还想跟踪在哪一行找到命令并将其解析到我的结构中 我将 istream 文件迭代器包装在 multi pass 迭代器中 然后将其包
  • CAQuietExec 命令字符串必须以带引号的应用程序名称开头

    好吧 我相信我正在按照 Wix3 5 中的在线示例执行安静命令 但我似乎无法让我的命令被引用
  • 增强精神、递归和堆栈溢出

    为什么下面的代码在运行时崩溃 它会给出堆栈溢出错误 include
  • MFC:如何设置CEdit框的焦点?

    我正在开发我的第一个简单的 MFC 项目 但我正在努力解决一个问题 想要设置所有的焦点CEdit其中一个对话框中的框 我的想法是 当打开对话框时 焦点位于第一个编辑框上 然后使用 选项卡 在它们之间交换 我看到了方法SetFocus 但我无
  • 将接口转换为其具体实现对象,反之亦然?

    在 C 中 当我有一个接口和几个具体实现时 我可以将接口强制转换为具体类型 还是将具体类型强制转换为接口 这种情况下的规则是什么 Java 和 C 中都允许这两个方向 向下转型需要显式转型 如果对象类型不正确 可能会抛出异常 然而 向上转换
  • 使用 C# 和 wpf 创建类似 Dock 的应用程序

    我需要创建一个与我们购买笔记本电脑时获得的应用程序类似的应用程序 仅当鼠标指针到达窗口顶部时它才可见 那么我怎样才能使用 C 4 0 来做到这一点呢 http www notebookcheck net uploads pics win2
  • 在 asp.net MVC 中使用活动目录进行身份验证

    我想使用活动目录对我的 asp net mvc 项目中的用户进行身份验证 在网上冲浪了几个小时后 我没有找到任何对我有用的东西 我已经看到了所有结果 但什么也没有 我尝试按照许多帖子的建议编辑我的 web config 如果有人可以帮助我提
  • 引用/指针失效到底是什么?

    我找不到任何定义指针 引用无效在标准中 我问这个问题是因为我刚刚发现 C 11 禁止字符串的写时复制 COW 据我了解 如果应用了 COW 那么p仍然是一个有效的指针并且r以下命令后的有效参考 std string s abc std st
  • 为什么 Cdecl 调用在“标准”P/Invoke 约定中经常不匹配?

    我正在开发一个相当大的代码库 其中 C 功能是从 C P Invoked 的 我们的代码库中有很多调用 例如 C extern C int stdcall InvokedFunction int 使用相应的 C DllImport CPlu
  • 从浏览器访问本地文件?

    您好 我想从浏览器访问系统的本地文件 由于涉及大量安全检查 是否可以通过某种方式实现这一目标 或使用 ActiveX 或 Java Applet 的任何其他工作环境 请帮帮我 要通过浏览器访问本地文件 您可以使用签名的 Java Apple
  • ASP.NET MVC 路由:如何从 URL 中省略“索引”

    我有一个名为 StuffController 的控制器 具有无参数索引操作 我希望从表单中的 URL 调用此操作mysite com stuff 我的控制器定义为 public class StuffController BaseContr
  • .NET 4 的条件编译[重复]

    这个问题在这里已经有答案了 可能的重复 条件编译和框架目标 https stackoverflow com questions 2923210 c sharp conditional compilation and framework ta
  • 如何调试 .NET 运行时中的内部错误?

    我正在尝试调试一些处理大文件的工作 代码本身works 但 NET 运行时本身会报告零星错误 对于上下文 这里的处理是一个 1 5GB 文件 仅加载到内存中一次 在循环中处理和释放 故意尝试重现此否则不可预测的错误 我的测试片段基本上是 t

随机推荐