问题:我们可以在安装时访问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?