我有一个要求,在该情况下,我需要根据操作系统语言显示许可协议。本地化的许可协议(.rtf)保存在服务器上。
我已经创建了一个自定义操作以检测OS语言并下载相应的许可协议,但是如何在许可协议对话框中显示本地化的许可协议?
我有所有对话框设置文件(.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>
但是,许可协议文本中没有任何显示。
如何设置此文字?
最佳答案
不幸的是,许可协议在构建时只是一个文件-一旦构建了MSI,RTF就以文本格式作为值嵌入在Control
表中。 (您可以使用Orca查看此内容)
这意味着为了动态更新此控件,您的自定义操作将需要执行以下操作:
下载RTF文件
将RTF读入字符串变量
用以下内容替换相关MSI表中的值:'UPDATE Control SET Text='" & sRTFText & "' WHERE Dialog_='LicenseAgreementDlg' AND Control='LicenseText'
一个更简单的解决方案是将所有语言都包含在同一RTF文件中:)