0

シェル拡張機能を登録するインストーラーをNSISで作成しています。

アンインストールおよびアップグレード時に、explorer.exeが古い拡張機能をロックし、プロセスの強制終了-再開が除外されるため、古い拡張機能を削除/上書きすることはできません。

そこで、新しい拡張機能を別の名前で抽出し、古い拡張機能に削除のマークを付け(アンインストール/アップグレード)、PendingFileRenameOperationsレジストリキーを使用して新しい拡張機能の名前を元の名前(アップグレードのみ)に変更します。これまでのところ、これは正常に機能します。

問題は、PendingFileRenameOperationsは再起動時にのみ機能するため、起動時に新しいシェルコンポーネントを登録する必要があることです。再起動後にzippy32操作をスケジュールする方法はありますか?

ログオフ/ログオンもRunOnce操作をトリガーするため、 RunOnceでの.bat実行を介してこれを行うことに依存することはできません。

前もって感謝します。

4

1 に答える 1

0

この問題を解決するために私が見つけた最も簡単な方法は、関連するすべてのレジストリキーと値を削除するレジストリスクリプトを作成することです。(非)インストーラーでレジストリスクリプトを実行し、COMDLLの「起動時の削除」をスケジュールします。これを行うためのより良い方法があるかもしれませんが、私はまだそれを見つけていません。

于 2011-06-22T19:21:26.087 に答える