wix - 烧录:访问 Bootstrapper.exe 中的 msi 文件

标签 wix bootstrapper burn

问题:我们可以在安装时访问 Burn Bootstrapper 打包的 msi 文件(和其他安装程序)吗?

假设我们需要读取一些属性,或者在开始安装之前应用 mst 等等。

这可能吗?

最佳答案

您是否尝试将转换作为有效负载添加到您的 MsiPackage 元素,并使用 MsiProperty 元素设置 TRANSFORMS 属性?

<MsiPackage ...>
    <Payload Compressed="yes" SourceFile="c:\mytransform.mst"/>
    <MsiProperty Name="TRANSFORMS" Value="mytransform.mst" />
</MsiPackage>

如果您确实需要获取嵌入有效负载的路径,并且您使用的是标准 Bootstrap ,则需要创建一个 bafunctions.dll 并进行一些 C/C++ 编码。

要创建bafunctions.dll,首先下载wix源代码,并以项目src\burn\samples\bafunctions为例。要使用您编译的 bafunctions.dll,请将其作为负载添加到 Bootstrap

<BootstrapperApplicationRef ...>
    <Payload Compressed="yes" SourceFile="c:\bafunctions.dll" />
</BootstrapperApplicationRef>

这足以使标准 Bootstrap 调用 bafunctions.dll 回调。您有 OnDetect()、OnDetectComplete()、OnPlan()、OnPlanComplete() 的回调。您可以使用这些函数进行一些重要的检测并获取/设置燃烧变量。

这篇文章有一个示例,说明如何使用 bafunctions.dll 在运行时获取嵌入式负载的路径: How to pass the path to a bundle's payload to an msi?

关于wix - 烧录:访问 Bootstrapper.exe 中的 msi 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16676574/

相关文章:

wix - 如何在标准对话框之一中更改 WiX 中字符串的字体颜色和类型?

installation - 在具有 UAC 的系统中修复期间 WiX 安装条件失败

c# - 无法从另一个托管的Bootstrapper应用程序卸载WiX托管的Bootstrapper应用程序

WiX/刻录 : Set Uninstall screen information

installation - WIX 使用 x86 安装程序安装 x64 组件?

wix - 慢 Light.exe - AV 问题

.net - Wix Bootstrap 不会检测已安装的 .NET 框架

msbuild - 从 MSBuild Bootstrap 启动 x86 或 x64 MSI

用于 32 位和 64 位机器的 WiX 3.8 MSI

.net - 如果检测到相同版本,则升级 Bootstrap 包