別ページ アップグレード(バージョンアップ)の考え方 で述べた通り、Small UpgradeおよびMinor Upgradeの場合、MSIファイルの実行には、下記の引数を指定して実行する必要があります。
|
||||||||||||||||||||
もし、すでに製品がインストールされている環境で、REINSTALLプロパティを指定せずに実行すると、「別のバージョンの製品がすでにインストールされています」と表示され、インストールを続行できません。 逆に、製品がインストールされていない状態で、REINSTALLプロパティを指定して実行すると、一見、インストール作業は正常に完了したように見えますが、実は何もインストールされていません。 つまり、REINSTALLプロパティは、既存ユーザーの場合は指定しなければならず、新規ユーザーの場合には指定してはいけないのです。 1つの配布パッケージで、既存ユーザーと新規ユーザーの両方に対応するためには、コマンドラインから指定されたREINSTALLプロパティを、新規ユーザーの場合に無効化するようにします。 (REINSTALLプロパティが無効化されれば、REINSTALLMODEプロパティは無視されます。) これを実現するには、Orca を使って、下記のように行います。
ここまで読んだあなたは、REINSTALLMODEプロパティも動的に変更すれば、コマンドライン引数として指定する必要はないのではないかと考えるかもしれません。 しかし、この方法は使えません。 このプロパティは、コマンドラインからの指定以外受け付けません。 なぜなら、指定値として、"v"が含まれているかどうかにより、"システムにキャッシュされているMSIファイルを使うか"(Windowsインストーラでは、インストールされたアプリケーションの修復セットアップに対応するため、MSIファイルのコピーをシステム領域にキャッシュしています)、それとも、"指定したMSIファイルを使うか"を判断しているからです。 つまり、指定値に"v"が含まれているかどうかは、MSIファイルを読み込む前に判定しなければ意味がないのです。 よって、このプロパティをコマンドラインからしか指定できないことは、至極当然と言えるでしょう。 なお、引数を指定してMSIファイルを実行する方法として、別ページ IExpressを使った配布ファイルの作成手順 にて一例を説明していますので、そちらも参考にして下さい。 |