ホーム
私訳です。より確かな記述は
MSDN
(英語)を直接読んで下さい。
MSDN >
MSDN Library >
Win32 and COM Development >
Administration and Management >
Application Installation and Servicing >
Windows Installer >
Windows Installer Guide >
Patching and Upgrades >
Major Upgrades >
Changing the Product Code
プロダクトコードの変更
プロダクトコードはGUIDで、アプリケーションやプロダクトの主要な身元証明(id)です。
Product Codes を見て下さい。
以下のガイドラインを満たしているアップデートは概して プロダクトコードの変更を要求せず、
small update として あるいは もしバージョンは変えるべきなら
minor upgrade として 処理され得ます:
- アップデートは、フィーチャー-コンポーネント ツリーを拡大や縮小する事ができますが、
Feature と
FeatureComponents テーブルによって記述される 既存のフィーチャーとコンポーネントの
階層を 再構成してはいけません。既存のフィーチャー-コンポーネント ツリーに 新しい
フィーチャーを追加できます。もし親フィーチャーを削除するなら、削除されたフィーチャー
の すべての子フィーチャーも削除しなければなりません。
- アップデートは、新しいフィーチャーや既存のフィーチャーに 新しいコンポーネントを追加でき
ます。
- アップデートは、どのコンポーネントのコンポーネントコードも変更してはいけません。
その結果として、スモールアップデートやマイナーアップグレードは コンポーネントのキーファイル
の名前を絶対に変更してはいけません。なぜなら、これはコンポーネントコードの変更を要求するから
です。
- アップデートは、インストールパッケージの .msi ファイルの名前を変更してはいけません。
それよりむしろ、パッケージを変更するので パッケージコードを変更すべきです。これは、
アップデートは ファイル名を変更する事なしに .msi ファイル中のテーブル、カスタムアクション、
ダイアログを変更できる事を、意味している事に注意して下さい。
- アップデートは、2つ以上のフィーチャーによって共有されてはいない ファイル、レジストリ
キー、コンポーネントのショートカットを 追加、削除、変更できます。もしアップデートが
バージョンの付けられたファイルを変更するなら、そのファイルのバージョンは
File table でインクリメントされなければなりません。もしアップデートがリソースを削除する
なら、既にインストールされている 使われていないファイル、レジストリキー、ショートカットを
削除するのに
RemoveFile と
RemoveRegistry テーブルもアップデートすべきです。
- 2つ以上のフィーチャーによって共有されているコンポーネントのアップデートは、
コンポーネントを使用する すべてのアプリケーションとフィーチャーに関して 後方互換でなければ
なりません。アップデートは、変更が後方互換である限りは ファイル、レジストリキー、
ショートカットといった 共有コンポーネントのリソースを変更できます。アップデートが 共有
コンポーネントから ファイル、レジストリキー、ショートカットを 追加や削除する事は 推奨されて
いません。
- スモールアップデートは、Windows Installer
patch package として出荷されています。(フルプロダクト CD-ROM は通常、スモール
アップデートを与えられていません。)
もし以下のうちどれかがアップデートの為に当てはまるなら プロダクトコードは変更されなければ
なりません:
- 同じシステム上で オリジナルとアップデートされたプロダクトの両方の共存インストールが
可能でなければならない。
- .msi ファイルの名前が変更された。
- 既存のコンポーネントのコンポーネントコードが 変更された。
- コンポーネントが既存のフィーチャーから削除される。
- 既存のフィーチャーが既存のフィーチャーの子にされた。
- 既存の子フィーチャーがその親フィーチャーから削除された。
- コンポーネントが プロダクトコードの変更を要求する事なく 既存のフィーチャーに追加
されるかもしれない。(訳注:別のプロダクトからの影響の事だと思いますが、よく分からないので
ここは自己判断して下さい。)
既存のフィーチャーに すっかり新しいコンポーネントから構成される 新しい子フィーチャーを
追加する事は、プロダクトコードの変更を必要としない事に注意して下さい。
新しい子フィーチャーは、
Feature table のアトリビュートフィールド中に msidbFeatureAttributesFollowParent と
msidbFeatureAttributesUIDisallowAbsent を含む事により 生み出される事があります。
もしマイナーアップグレードが 新しい子フィーチャーを追加するだけなら、新しい子フィーチャーの
インストールを強制するのに REINSTALL=ALL で足ります。より多くのインフォメーションに関して
は、
Controlling Feature Selection States を見て下さい。
新しい子フィーチャーは、ユーザーから隠されるかもしれません。新しい子フィーチャーの
インストール状態を その親フィーチャーと一致させるには、子フィーチャーの為に
msidbFeatureAttributesFollowParent と msidbFeatureAttributesUIDisallowAbsent ビットを
セットして下さい。
See Also
About Properties
Using Properties
Property Reference