自定义的WiX刻录引导程序用户界面?
我正在使用WiX 3.6创build安装包,以便我可以利用刻录引导function。 到目前为止,我有几个捆绑在一起的MSI软件包将与内置引导程序应用程序( WixStandardBootstrapperApplication.RtfLicense
)一起安装。
我读过Burn允许默认引导程序应用程序被指定一个自定义UX.dll
,但我还没有能够find任何资源,描述如何构build自定义的ux.dll
(也就是说,它是如何集成与烧伤引擎,我使用什么技术,我应该实现什么接口等)。
我的目标是创build一个品牌的引导程序,可以从用户收集任意信息,并将这些信息传递到各种捆绑的MSI文件,EXE文件等。
所以我有两个问题:
- 默认引导程序应用程序在多大程度上可定制?
- 有没有可用的资源来描述如何构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>