3

複数のプロジェクトに含めたい DLL のセットを指すフラグメントを含む WixLib プロジェクトとソリューションを作成しました。

ただし、このwixlibを他のソリューションから参照すると、dllが含まれているディレクトリのプリプロセッサ値がwixlibに付属しています。この値をオーバーライドするか、更新したいと思います。

私の Wixlib は次のようになります。

<Fragment>
   <ComponentGroup Id="CG.FarPointComponents">
      <Component Id="cmpBBC3777DD58F5E2AE4704D66EF87C105" Directory="INSTALLDIR"
                 Guid="6CB60019-D122-41F6-8009-C41B07BCE5C3">
         <File Id="filC126C8C2BFE502E045C17A812B8A907D" KeyPath="yes"
               Source="$(var.FarPointDir)\FarPoint.CalcEngine.dll" />
      </Component>
   </ComponentGroup>
</Fragment>

別のソリューションで var.FarPointDir に別のディレクトリを指定したいのですが、どうすればよいですか? Wix 3.6を使用しています

4

1 に答える 1

4

いくつかのオプション:

  1. 作成binary .wixlib--bfスイッチを使用lit.exeしてファイルを .wixlib に埋め込みます。そうすれば、.wixlib は完全に自己完結型になりますが、サイズは大きくなります。

  2. 使用bind paths- バインド パスは検索パスに似ていますが、最終的にパッケージに含める必要があるファイルを見つけるために使用します。File/@Source相対パスを作成すると (X:\または だけで開始しないでください\)、名前のないバインド パスが検索されます。コマンドライン スイッチをlight.exe使用してバインド パスを指定します。-bpまたは、次のような名前付きバインド パスを使用することもできます。

    <File Source='!(bindpath.Name)\FarPoint.CalcEngine.dll' />
    

    ここでも、-bpスイッチは名前付きバインド パスを作成できます。

  3. 使用bind variable- プリプロセッサ変数 (「コンパイル」前に解決される) を使用する代わりに、「バインド時」に解決される変数を使用します。次のようなバインド変数を参照できます!(wix.Var)。これは、コマンドラインで設定するか、要素light.exeを使用してコードで設定できます。WixVariable

オプション #1 を使用して .wixlibs を他の人に配布し (自己完結型にする)、オプション #2 はそれが私のものだけの場合です (バイナリの .wixlibs はビルドを少し遅くします)。

于 2013-03-12T20:32:08.893 に答える