Пользовательский интерфейс загрузчика WiX Burn? - PullRequest
44 голосов
/ 20 октября 2011

Я создаю установочный пакет с WiX 3.6 в первую очередь, чтобы я мог воспользоваться функциями начальной загрузки Burn . На данный момент у меня есть несколько пакетов MSI, связанных вместе, которые будут установлены с помощью встроенного приложения начальной загрузки (WixStandardBootstrapperApplication.RtfLicense).

Я прочитал, что Burn позволяет заменить приложение начальной загрузки по умолчанию, указав пользовательский UX.dll, но я пока не смог найти какие-либо ресурсы, которые описывают, как создается пользовательский ux.dll (то есть как он интегрируется с движком Burn, какие технологии я использую, какие интерфейсы я должен реализовывать и т. д.).

Моя цель - создать фирменный загрузчик, который может собирать произвольную информацию от пользователя и передавать эту информацию в различные связанные MSI-файлы, EXE-файлы и т. Д.

Итак, у меня действительно два вопроса:

  1. Насколько настраивается приложение начальной загрузки по умолчанию?
  2. Есть ли доступные ресурсы, описывающие, как создать пользовательский UX.dll?

Ответы [ 5 ]

40 голосов
/ 25 октября 2011

Важно знать, что в двоичных файлах 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!

23 голосов
/ 20 сентября 2013

В дополнение к ответу @Bill Campbell я написал серию постов в блоге о написании собственного загрузчика WiX в .NET , в котором более подробно рассказывается о задействованных компонентах, по крайней мере для управляемого кодарешение.

5 голосов
/ 25 сентября 2013

В дополнение к другим ресурсам, перечисленным здесь, хорошим примером пользовательского приложения начальной загрузки для Burn является Пользовательское приложение WiX для управляемого загрузчика .

Я обнаружил, что это хорошее место для начала, прежде чем углубляться в другие, более подробные примеры, такие как проект WixBA в источниках WiX.

4 голосов
/ 05 апреля 2013

Не совсем ответ на этот вопрос, но если вы хотите настроить внешний вид ManagedBootstrapperApplicationHost, то this - это то, что вам нужно сделать.

Для краткости, вам нужно объявить свойпеременные, подобные этой (я поставил его перед BootstrapperApplicationRef)

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

при условии, что tt.thm - это файл вашей темы, а tt.wxl - ваш файл перевода.Обратите внимание, что эти файлы, а также все файлы, на которые они ссылаются, должны быть включены в BootstrapperApplicationRef как Payoload , например

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

В качестве примера макета вы можете использовать mbapreq.thm , находится в источниках WiX.

3 голосов
/ 29 октября 2013

Одна деталь, которую я упустил при настройке, состояла в том, что мне пришлось включить ссылку на WixBalExtension.dll. Это потому, что ManagedBootstrapperApplicationHost определено в этой DLL и используется в комплекте следующим образом:

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