1

アップグレードする前に再起動が必要な場合があるドライバーをインストールする Windows インストーラー MSI パッケージがあります。ドライバーは、WriteRegistryValues の後に延期されたカスタム アクションによってインストールされます。再起動が必要な場合は、ロールバックが行われ、ユーザーは再起動してインストールを再度実行するように指示されます。

InstallExecuteSequence では、RemoveExistingProducts アクションは InstallValidate と InstallInitialize の間にあるため、アップグレードで再起動が必要であることが通知されると、以前のパッケージは削除されています。そのため、再起動が必要な場合、ロールバックと「これを再起動して再実行してください」というエラー メッセージが表示された後、ソフトウェアはインストールされなくなります。ユーザーが再起動してインストールを繰り返すと、問題なく動作します。

インストールの再起動と再開を自動化する必要があるため、ユーザーは実際に何もする必要はありません (もちろん、再起動に同意することは別として)。

レジストリの RunOnce キーにコマンドを書き込むと、再起動後に再度インストールを実行できますが、ドライバーのインストールを行う延期されたカスタム アクションで何が起こるかについて ForceReboot を調整するのは難しいと思います。また、再開されたインストールで何をすべきかを決定するのは難しいかもしれません。

ベスト プラクティスに関するアドバイスや潜在的な問題へのポインタは大歓迎です。

4

1 に答える 1

2

InstallInitializeの前またはInstallFinalizeの後のRemoveExistingProductsは、アクションを新しい製品の監査スクリプトに入れません。そのため、古い製品はアップグレードが完了する前に削除されます。

そのため、RemoveExisitngProducts の実行を InstallInitialize と InstallFinalize の間に配置することをお勧めします。このように、削除はスクリプト化された監査部分にあるため、再起動と再開が追跡されます。

ここでシステムの再起動プロパティを見て ください

于 2008-09-26T21:10:48.740 に答える