2016-05-16 12 views
0

アプリケーションの一部のファイルが一部のプロセスで使用されることがあります。たとえば、ユーザーはアプリケーションログなどを開き、閉じたことを忘れてしまいます。これにより、インストール/アップグレード/アンインストール中にエラーが発生します。そのような場合は、どのプロセスがファイルを使用しているかを調べ、そのファイルが使用されていることを示すメッセージをユーザーに表示したいと思います。アプリケーションデータファイルを変更できないプロセスを確認してください

Inno Setupでは、スクリプトがファイルを変更できないプロセスを確認することは可能ですか?少なくとも、私はコードセクションでこれをやろうとしています。

答えて

1

Inno Setupは、インストールされたファイルがいくつかのプロセスによってロックされているかどうかを自動的にチェックし、ユーザーに自動的に(5.5.0以降)アプリケーションを閉じて(後で再起動するように)指示します。

CloseApplications directiveがデフォルト値yesに設定されていることを確認してください。

デフォルトでは、*.exe,*.dll,*.chmファイルのみがチェックされますが、

procedure RegisterExtraCloseApplicationsResources; 
begin 
    RegisterExtraCloseApplicationsResource(False, ExpandConstant('{userappdata}\My Program.log')); 
end; 

:あなたはコードでいくつかのファイルをインストールしている場合

[Setup] 
; default 
CloseApplications=yes 
; check all files 
CloseApplicationsFilter=*.* 

は、RegisterExtraCloseApplicationsResources event functionを使用する:あなたは、他のか、他のすべてのファイルを確認したい場合は、CloseApplicationsFilter directive変更enter image description here

+0

フォルダ全体にRegisterExtraCloseApplicationsResourceを共有する方法はありますか? – lentinant

+0

また、どのバージョンで導入されましたか?私のコンパイラ(5.4.2)はこの指令を認識しません。 – lentinant

+0

'CloseApplications'の場合は5.5.0です。 'RegisterExtraCloseApplicationsResources'のための5.5.2。 [Inno Setupの改訂履歴](http://www.jrsoftware.org/files/is5-whatsnew.htm)を参照してください。しかし、それは本当に問題ではありません、常に最新のバージョンを使用!特に最新のバージョン5.5.9では重要なセキュリティ問題が修正されています。 –

関連する問題