3

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

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

那可能吗?

4

1 回答 1

0

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

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

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

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

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

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

这篇文章有一个关于如何在运行时使用 bafunctions.dll 获取嵌入有效负载的路径的示例: 如何将包的有效负载的路径传递给 msi?

于 2015-10-21T23:11:44.083 回答