2010-01-29 86 views
6

我有一个维克斯包括用下面的代码有没有办法将预处理器变量设置为属性的值?

<Fragment Id="PropertyFragment"> 
    <Property Id="DynamicLanguageCode" Value="[SystemLanguageID]" /> 
    <?define productLanguage = [DynamicLanguageCode]?> 
</Fragment> 

现在在我的产品标签在我的WiX的脚本文件,我想语言属性设置为productLanguage的价值,因为只需要本地化的整数。有没有办法让我的变量被赋予属性的值?

感谢

回答

22

似乎有关于不同的是威克斯变量和Windows Installer属性之间有什么在你的心中的困惑。可以参照$(var.foo)。可以通过将-d命令行参数传递给candle.exe来定义此类变量。它也可以由<?define foo="bar"?>语法来定义。 wix变量是一个只有在构建您的设置时才存在的概念。这是在wix预处理器填充之前发生的任何事情,非常类似于C++中的#define语句。

A Windows安装程序属性是在安装过程中填写的内容。定义属性的一种方法是将它们放入MSI文件的Property table中。这是wix Property元素的作用。在Windows安装程序数据库中使用的一些(但不是全部)data types允许您使用[FOO]语法引用此属性。支持该数据类型的数据类型的一个示例是数据类型Shortcut,该数据类型由wix Shortcut元素的Target属性使用。 Language数据类型不是支持这个!

+0

谢谢你的澄清 – 2010-02-02 10:29:57

2

没有争论为什么,这可以做这样的:

<Property Id="DynamicLanguageCode" Value="$(var.SystemLanguageID)" /> 
相关问题