【问题标题】:Burn: Access to msi files inside Bootstrapper.exe刻录:访问 Bootstrapper.exe 中的 msi 文件
【发布时间】:2013-05-16 14:35:35
【问题描述】:

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

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

这可能吗?

【问题讨论】:

    标签: wix bootstrapper burn


    【解决方案1】:

    您是否尝试将转换作为负载添加到您的 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?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多