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

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

那可能吗?

最佳答案

您是否尝试将转换作为有效负载添加到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获取嵌入的有效负载的路径:
How to pass the path to a bundle's payload to an msi?

10-05 23:16