WiX:在wxs-fragment-file中定义的包含文件中定义

时间:2010-04-17 16:47:16

标签: wix

我有一个defines.wxi - 文件,其中包含我所有wxs文件中使用的一些好的定义。

当我尝试从其中一个<Fragment>文件引用定义的值时,我得到了Undefined preprocessor variable '$(var.IMAGE_FOLDER)'。{/ p>

我想这里有一些微不足道的东西...... 有什么想法吗?

编辑19:4月。
发现只有在片段文件中引用时才会出现该问题 重新编写样本以匹配该内容。


defines.wxi

<Include>
    <?define IMAGE_FOLDER="Images" ?> 
</Include>

一些-Fragment.wxs

<Fragment>
  <?Include defines.wxi ?>

  <Component Id='c.Images' Guid=".." Directory='INSTALLDIR.Images' >
     <File Id='f.sample.jpg' Source='$(var.IMAGE_FOLDER)sample.jpg' Name='sample.jpg' />
  </Component>

3 个答案:

答案 0 :(得分:5)

解决了它。

样本中的位置说:

<?Include defines.wxi ?>

它应该是小写 ...

<?include defines.wxi ?>

然后它就像一个魅力!

/ L

答案 1 :(得分:1)

好的,再试一次。 您是否引用了<Fragment/><Product/>中的任何内容?如果您从中引用任何内容,则片段的内容对其余代码可见。例如,您可以引用组件(<ComponentRef/>)或组件组(<ComponentGroupRef/>)。一旦引用了任何内容,就会包含整个片段。

希望这有帮助。

答案 2 :(得分:0)

在您提供的错误消息文本中,显示“未定义的预处理器变量'$(var。 MAGE_FOLDER )'”,而非$(var。 IMAGE_FOLDER ) - 缺少领先的'我'。这让我觉得你在代码的其余部分中引用了同一个变量,但拼错了它。

在这种情况下,candle.exe绝对正确 - 它可以找到IMAGE_FOLDER,但找不到MAGE_FOLDER。

希望是这种情况,你会很快解决它。 ; - )