web-dev-qa-db-ja.com

カスタムWiX Burnブートストラップユーザーインターフェイス?

主にWiX 3.6でインストールパッケージを作成しているため、 Burn ブートストラップ機能を利用できます。これまでのところ、組み込みのブートストラップアプリケーション(WixStandardBootstrapperApplication.RtfLicense)と共にインストールされる複数のMSIパッケージがバンドルされています。

Burnは、カスタムUX.dllを指定することでデフォルトのブートストラップアプリケーションを置き換えることができることを読みましたが、カスタムux.dllの構築方法を説明するリソース(つまり、 、バーンエンジンとの統合方法、使用するテクノロジー、実装するインターフェイスなど)。

私の目標は、ユーザーから任意の情報を収集し、その情報をさまざまなバンドルされたMSIファイル、EXEファイルなどに渡すことができるブランドのブートストラップを作成することです。

だから私は本当に2つの質問があります:

  1. デフォルトのブートストラップアプリケーションはどの程度カスタマイズ可能ですか?
  2. カスタムUX.dllの作成方法を説明するリソースはありますか?
44
Bill Campbell

知っておくべき重要なことは、統合を処理するBootstrapperApplicationクラスを定義するWiXバイナリにBootstrapperCore.dllがあることです。 Burnエンジンを使用します。独自の派生クラスを作成し、「Run」メソッドをオーバーライドしてカスタムUIを起動する必要がありました。

BootstrapperApplicationクラス(src\Setup\WixBA\WixBA.csproj)を使用するための参照として、WiXブートストラップのUIを定義するWixBAプロジェクトを使用することも役立ちました。

カスタムブートストラップ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ファイル。

最後に、Stack Overflowの質問 バーン管理対象ブートストラップ内のWiXでパッケージのINSTALLLOCATIONを指定 では、バーン変数を設定および使用してインストールを促進する方法について説明します。

この情報を武器に、独自のカスタムBootstrapperアプリケーションで世界に大混乱をもたらす準備ができました!

40
Bill Campbell

@Bill Campbellの回答を補足するために、 。NETでのカスタムWiX Bootstrapperの作成 に一連のブログ投稿を書きました。

23
John M. Wright

ここにリストされている他のリソースに加えて、バーン用のカスタムブートストラップアプリケーションのベアボーンの良い例は、カスタムWiXマネージドブートストラップアプリケーション

これは、WiXソースのWixBAプロジェクトのような他のより徹底的な例の詳細を掘り下げる前に、始めるのに適した場所であることがわかりました。

5
Dave Andersen

この質問に対する正確な回答ではありませんが、ManagedBootstrapperApplicationHostの外観をカスタマイズする場合は、 this が必要です。

短くするために、このように変数を宣言する必要があります(BootstrapperApplicationRefの前に配置します)

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

tt.thmがテーマファイルであり、tt.wxlが翻訳ファイル。これらのファイル、およびそれらが参照するすべてのファイルは、BootstrapperApplicationRefPayoload、など

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

レイアウトの例として、WiXソースの下にあるmbapreq.thmを使用できます。

4
ironic

これを設定するときに欠けていた詳細の1つは、WixBalExtension.dllへの参照を含める必要があったことです。これは、ManagedBootstrapperApplicationHostがDLL=で定義され、次のようにバンドルで使用されるためです。

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