我有一个包含以下代码的WiX包含文件
<Fragment Id="PropertyFragment">
<Property Id="DynamicLanguageCode" Value="[SystemLanguageID]" />
<?define productLanguage = [DynamicLanguageCode]?>
</Fragment>
现在在我的WiX脚本中的Product标签中,我想将Language属性设置为productLanguage的值,因为它只需要可本地化的整数。有没有办法让我的变量被分配属性值?
由于
答案 0 :(得分:25)
关于wix变量和Windows安装程序属性之间的区别,你的想法似乎很混乱。
wix变量可以引用为$(var.foo)
。可以通过将-d
命令行参数传递给candle.exe
来定义此类变量。它也可以由<?define foo="bar"?>
语法定义。 wix变量是仅在构建设置时才存在的概念。在其他任何事情发生之前,它由wix预处理器填充,就像C ++中的#define
语句一样。
Windows安装程序属性是在安装期间填写的内容。定义属性的一种方法是将它们放在MSI文件的Property table中。这就是wix Property元素的作用。 Windows安装程序数据库中使用的某些(但不是全部)data types允许您使用[FOO]
语法引用此类属性。支持此数据类型的一个示例是Shortcut数据类型,由wix Shortcut元素的Target
属性使用。 Language数据类型不支持此功能!
答案 1 :(得分:2)
没有争论为什么,这可以这样做:
<Property Id="DynamicLanguageCode" Value="$(var.SystemLanguageID)" />