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

我正在使用WiX 3.6创build安装包,以便我可以利用刻录引导function。 到目前为止,我有几个捆绑在一起的MSI软件包将与内置引导程序应用程序( WixStandardBootstrapperApplication.RtfLicense )一起安装。

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

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

所以我有两个问题:

  1. 默认引导程序应用程序在多大程度上可定制?
  2. 有没有可用的资源来描述如何构build一个自定义UX.dll

要知道的关键是在WiX二进制文件中有一个BootstrapperCore.dll ,它定义了一个BootstrapperApplication类来处理与Burn引擎的集成。 我需要创build我自己的派生类,并重写“运行”方法来启动我的自定义用户界面。

使用定义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> 

configuration文件包括:

 <?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文件。

最后,堆栈溢出问题指定安装在WiX内的软件包的安装位置在pipe理引导程序中描述了如何设置和使用刻录variables来帮助驱动安装。

有了这些信息,我现在准备用我自己定制的Bootstrapper应用程序来破坏世界。

为了补充@Bill Campbell的回答,我写了一系列关于在.NET中编写定制的WiX Bootstrapper的博文,这篇文章深入讨论了涉及的部分,至less在托pipe代码解决scheme方面。

除了这里列出的其他资源之外,Burn 定义引导程序应用程序的一个很好的例子是Custom WiX Managed Bootstrapper Application

我发现这是一个很好的开始之前,深入挖掘其他更深入的例子,如WiX资源中的WixBA项目。

不完全回答这个问题,但如果你想定制ManagedBootstrapperApplicationHost的外观,那么这就是你需要做的。

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

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

假设tt.thm是你的主题文件,而tt.wxl是你的翻译文件。 注意这些文件以及它们引用的所有文件都必须作为Payoload包含在BootstrapperApplicationRef

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

作为布局的一个例子,你可以使用在WiX资源下find的mbapreq.thm

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

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