47

私は主にWiX3.6でインストールパッケージを作成しているので、Burnブートストラップ機能を利用できます。これまでのところ、組み込みのブートストラッパーアプリケーション()とともにインストールされるいくつかのMSIパッケージがバンドルされていますWixStandardBootstrapperApplication.RtfLicense

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

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

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

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

5 に答える 5

41

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

また、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>

構成ファイルは次のもので構成されます。

<?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の質問「Burnマネージドブートストラッパー内のWiXでパッケージのINSTALLLOCATIONを指定する」では、 Burn変数を設定して使用してインストールを促進する方法について説明しています。

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

于 2011-10-25T19:13:25.930 に答える
26

@Bill Campbellの回答を補足するために、.NETでのカスタムWiX Bootstrapperの作成に関する一連のブログ投稿を作成しました。これは、少なくともマネージコードソリューションについて、関連する部分についてさらに詳しく説明しています。

于 2013-09-20T04:01:09.050 に答える
6

この質問に正確に答えるわけではありませんが、ManagedBootstrapperApplicationHostの外観をカスタマイズする場合は、これを行う必要があります。

短くするために、このように変数を宣言する必要があります(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ソースの下にあるmbapreq.thmを使用できます。

于 2013-04-05T11:55:49.110 に答える
6

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

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

于 2013-09-24T20:38:51.083 に答える
3

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

<BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost">
      <Payload Name="BootstrapperCore.config"
               SourceFile="MyBA.BootstrapperCore.config" />
      <Payload SourceFile="MyBA.dll"/>
</BootstrapperApplicationRef>
于 2013-10-29T15:50:20.780 に答える