Подтвердить что ты не робот

Пользовательский пользовательский интерфейс загрузки WinX Burn?

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

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

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

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

  • В какой степени настраивается приложение bootstrapper по умолчанию?
  • Есть ли доступные ресурсы, которые описывают, как создать пользовательский UX.dll?
4b9b3361

Ответ 1

Главное знать, что в бинарных файлах WiX есть BootstrapperCore.dll, который определяет класс BootstrapperApplication, который обрабатывает интеграцию с движком Burn. Мне нужно было создать собственный производный класс и переопределить метод "Запуск", чтобы запустить пользовательский интерфейс.

Было также полезно использовать проект WixBA, который определяет интерфейс для загрузчика WiX как ссылку для использования класса BootstrapperApplication (src\Setup\WixBA\WixBA.csproj).

Разметка, которую я использовал для ссылки на мой загрузочный DLL файл bootstrapper:

<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.

И, наконец, вопрос о переполнении стека Укажите установку INSTALLLOCATION пакетов в WiX внутри загрузочного загрузочного диска, записанного с помощью Burn, описано, как установить и использовать переменные Burn, чтобы помочь выполнить установку.

Вооружившись этой информацией, я теперь готов нанести ущерб миру с помощью своего собственного приложения Bootstrapper!

Ответ 3

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

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

Ответ 4

Не точно ответьте на этот вопрос, но если вы хотите настроить внешний вид 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.

Ответ 5

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

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