我有一个要求,在该情况下,我需要根据操作系统语言显示许可协议。本地化的许可协议(.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文件中:)

08-27 00:02