我需要在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;
也不起作用。
我哪里错了?
感谢您的帮助和时间。
答案 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;