【问题标题】:Unable to correctly specify a variable for WiX within Visual Studio无法在 Visual Studio 中正确指定 WiX 的变量
【发布时间】:2016-03-08 19:02:24
【问题描述】:

设置是 Wix 3.10.2 和 Visual Studio 2015。使用 wix 设置项目和自定义操作项目。

我想为我的项目创建一个包含 javados 的片段。我已阅读 here 来设置预处理器变量(或系统变量)。我选择在项目中包含变量定义。我尝试了预处理器 var

<DefineConstants>JavaDocBase=c:\javadocs</DefineConstants>

只设置一个普通变量:

<WixVariables>JavaDocBase=c:\javadocs</WixVariables>

最终都没有工作。

预构建事件:

<PropertyGroup>
<PreBuildEvent>"$(WIX)bin\heat.exe" dir "$(var.JavaDocBase)" -cg JavaDocs_JSP -gg -scom -sreg -sfrag -srd -dr INSTALLDIR -var var.JavaDocBase -out "$(ProjectDir)\JavaDocs_JSP_Fragment.wxs"</PreBuildEvent>
</PropertyGroup>  

我似乎总是收到错误:

Unhandled Exception:The expression """.JavaDocBase" cannot be evaluated. Method 'System.String.JavaDocBase' not found.

我已经尝试过 var.JavaDocBase、wix.JavaDocBase、env.JavaDocBase 和 Just JavaDocBase...虽然最后一个允许命令运行,但它没有放入正确的路径,所以我没有进一步的进展。

是否可以复制之前链接的教程中的内容,如果可以,我做错了什么?

【问题讨论】:

    标签: visual-studio variables visual-studio-2015 wix wix3.10


    【解决方案1】:

    将其用作属性,而不是 $(var.JavaDocBase) 尝试 $(JavaDocBase)。

    同时在 wixproj 文件中设置属性。

    <PropertyGroup>
      <JavaDocBase>c:\javadocs</JavaDocBase>
      <DefineConstants>$(DefineConstants);JavaDocBase=$(JavaDocBase)</DefineConstants>
    </PropertyGroup>
    

    【讨论】:

    • 如何添加该属性 - 可以从 Visual Studio gui 完成,还是我必须卸载项目并手动编辑 wixproj 文件?看起来它定义了两次,不是吗?一次作为 xml 标记,一次作为预处理器定义?
    • 是的,您必须卸载项目、您可以执行的定义部分或在 wixproj 或预处理器定义中。如果您需要我可以发布代码...
    • 我似乎无法通过将 JavaDocBase 设置为预处理器定义来实现任何事情......我确实创建了一个新属性组并将其添加为新属性(没有 PP -Def) 并且奏效了,我对此感到困惑,并给我留下了几个问题:为什么 PP-Def 方法不起作用?是否可以在外部(在文件中)定义它以便允许在一个位置进行配置?
    • 我做到了,但我不明白它的“原因”。我遵循的教程表明只需要 PP def(如果不使用环境变量),这可以通过 gui 完成,但似乎情况并非如此 - 不需要 PP var 并且在项目文件是(必需的)。为什么 PP def 不起作用?
    • 你可以从GUI设置的PP或在wixproj文件中设置它,结果是一样的。 PP 用于将属性从 wixproj 传递到其他 wxs 文件,因此您可以在代码中使用它们。另一个属性 (JavaDocBase) 是设置收割目录并在 heat 命令中使用它。希望对您有所帮助。请投票并标记为已回答。
    猜你喜欢
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 2013-06-10
    • 1970-01-01
    相关资源
    最近更新 更多