问题:我们可以在安装时访问带有 Burn Bootstrapper 的 msi 文件(和其他安装程序)吗?
假设我们是否需要读取一些属性,或者在开始安装之前应用 mst 等。
那可能吗?
问题:我们可以在安装时访问带有 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 获取嵌入有效负载的路径的示例: 如何将包的有效负载的路径传递给 msi?