我有一个要求,我需要根据操作系统语言显示许可协议。本地化许可协议(.rtf)保留在服务器上。
我已创建自定义操作以检测操作系统语言并下载相应的许可协议,但如何在许可协议对话框中显示本地化许可协议?
我有所有对话框设置文件(.wxs)。我正在使用Wix_Minimal
对话框设置。
我尝试更改WelcomeEulaDlg.wxs
<Control Id="LicenseText" Type="ScrollableText" X="130" Y="36" Width="226" Height="162" Sunken="yes" TabSkip="no">
<Text SourceFile="!(wix.WixUILicenseRtf=$(var.licenseRtf))" />
</Control>
到
<Control Id="LicenseText" Type="ScrollableText" X="130" Y="36" Width="226" Height="162" Sunken="yes" TabSkip="no" Text="[MyPropertyConatingRTFData]">
</Control>
但是,许可协议文本中没有任何内容。
如何设置此文字?
答案 0 :(得分:3)
不幸的是,许可协议只是构建时的文件 - 一旦构建了MSI,RTF就会以文本格式嵌入Control
表中的值。 (您可以使用Orca查看此内容)
这意味着为了动态更新此控件,您的自定义操作需要执行以下操作:
'UPDATE Control SET Text='" & sRTFText & "' WHERE Dialog_='LicenseAgreementDlg' AND Control='LicenseText'
更简单的解决方案是将所有语言包含在同一个RTF文件中:)
答案 1 :(得分:-2)
您可以拥有一个会话变量说LOCLICENSEFILEPATH
,其中包含基于本地化的许可文件路径。所以在Control中你只需要传递这个变量。
<Control Id="AgreementText" Type="ScrollableText" X="20" Y="60" Width="330" Height="140" Sunken="yes" TabSkip="no">
<Text SourceFile="[LOCLICENSEFILEPATH]" />
</Control>