1

複数の MSI を 1 つのインストール パッケージにパッケージ化したいので、Wix3.6 の Burn を使用しています。

インストールするパッケージを選択できるシンプルなユーザー インターフェイスが必要です。

標準の BA (wixstdba.dll) にはこの機能がなく、独自の BA を作成する必要があることを理解しています。

C++ BA の例として、'wix36-sources' パッケージのプロジェクト 'wixstdba' を見てきました。開始するには、次のようにプロジェクトを再構築し、結果の DLL をバンドルに追加するだけです。

<Bundle 
    Name="$(var.ProductName)"
     Version="$(var.ProductVersion)"
    Manufacturer="$(var.VendorName)"
    UpgradeCode="$(var.UpgradeCode)" >
    <BootstrapperApplication SourceFile="wixstdba.dll" />
    <Chain>
    ...

バンドルのビルドに成功しました:

light -ext WixBalExtension.dll -ext WixUIExtension -ext WixUtilExtension installer-v$(VERSION).wixobj -o installer-v$(VERSION).exe

candle -o installer-v$(VERSION).wixobj bundle.wxs -d"Platform=x64"

ただし、結果の .exe を実行しても何も起こりません。UI は表示されず、ソフトウェアもインストールされず、エラー メッセージも表示されません。

私が間違っているかもしれないことは何ですか?

4

1 に答える 1

2

.exeを実行すると、システムの%TEMP%フォルダーにログファイルが作成されます。これにより、エラーが発生しているかどうかがわかります。ファイル名は製品名になります(スペースはアンダースコアに置き換えられます)。それを見つける最も簡単な方法は、Windowsエクスプローラーウィンドウを開き、フォルダー名に「%TEMP%」と入力し、変更日で並べ替えることです。一番上のファイルが正しいファイルである可能性があります。

ブートストラッパーが実行されている可能性がありますが、コードを読み込もうとすると、依存関係を読み込めないか、エラーが発生します。うまくいけば、ログはあなたが問題を見つけるのに十分なヒントを提供するでしょう。

BAで使用するライブラリ/ファイルを追加する必要がある場合は、次のようにバンドルペイロードファイルに追加します。

  <BootstrapperApplicationRef SourceFile = "wixstdba.dll">
    <Payload SourceFile = "$(var.ReferencedProject.TargetDir)\ file.needed.at.runtime" />
  </ BootstrapperApplicationRef>

これにより、実行時に解凍したBAと同じフォルダーにファイルが配置されます。

于 2012-08-13T20:29:19.737 に答える