3

Question: Can we access msi files (and other installers) packed with Burn Bootstrapper at install time?

Let's say if we need to read some property, or apply mst just before starting the installation etc.

Is that possible?

4

1 に答える 1

0

変換をペイロードとして MsiPackage 要素に追加し、MsiProperty 要素を使用して TRANSFORMS プロパティを設定しようとしましたか?

<MsiPackage ...>
    <Payload Compressed="yes" SourceFile="c:\mytransform.mst"/>
    <MsiProperty Name="TRANSFORMS" Value="mytransform.mst" />
</MsiPackage>

埋め込まれたペイロードへのパスを本当に取得する必要があり、標準のブートストラップを使用している場合は、bafunctions.dll を作成し、C/C++ コーディングを行う必要があります。

bafunctions.dll を作成するには、まず wix ソース コードをダウンロードし、プロジェクト src\burn\samples\bafunctions を例として使用します。コンパイルした bafunctions.dll を使用するには、それをペイロードとしてブートストラッパーに追加します。

<BootstrapperApplicationRef ...>
    <Payload Compressed="yes" SourceFile="c:\bafunctions.dll" />
</BootstrapperApplicationRef>

標準のブートストラップに bafunctions.dll コールバックを呼び出させるにはこれで十分です。OnDetect()、OnDetectComplete()、OnPlan()、OnPlanComplete() のコールバックがあります。これらの関数を使用して、いくつかの重要な検出を行い、書き込み変数を取得/設定できます。

この投稿には、実行時に bafunctions.dll を使用して埋め込みペイロードへのパスを取得する方法の例があります: バンドルのペイロードへのパスを msi に渡すには?

于 2015-10-21T23:11:44.083 に答える