2

私は、サードパーティが提供する同じ wixlib に基づいて 2 つのインストーラーを構築する任務を負っています。フル インストーラーにはすべてのコンポーネントが含まれ、Lite にはコア部分のみが含まれます。wixlib には次の構造があると仮定します。

<Fragment>
  <ComponentGroup Id="CoreStuff">
    <!-- List of components for this bit, roughly 5MB -->
  </ComponentGroup>
</Fragment>
<Fragment>
  <ComponentGroup Id="ExtraStuff">
    <!-- List of components for this bit, roughly 45MB -->
    <ComponentRef Id="BigFile1"/>
  </ComponentGroup>
  <Component Id="BigFile1">
    <File Id="BigFile1_bin" Name="BigFile1.bin"/>
  </Component>
</Fragment>

インストーラーは msbuild でビルドされます。コンポーネントは、次の方法でプロジェクトに組み込まれます。

<Feature Id="ThirdPartyStuff">
  <ComponentGroupRef Id="CoreStuff"/>
  <?if $(var.Configuration) = "Full"?>
  <ComponentGroupRef Id="ExtraStuff"/>
  <?endif?>
</Feature>

最後に、予想どおり、LGHT0267 エラーが発生します。

エラー LGHT0267: 孤立したコンポーネント 'BigFile1' が見つかりました。これが製品の場合、すべてのコンポーネントに少なくとも 1 つの親機能が必要です。Component を Module に含めるには、それを Module 要素の Component 要素として直接含めるか、ComponentRef、ComponentGroup、または ComponentGroupRef 要素を介して間接的に含める必要があります。

wixlib で提供されているコンポーネントを選択的に使用する方法について、回避策を思いついた人はいますか? ユーザー向けの別の機能として含めることもできますExtraStuffが、ここでの目標はインストーラーを縮小することです。ThirdParty に 2 つの別々の wixlib を提供するよう丁寧に依頼することもできますが、それは避けたいと思います。

4

2 に答える 2

1

wix には、wixlib パッケージの一部のみを使用する機能があるとは思いません。wixlibs はマージ モジュール (表示可能なテーブルなし) と考えてください。マージ モジュールの半分だけを消費することはできず、wixlib の半分だけを消費することもできません。

残念ながら、サードパーティに wixlib を 2 つのパッケージに分割するよう依頼する必要があります。

于 2015-04-08T17:43:57.653 に答える