关键要知道的是,在WiX二进制文件中,有一个名为BootstrapperCore.dll的文件,其中定义了一个BootstrapperApplication类,该类处理与Burn引擎的集成。我需要创建自己的派生类并重写“Run”方法以启动我的自定义UI。
使用定义WiX引导程序UI的WixBA项目作为使用BootstrapperApplication类的参考也很有帮助(src\Setup\WixBA\WixBA.csproj)。
我用于引用自定义引导程序DLL文件的标记是:
<BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost" >
<Payload SourceFile="$(var.InstallSourceResources)Bootstrapper\FusionInstallUX.dll"/>
<Payload Id="FusionInstallUX.config"
SourceFile="$(var.InstallSourceResources)Bootstrapper\FusionInstallUX.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="v4\Full" />
<supportedFramework version="v4\Client" />
</host>
</wix.bootstrapper>
</configuration>
我也参考了其他示例并追加了
[assembly: BootstrapperApplication(typeof([name of class deriving from BootstrapperApplication]))]
到AssemblyInfo.cs
文件。
最后,Stack Overflow问题在Burn托管引导程序中指定包的INSTALLLOCATION描述了如何设置和使用Burn变量来帮助驱动安装。
有了这些信息,我现在准备用自己的自定义引导程序应用程序给世界带来灾难!