Важно знать, что в двоичных файлах WiX есть BootstrapperCore.dll , который определяет BootstrapperApplication класс , который обрабатывает интеграцию с механизмом записи.Мне нужно было создать свой собственный производный класс и переопределить метод «Выполнить» для запуска моего пользовательского интерфейса.
Было также полезно использовать проект WixBA, который определяет пользовательский интерфейс для загрузчика WiX в качестве справочного материала для использованияКласс 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
.
И, наконец, вопрос переполнения стека УкажитеУСТАНОВКА пакетов в WiX внутри управляемого загрузчика Burn * * описывает, как устанавливать и использовать переменные Burn для управления установкой.
Вооружившись этой информацией, я теперь готов нанести ущерб мирус моим собственным приложением Bootstrapper!