Shell Extension を Windows Explorer に追加インストールするプログラム製品があります。C# で作成され、.NET Framework v4.0 を使用します。シェル拡張機能は、regasm.exe を使用したインストール中に Inno Setup によってインストールされます。アプリケーションの更新バージョンをインストールするまで、すべて正常に動作します。問題は、エクスプローラーのメモリにロードされているため、シェル拡張 dll を更新できないことです。Inno Setup をインストールする前に、次のメッセージが表示されます
インストーラーによって更新される必要があるファイルを使用するため、インストーラーは Windows エクスプローラーを終了する必要があると表示されます。 エクスプローラー プロセスを終了しますが、再度起動することはありません。それが私の最初の問題です。
実際には、ユーザーに強制的にエクスプローラーをシャットダウンさせたくありません。しかし、管理されたシェル dll をエクスプローラーのメモリからアンロードする方法がわかりません。regasm.exe でアンインストールしても dll がメモリに残ります。実際、既に作成されたインストール ソースを受け取っているため、このチェックが行われる場所を見つけることさえできません。
Inno Setup の Files-In-Use (IssProc.dll) アドインは役に立ちません。このアドインで Windows エクスプローラーを終了すると、エクスプローラーがすぐに再起動するためです。
どうすればこの問題を解決できますか? より良いユーザー エクスペリエンスでシェル拡張 dll を更新するにはどうすればよいですか? そして、使用中のファイルをチェックするコードがどこにあるのか、誰かが私にヒントを与えることができますか?
O とところで、私は Windows 7 x64 を使用しています。