ファイルのバージョン管理ルール
どのようなインストーラーでも、その中核となるのはファイルの実際のインストールです。 ファイルをインストールするかどうかの判断は複雑なプロセスです。 最も高いレベルでは、この決定は、ファイルが属するコンポーネントがインストール用にマークされているかどうかによって決まります。 ファイルをコピーする必要があると判断されても、ターゲット フォルダーに同じ名前の別のファイルがある場合、プロセスは複雑になります。 このような状況では、決定を下すには、次のプロパティを含む一連のルールが必要です。
- バージョン
- Date
- 言語
インストーラーでこれらのルールを使用するのは、同じ名前のファイルが既に含まれている場所にファイルをインストールしようとする場合だけです。 この場合、Windows インストーラーは、他のすべての条件が同じであれば、次のルールを使用してインストールするかどうかを判断します。
最も高いバージョンを優先 - 他のすべての条件が同じであれば、コンピューター上のファイルのバージョンが最も高い場合でも、最も高いバージョンのファイルが優先されます。
バージョン管理されたファイルを優先 - バージョン管理されているファイルを、バージョン管理されていないファイルよりも優先してインストールします。
製品の言語を優先 - インストール中のファイルの言語がコンピューター上のファイルと異なる場合、インストール中の製品と言語が一致するファイルを優先します。 言語に依存しないファイルは単なる別の言語として扱われるため、インストール中の製品が再び優先されます。
一致しない複数の言語 - インストール中のファイルとコンピューター上のファイルの間の共通言語を考慮から除外した後、インストール中の製品のニーズに従って残りの言語が優先されます。
スーパーセット言語を保持 - 既にコンピューター上にあるのかインストール中なのかを問わず、複数の言語をサポートするファイルを保持します。
バージョン管理されていないファイルはユーザー データ - コンピュータ上のファイルの変更日が作成日より後である場合、ユーザーのカスタマイズが削除されるため、ファイルをインストールしません。 変更日と作成日が同じである場合は、ファイルをインストールします。 作成日が変更日より後である場合、ファイルは変更されていないと見なされ、ファイルをインストールします。
コンパニオン ファイルのインストールは、それ自体のファイル バージョン管理情報ではなく、そのコンパニオンの親のバージョン管理に依存します。 コンパニオン ファイルの場合、親ファイルの方がバージョンが高い場合にのみインストールはスキップされます。 そのコンポーネントのキー パスであるファイルはコンパニオン ファイルであってはなりません。もしそうであれば、キー パス ファイルのバージョン管理ロジックがコンパニオンの親ファイルによって決定されることになるからです。
コンパニオン ファイルを使用するバージョン管理されていないファイル - バージョン管理されているファイルにコンパニオン メカニズムを使用して関連付けられているバージョン管理されていないファイルは、バージョン管理されているファイルのルールに従います。 唯一の例外は、コンピューター上のバージョン管理されているファイルとインストール中のバージョン管理されているファイルのバージョンと言語が一致するが、コンパニオン ファイルがコンピューターに見つからない場合です。 この場合、コンピューター上のバージョン管理されているファイルが使用されるにもかかわらず、インストール中のコンパニオン ファイルが使用されます。 さらに、REINSTALLMODE プロパティに古いバージョンの上書きオプション ("o" または "e") が含まれており、コンパニオン ファイルのバージョンが既にマシン上にあるファイルと一致する場合、コンパニオン ファイルを使用するバージョン管理されていないファイルがインストールされます。
ルールはグローバル - ファイルをインストールするタイミングを決定するルールは、インストーラー内の 1 つの場所に存在し、グローバルです。つまり、すべてのファイルに等しく適用されます。
ファイル バージョンに使用される形式の例については、Version データ型に関するページを参照してください。 詳細については、「既存のファイルの置き換え」または「既定のファイルのバージョン管理」を参照してください。