製品コードを変更する
製品コードは、アプリケーションまたは製品の主要な識別情報である GUID です。 「製品コード」を参照してください。
一般に、次のガイドラインを満たす更新プログラムは、製品コードを変更する必要はなく、小さな更新プログラムとして、またはバージョンを変更する場合はマイナー アップグレードとして、処理できます。
- 更新プログラムは、機能コンポーネント ツリーを拡大または縮小することはできますが、Feature テーブルと FeatureComponents テーブルで記述されている機能とコンポーネントの既存の階層を再編成することはできません。 既存の機能コンポーネント ツリーに新しい機能を追加できます。 親機能を削除する場合は、削除された機能のすべての子機能も削除する必要があります。
- 更新プログラムでは、新しいコンポーネントを新しい機能または既存の機能に追加できます。
- 更新プログラムは、どのコンポーネントのコンポーネント コードも変更してはなりません。 したがって、小さな更新プログラムまたはマイナー アップグレードでコンポーネントのキー ファイルの名前を変更してはなりません。これを行うと、コンポーネント コードを変更する必要があります。
- 更新プログラムでは、インストール パッケージの .msi ファイルの名前を変更してはなりません。 その場合はパッケージが変更されるため、パッケージ コードを変更する必要があります。 これは、更新プログラムでは、ファイルの名前を変更することなく、.msi ファイル内のテーブル、カスタム アクション、ダイアログを変更できることを意味することに注意してください。
- 更新プログラムでは、2 つ以上の機能で共有されていないコンポーネントのファイル、レジストリ キー、またはショートカットを追加、削除、または変更できます。 更新プログラムでバージョン管理されたファイルを変更する場合は、File テーブルでそのファイルのバージョンをインクリメントする必要があります。 更新プログラムでリソースを削除する場合は、RemoveFile テーブルと RemoveRegistry テーブルを更新して、既にインストールされていて未使用のファイル、レジストリ キー、またはショートカットを削除する必要もあります。
- 複数の機能によって共有されるコンポーネントの更新プログラムは、そのコンポーネントを使用するすべてのアプリケーションおよび機能と下位互換性がある必要があります。 更新プログラムでは、変更に下位互換性がある限り、ファイル、レジストリ エントリ、ショートカットなどの共有コンポーネントのリソースを変更できます。 更新プログラムで共有コンポーネントのファイル、レジストリ エントリ、またはショートカットを追加または削除することはお勧めしません。
- 小さな更新プログラムは、Windows インストーラーのパッチ パッケージとして出荷されます。 (完全な製品 CD-ROM は、通常、小さな更新プログラムでは提供されません。)
更新プログラムで次のいずれかが当てはまる場合は、製品コードを変更する必要があります。
- 元の製品と更新された製品の両方を同じシステムに共存させることができる必要があります。
- .msi ファイルの名前が変更されています。
- 既存のコンポーネントのコンポーネント コードが変更されています。
- 既存の機能からコンポーネントが削除されます。
- 既存の機能が、既存の機能の子にされています。
- 既存の子機能が親機能から削除されています。
新しいコンポーネントだけで構成される新しい子機能を既存の機能に追加しても、製品コードを変更する必要はないことに注意してください。
Feature テーブルの Attributes フィールドに msidbFeatureAttributesFollowParent と msidbFeatureAttributesUIDisallowAbsent を含めることで、新しい子機能を作成できます。 マイナー アップグレードで新しい子機能の追加だけが行われる場合、新しい子機能を強制的にインストールするには、REINSTALL=ALL で十分です。 詳細については、「機能の選択の状態の制御」を参照してください。
新しい子機能がユーザーに表示されない場合があります。 新しい子機能のインストール状態を親機能と同期するには、子機能の msidbFeatureAttributesFollowParent ビットと msidbFeatureAttributesUIDisallowAbsent ビットを設定します。
関連トピック