自定义WiX刻录引导程序用户界面



我正在创建一个WiX 3.6的安装包,主要是为了利用Burn引导功能。到目前为止,我有几个MSI软件包捆绑在一起,将与内置的引导程序应用程序(WixStandardBootstrapperApplication.RtfLicense)一起安装。

我已经读到,Burn允许默认的引导程序应用程序被指定一个自定义UX.dll取代,但我还没有找到任何描述自定义ux.dll是如何构建的资源(也就是说,它如何与Burn引擎集成,我使用什么技术,我应该实现什么接口,等等)。

我的目标是创建一个品牌引导程序,它可以从用户收集任意信息,并将该信息传递到各种捆绑的MSI文件,EXE文件等。

我有两个问题:

    在多大程度上默认的引导程序是可定制的?
  1. 是否有描述如何构建自定义UX.dll的可用资源?

要知道的关键是在WiX二进制文件中有一个BootstrapperCore.dll,它定义了一个BootstrapperApplication类来处理与Burn引擎的集成。我需要创建我自己的派生类,并覆盖'Run'方法来启动我的自定义UI。

使用定义WiX引导程序UI的WixBA项目作为使用BootstrapperApplication类(srcSetupWixBAWixBA.csproj)的参考也很有帮助。

我用来引用自定义引导程序DLL文件的标记是:

<BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost" >
  <Payload SourceFile="$(var.InstallSourceResources)BootstrapperFusionInstallUX.dll"/>
  <Payload Id="FusionInstallUX.config"
           SourceFile="$(var.InstallSourceResources)BootstrapperFusionInstallUX.BootstrapperCore.config"
           Name="BootstrapperCore.config" Compressed="yes"/>
</BootstrapperApplicationRef>

配置文件包括:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup
            name="wix.bootstrapper"
            type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.BootstrapperSectionGroup, BootstrapperCore">
            <section
                name="host"
                type="Microsoft.Tools.WindowsInstallerXml.Bootstrapper.HostSection, BootstrapperCore" />
        </sectionGroup>
    </configSections>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0" />
    </startup>
    <wix.bootstrapper>
        <host assemblyName="FusionInstallUX">
            <supportedFramework version="v4Full" />
            <supportedFramework version="v4Client" />
        </host>
    </wix.bootstrapper>
</configuration>

我还按照其他示例添加了

[assembly: BootstrapperApplication(typeof([name of class deriving from BootstrapperApplication]))]

AssemblyInfo.cs文件

最后,Stack Overflow问题在Burn管理的引导程序中指定WiX中的软件包的INSTALLLOCATION 描述了如何设置和使用Burn变量来帮助驱动安装。

有了这些信息,我现在准备用我自己的自定义Bootstrapper应用程序在世界上肆虐!

为了补充@Bill Campbell的回答,我写了一系列关于在。net中编写自定义WiX Bootstrapper的博客文章,其中涉及的部分更深入,至少对于托管代码解决方案。

不准确地回答这个问题,但如果你想自定义ManagedBootstrapperApplicationHost的外观,那么这就是你需要做的。

为了简短,你需要像这样声明你的变量(我把它放在BootstrapperApplicationRef之前)

<WixVariable Id="PreqbaThemeXml" Value="tt.thm" />
<WixVariable Id="PreqbaThemeWxl" Value="tt.wxl" />

tt。其中是您的主题文件,而tt。Wxl 是您的翻译文件。注意这些文件,以及它们引用的所有文件必须包含在BootstrapperApplicationRef作为 payload ,就像

<Payload SourceFile="tt.wxl"/>
<Payload SourceFile="tt.wxl"/>
<Payload SourceFile="cat.png"/>

作为布局的一个例子,你可以使用mbapreq。

除了这里列出的其他资源之外,一个用于Burn的自定义引导程序应用程序的良好概要示例是 custom WiX Managed bootstrapper application

我发现在深入研究其他更彻底的示例(如WiX源代码中的WixBA项目)之前,这是一个很好的起点。

我在设置时缺少的一个细节是,我必须包含对WixBalExtension.dll的引用。这是因为ManagedBootstrapperApplicationHost是在DLL中定义的,并像这样在包中使用:

<BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost">
      <Payload Name="BootstrapperCore.config"
               SourceFile="MyBA.BootstrapperCore.config" />
      <Payload SourceFile="MyBA.dll"/>
</BootstrapperApplicationRef>

相关内容

  • 没有找到相关文章

最新更新