2011-07-28 4 views
1

私はWixの新機能ですので、この質問は意味をなさないかもしれませんが、なぜマージモジュールのアップグレードコードはありませんか?私は現在、通常のMSIを作った小さなアプリケーションを持っています。今度は、このアプリケーション用のマージモジュールを作成して、他のアプリケーションと一緒にインストールできるようにしたいと考えています(関連アプリケーションの一環としてクライアントに出荷されます)。アプリケーションが既にインストールされているかどうかをマージモジュールで検出し、必要に応じてアップグレードしたいが、マージモジュールのアップグレードコードはありません。これを達成する方法はありますか?Wixマージモジュールアップグレードコード

私が望むのは、次のような動作です.Word、Excelなどをそれぞれ独自のMSIで個別にインストールできるとしますが、Word、ExcelのMSMを含むMicrosoft Office全体をインストールすることもできます。 ..もちろん、MSIからExcelを起動していない状態でOffice用MSIを実行すると、MSM for Excelが既にインストールされていることを検出し、必要に応じてアップグレードするか、最新であれば何もしません。

ありがとうございました

答えて

3

アップグレードは製品全体のレベルで処理されます。マージモジュールは、製品に含まれる関連コンポーネントのコレクションです。したがって、マージモジュールはアップグレードを指定するのに間違った場所です。

ただし、説明するシナリオでは、アップグレードする必要はありません.Windows Installerは、バージョン番号が上がると個々のファイルをアップグレードします。バージョン管理規則の完全な一覧については、MSI SDKの「ファイルのバージョン管理規則」を参照してください。

+0

ありがとうございます。このマージモジュール内に約20個のファイルがある場合、それらはすべてこのファイルバージョン管理方式に従うべきですか?また、これらのファイルのうち2つがCOMコンポーネントであり、登録が必要な場合はどうすればいいですか?ファイルが変更されたときにファイルを再登録する方法はありますか? – Carl

+1

はい、ファイルが更新されている場合は、バージョン番号を変更する必要があります.MSIは本質的にバージョン番号を信頼します。変更されない場合、MSIはバージョン番号を信頼しません。 COM登録にも同じことが適用されます。レジストリエントリをファイルと同じコンポーネントに入れ、ファイルのバージョン番号をインクリメントし、MSIはファイルをアップグレードしてレジストリ値を書き込みます。 –

+0

私がよく理解していれば、マージモジュールはファイルのバージョン管理に依存しているため、ファイルをインストールするパスをハードコードする必要があります。私がMSIにMSMのインストール場所を決めさせたら、システム上の複数の場所に複数のファイルをコピーしてもそれを検出することはできません。 – Carl