機能またはアプリケーションの再インストール
Windows インストーラーを使用すると、アプリケーションに含まれるファイルを修復、置換、検証できます。 機能に関連するファイルやレジストリ エントリが見つからない、または破損している場合、アプリケーションの部分的または完全な再インストールが必要になることがあります。
機能またはアプリケーションを再インストールすると、その機能またはアプリケーションに属するすべてのサービス、環境変数、カスタム アクションも再インストールされます。 この場合、最初のインストールから再インストールするまでの間に環境変数に加えた変更がすべて失われることに注意してください。
次の一覧は、機能または製品を再インストールする方法をまとめたものです。 最初の 2 つの方法は、インストーラーで自動的に行うことができます。
- MsiReinstallFeature 関数を呼び出して、ファイルを修復、置換、または確認する。
- MsiReinstallProduct 関数を呼び出して、製品全体を再インストールする。
- Reinstall ControlEvent を使用して、インストーラーの UI コントロール ボタンを使用してファイルを再インストール、置換、または確認する。
- REINSTALL プロパティと REINSTALLMODE プロパティを設定して、コマンド ラインからファイルを再インストール、置換、または確認する。
機能またはアプリケーションの再インストールの詳細については、回復性に関するページを参照してください。
インストーラーを使用して製品を再インストールする
- MsiReinstallProduct を呼び出します。
インストーラーを使用して機能を再インストールする
- MsiReinstallFeature を呼び出します。
インストーラーのユーザー インターフェイスを使用して製品または機能を再インストールする
Control テーブルにエントリを追加することで、指定したダイアログ ボックスにボタンを追加します。
手順 1 で作成したボタン コントロールを参照する Dialog_ フィールドと Control_ フィールドを使用して、ReinstallMode ControlEvent を ControlEvent テーブルに追加します。 Argument フィールドに、指定したい再インストール モードに対応する文字を含めた文字列を入力します (このフィールドに使用できる値は、REINSTALLMODE プロパティに指定できる値と同じです)。 このイベントの Ordering 列の値は 1 である必要があります。
Reinstall ControlEvent イベントを ControlEvent テーブルに追加し、先ほどと同じボタン コントロールを参照します。 通常、すべての機能を強制的に再インストールするために このイベントの Argument フィールドは ALL になりますが、ここに特定の機能の名前を指定することもできます。 このイベントの Ordering 列の値は 2 である必要があります。
実際に再インストールを開始させるイベントとして、同じボタン コントロールに紐づくイベントをもう 1 つ追加します。 これは、EndDialog イベント (引数 Return) にすることができます。 しかし、NewDialog イベントを使用して、「再インストールしますか?」といった確認ダイアログ ボックスにジャンプさせることが、より一般的です。 このイベントの Ordering 列の値は 3 である必要があります。
必要であれば、1 つのダイアログ ボックスに対して複数の REINSTALL ボタンを作成し、ユーザーが実行する再インストールの種類を選択できるようにすることができます。 この場合、各ボタンは前述の手順で作成し、各ボタンに異なる ReinstallMode ControlEvent パラメーターを指定します。
特定の製品 (製品の機能の一部または全部を含む) がインストールされたら、コマンド ラインで再インストールを実行できます。
コマンド ラインから製品または機能を再インストールする
コマンド プロンプトで、REINSTALL プロパティを指定します。
コマンド プロンプトで、REINSTALLMODE プロパティを指定します。
これらのプロパティを指定すると、ユーザーが製品の機能の一部またはすべてを再インストールできるようになります。 また、再インストールの種類を指定することもできます。 たとえば、完全に見つからないファイルのみを再インストールできるように指定したり、破損したファイル (たとえば、チェックサムと実際のファイル内容が一致しない実行可能ファイル) のみを置き換えられるように指定したりすることができます。