WiX 设置:如何显示与语言相关的许可证文件

问题描述 投票:0回答:2

我正在创建一个 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”文件内容?

localization wix
2个回答
0
投票

您是否在调用 light.exe 时使用 -loc 参数引用了本地化文件?

点亮 myfile.wixobj -loc de-de.wxl


0
投票

我在 wixtoolset

v5
WixUI_FeatureTree
对话序列上测试了以下内容。

因此,在 MSI 项目的根目录下创建两个真正的 RTF 文件(不是纯文本文件)。

  • lic-de.rtf
  • lic-en.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”我强制执行了正确的路径。

链接

© www.soinside.com 2019 - 2024. All rights reserved.