gpt4 book ai didi

windows - 使用 WIX 根据组合框选择动态更改许可证 RTF 文件

转载 作者:可可西里 更新时间:2023-11-01 10:44:19 25 4
gpt4 key购买 nike

我们正在使用 WIX [Windows Installer XML] 构建 MSI,我们不关心 MSI 中的 UI 按钮或文本本地化,我唯一想要翻译的是出现在第二个或第三个中的许可证文本安装程序的页面。从用户的角度来看,最简单的方法是提供一个组合框,他可以在其中选择语言并更改下面的许可文本字段。

      <Control Id="LanguageComboBox"
Type="ComboBox"
Sorted="yes"
ComboList="yes"
Property="LANGUAGE"
X="86"
Y="52"
Width="200"
Height="15">
<ComboBox Property="LANGUAGE">
<ListItem Text="English"
Value="IT_Upgrade_Mgr_October_2015_FINAL_en-us"/>

Setting up License text:
<Control Id="LicenseText"
Type="ScrollableText"
Property ="EULATEXT"
X="20"
Y="75"
Width="330"
Height="125"
Sunken="yes"
TabSkip="no">
<Text SourceFile="EULA\[LANGUAGE].rtf" />

我设法通过引入组合框来修改现有的安装程序,但我很难为更改语言触发事件,它应该会自动更改 EULA,我总共有 18 个不同的 EULA RTF 文件用于不同的语言。组合框事件:正在使用组合框及其设置属性发布 [LANGUAGE] 属性。

更新:我可以使用 Query 编写自定义操作,但它不起作用? view = session.Database.OpenView("UPDATE Con​​trol SET Text='"+ sRTFText + "' WHERE Dialog_='LicenseAgreementDlg' AND Control='LicenseText'"); 查看.执行();

由于可滚动文本不采用动态值并且只能在构建时更改,唯一的解决方案是使用正在运行的 session 对象的 DTF 更新 MSI ttables,如果您的团队做了类似的事情,请告诉我。

最佳答案

能够通过自定义操作解决问题:

//reading the License text from control table

var view = session.Database.OpenView("SELECT * FROM Control WHERE Dialog_='LicenseAgreementDlg_loc' AND Control='LicenseText'");
view.Execute();
var record = view.Fetch();

view.Delete(record);

//adding new record with new value
record.SetString("Text", sRtfText);

view.Modify(ViewModifyMode.InsertTemporary, record);

关于windows - 使用 WIX 根据组合框选择动态更改许可证 RTF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33625052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com