我正在创建一个 WiX 设置,该设置应该有两种语言版本(两个 msi 文件:一个用于 de-de,一个用于 en-us)。 在设置中使用
WixUI_InstallDir
,即在选择安装目录之前显示许可证。
我想以创建设置的语言显示许可证。
在我的安装项目中,许可证文件位于
Localization\de-de\Softwarelizenzbestimmungen.rtf
和
Localization\en-us\License Agreement.rtf
要在设置过程中显示许可证,我需要将 Wix 变量
"WixUILicenseRtf"
设置为适当的值。
我尝试了以下方法:
在我添加的本地化文件中:
de-en.wxl:
<String Id="LicenseFile">Localization\de-de\Softwarelizenzbestimmungen.rtf</string>
en-us.wxl:
<String Id="LicenseFile">Localization\en-us\Licence Agreement.rtf</string>
在 Product.wxs 中:
<WixVariable Id="WixUILicenseRtf" Value="!(loc.LicenseFile)" />.
但这会返回(编译时)错误: “系统找不到文件‘!(loc.LicenseFile)’。”
我知道属性
ProductLanguage
包含设置语言,或者至少包含我可以从中派生语言的 LCID。
所以我尝试了这个:
<?if ProductLanguage = '1031' ?>
<WixVariable Id="WixUILicenseRtf" Value="Localization\de-de\Softwarelizenzbestimmungen.rtf" />
<?else ?>
<WixVariable Id="WixUILicenseRtf" Value="Localization\en-us\Licence Agreement.rtf" />
<?endif ?>
也没有成功:始终显示英文许可协议(else-branch)。
用于设置属性的 CustomActions 对我来说也没有用,因为它们是在 InstallSequence 期间执行的。
那么我如何构建我的设置,以便英语设置显示“许可协议.rtf”文件内容,而德语设置显示“Softwarelizenzbestimmungen.rtf”文件内容?
您是否在调用 light.exe 时使用 -loc 参数引用了本地化文件?
点亮 myfile.wixobj -loc de-de.wxl
我在 wixtoolset
v5
和 WixUI_FeatureTree
对话序列上测试了以下内容。
因此,在 MSI 项目的根目录下创建两个真正的 RTF 文件(不是纯文本文件)。
您的德语
de.wxl
文件
<String Id="LicenseFile" Value="lic-de.rtf" Overridable="yes" Localizable="false"/>
您的英语
en.wxl
文件
<String Id="LicenseFile" Value="lic-en.rtf" Overridable="yes" Localizable="false"/>
在您的
Package.wxs
文件中添加
<WixVariable Id="WixUILicenseRtf" Value="$(var.ProjectDir)\!(loc.LicenseFile)" />
wixtooolset 的 loc / localize 功能开箱即用,产生了神奇的效果。使用变量“ProjectDir”我强制执行了正确的路径。