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