是否可以将变量传递给WIX本地化文件?

时间:2011-07-26 09:25:52

标签: user-interface variables localization wix wix3.5

我需要在WIX本地化文件WIXUI_en-us.wxl中使用变量。 我试过这样用:

<String Id="Message_SomeVersionAlreadyInstalled" Overridable="yes">A another version of product $(var.InstallationVersionForGUI) is already installed</String>

但它不起作用。当我宣布财产并以这种方式使用它时:

<String Id="Message_SomeVersionAlreadyInstalled" Overridable="yes">A another version of product [InstallationVersionForGUI] is already installed</String&GT;

也不起作用。

我哪里错了?

感谢您的帮助和时间。

3 个答案:

答案 0 :(得分:16)

本地化字符串在链接时处理,因此您不能使用$(var)预处理器变量。只要使用本地化字符串的位置支持运行时格式化(例如,使用格式化字段类型),就支持使用[property]引用。

答案 1 :(得分:14)

你的第二种方法应该可以正常工作。这与默认的.wxl文件使用的方法相同。

例如,在.wxl文件中,您将声明您的字符串:

<String Id="Message_Foo">Foo blah blah [Property1]</String>

在您的.wxs文件中,您声明了该属性。如果您愿意,您可以声明该属性以匹配WiX变量(听起来您正在尝试这样做)

<Property Id="Property1">$(var.Property1)</Property>

答案 2 :(得分:0)

我试图让本地化文件使用变量。遇到this post

  

WiX中有不同的变量层(蜡烛的预处理器   变量,Light的WixVariables /本地化变量/ binder   变量和MSI的属性)​​。每个都有不同的语法和   在不同时间评估:

     

评估Candle的预处理器变量“$(var.VariableName)”   蜡烛运行时,可以从蜡烛的命令行设置   “”陈述。构建时环境   也可以类似地访问属性和自定义变量   (用其他值更改“var。”前缀)。

     

从命令行可访问的Light变量是   WixVariables,并通过“!(wix.VariableName)”访问它们   句法。要从命令行访问变量,您需要   将您的字符串更改为:此构建已准备就绪   !(wix.BuildMachine)

     

如果您需要将BuildMachine值作为MSI存在   安装时的属性(这是“[VariableName]”语法)   你需要将以下内容添加到a中的一个wxs文件中   已经链接的片段:

     

     

现在,环境变量COMPUTERNAME始终保持名称   我过去的构建机器,你可以这样访问:   $(env.COMPUTERNAME)。所以,你可以摆脱命令行的补充   到light.exe并更改你的wxs文件:

     

&lt; WixProperty Id =“BuildMachine”Value =“$(env.COMPUTERNAME)”/&gt;