4

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 を使用しています。

4

2 に答える 2

3

Use the restartreplace flag at your file entry. From the reference:

When an existing file needs to be replaced, and it is in use (locked) by another running process, Setup will by default display an error message. This flag tells Setup to instead register the file to be replaced the next time the system is restarted (by calling MoveFileEx or by creating an entry in WININIT.INI). When this happens, the user will be prompted to restart their computer at the end of the installation process.

So using this flag won't cause the wizard to ask to terminate applications using the file but schedule the file update to the next reboot and prompt user to restart the computer at the installation end, what is in my opinion quite user friendly and commonly used.

于 2012-07-20T21:00:11.907 に答える
0

プロンプトを無効にするには、[セットアップ] で "CloseApplications=no" を設定する必要があります。ただし、後で置換が必要であると確信している場合は、[File] で restartplace フラグを使用する必要があります。

于 2014-12-15T09:02:17.857 に答える