在 WiX Bootstrapper(Burn) 中读取 ini 值

Read ini value in WiX Bootstrapper(Burn)

对于我的 WiX 安装程序,我必须替换现有的安装程序。

当前安装程序将版本号和其他内容写入 .ini 文件。当 WiX 安装程序 运行 我必须显示当前安装的版本和要安装的版本。

我现在的安装页面如下:

<Page Name="Install">
    <Text X="11" Y="-73" Width="246" Height="17" FontId="3">Currently installed version:</Text>
    <Text X="11" Y="-73" Width="246" Height="17" FontId="3">CURRENT VERSION</Text>
    <Text X="11" Y="-73" Width="246" Height="17" FontId="3">Version to be installed:</Text>
    <Text X="11" Y="-73" Width="246" Height="17" FontId="3">#(loc.InstallVersion)</Text>
    <Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallInstallButton)</Button>
    <Button Name="WelcomeCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallCloseButton)</Button>
</Page>

这将成功显示要安装的版本。但我也想显示当前版本。

我的安装程序将版本写入注册表和 ini 文件。这必须完成,因为软件也使用 ini 文件。

所以我的问题是: 如何使用 WiX Bootstrapper(Burn) 读取 ini 值?

因为您有注册表值,所以使用 RegistrySearch 将注册表值读入变量,然后 [VariableName] 显示该值。 Burn不支持直接读取.ini文件

您可以编写自己的 CustomAction 库(使用 C++ 或 .NET)来读取 .ini 文件、解析它并为 MSI 引擎提供新属性。

如果您必须自定义 Burn bootstrapper 而无法在 MSI 中使用 CustomAction 来完成,您必须使用 WiX BA SDK 创建您自己的 Boostrapper 应用程序。