要知道的关键是 WiX 二进制文件中有一个BootstrapperCore.dll,它定义了一个BootstrapperApplication 类,用于处理与 Burn 引擎的集成。我需要创建自己的派生类并覆盖“运行”方法来启动我的自定义 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 问题Specify the INSTALLLOCATION of packages in WiX inside the Burn managed bootstrapper描述了如何设置和使用 Burn 变量来帮助驱动安装。
有了这些信息,我现在准备用我自己的自定义 Bootstrapper 应用程序对世界造成严重破坏!