1

私は、エンタープライズ製品用の Windows インストーラーの開発に取り組んでいます。このインストーラーには、個別の MSI 製品としてさまざまなバリエーションがあります。別のバリアントが既にインストールされている場合、製品をインストールできないことを確認する必要があります。さまざまな WIX スクリプトを作成し、それらを個別の製品 (MSI) としてビルドするために使用しました。

各バリアントには、基本フレームワークと多数のモジュールがあります。各モジュールを機能として作成し、ビルドされたバリアントに基づいて基本機能 (現時点では基本機能をインストールする必要があります) と共に含めました。

インストール済みのバリアントの上に別のバリアントをインストールできるようにする必要があるという要件を受け取りました。たとえば、3 つの機能 (Base、Mod1、Mod2) として基本フレームワークと共に 2 つのモジュールを持つ Product1 をインストールしました。Base と Mod3 で構築された Product2。ここで、Product1 がインストールされているシステムに Product2 をインストールすると、Mod3 のみがインストールされます。

WIX3.5を使用しています。

どんな助けでも大歓迎です。

前もって感謝します。

4

1 に答える 1

3

テストせずに、これを行うことができると思いますComponentSearch。このような検索を定義し、製品 1 のコンポーネントを検索して、結果を変数に書き込みます。その後、変数が空でないかどうかを確認して、製品 1 が既にインストールされているかどうかを判断できます。

 <Property Id="EXISTING_PRODUCT">
      <ComponentSearch Id="SearchMyProduct" Guid="{YOUR-OWN-GUID}" Type="file"/>
</Property>

次に、機能で a を使用できますCondition

<Feature Title="Product2">
    <Condition Level="0">EXISTING_PRODUCT <> ""</Condition>
</Feature>

CustomAction を使用して、検索結果に基づいて目的の値を定義し、Feature. (レベルの値である必要があります)。

私はこの方法でテストしていませんが、うまくいくはずです。試してみて、フィードバックをお願いします。

追加リンク:

http://wix.tramontana.co.hu/tutorial/getting-started/conditional-installation

于 2013-02-15T06:45:52.310 に答える