WIX:如何在安装期间更改许可协议

时间:2011-09-08 16:35:57

标签: licensing wix wix3.5

我有一个要求,我需要根据操作系统语言显示许可协议。本地化许可协议(.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>

但是,许可协议文本中没有任何内容。

如何设置此文字?

2 个答案:

答案 0 :(得分:3)

不幸的是,许可协议只是构建时的文件 - 一旦构建了MSI,RTF就会以文本格式嵌入Control表中的值。 (您可以使用Orca查看此内容)

这意味着为了动态更新此控件,您的自定义操作需要执行以下操作:

  • 下载RTF文件
  • 将RTF读入字符串变量
  • 使用以下内容替换相关MSI表中的值:
    • '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>