15

製品のMSIを作成中です。並べて設置できるようにしてほしい。最初に 1.0.0 をインストールし、後で 1.0.1 を追加して、2 つのバージョンが両方ともインストールされるようにします。

WiX を使用して msi を作成していますが、Wix でこれをどのように行うことができ、また行うべきか知りたいですか? 例えば

  • すべてのコンポーネントに対して新しい Guidを作成する必要がありますか?
  • バージョン情報を wix に追加するにはどうすればよいですか、または製品の名前を完全に変更する必要がありますか?
  • 新しいバージョンをリリースするために必要な wixプロジェクトの変更を最小限に抑えるには、どうすればプロジェクトを作成できますか?

こんにちは、マルティン

4

2 に答える 2

10

トップレベルの製品コードとUpgradeCodeGUIDを変更するだけで、2つの製品を完全に無関係にし、Productversionを使用してバージョンを識別することができるはずです。製品間でコンポーネントのGUIDを共有できるため(マージモジュールの動作方法)、インストーラーの内臓(コンポーネント定義)を微調整する必要がなく、引き続き共有できます。

主な課題は、2つの分離された製品が互いに干渉しないようにすることです。たとえば、同じデフォルトのインストールフォルダー、スタートメニューのエントリ、同じ[プログラムの追加と削除]エントリを使用します。これは、ProductNameプロパティに製品のバージョン番号を含めることで実現できます。これは、インストールUIで少し技術的に見える場合がありますが、前代未聞ではありません。

于 2011-05-03T11:57:11.587 に答える
0

最初の質問について: いいえ、その必要はありません。
しかし、なぜ?

サイド バイ サイド シナリオでは、Windows インストーラーのルールを理解するのに苦労しました。コンポーネント ルールの概念 (ブレーキをかける必要がある場合を含む)キー パスを理解する必要があります。WiX はこれらの側面を抽象化しません。

この回答は、干渉の可能性をすでに強調しています。いくつかの例を考えてみましょう。

  • アプリケーションの実行可能ファイルを含むコンポーネントの GUID を変更する必要はありません。これはコンポーネントの規則に違反しますが、製品の両方のバージョンが干渉しない方法で同じコンポーネントを定義するため、機能します。
  • 両方のバージョンで共有されるリソースは直接サポートされていません。顕著な例は、ここに示すように、ProgID を使用したファイル拡張子の使用です。

    GUID を変更すると ("*" GUID を使用した場合にも発生します)、いずれかのバージョンをアンインストールするときに拡張機能が削除されます。

    GUID を変更しない場合、拡張機能は保持されますが、最後にインストールされたバージョンを指します。少なくとも、ユーザーがバージョンをインストールしたのと同じ順序でバージョンをアンインストールするシナリオをサポートする、2 つの悪魔のうちの小さい方として、このオプションを使用することができます。
    ここで落とし穴があります: 拡張機能は、コンポーネントのキー パスである必要があります。これにより、ProgID 要素を参照ファイルと同じコンポーネントに配置しないと ICE69 警告が表示されるため、ProgID 要素の使用がサイド バイ サイド シナリオで問題になります。さらに、それが生成するレジストリ エントリがキー パスになる WiX の実装の詳細です。

于 2013-03-13T11:06:53.983 に答える