0
有時會發生,我的應用程序的某些文件被某些進程使用。例如,用戶打開應用程序日誌或類似的東西,忘記關閉它。這在安裝/升級/卸載時會導致一些錯誤。在這種情況下,我想知道哪些進程正在使用文件,並向用戶顯示一條消息,指出是否使用了文件。找出哪個進程阻止修改應用程序數據文件
Inno Setup有可能找出哪些進程阻止腳本修改文件?至少,當我試圖在代碼部分做到這一點。
有時會發生,我的應用程序的某些文件被某些進程使用。例如,用戶打開應用程序日誌或類似的東西,忘記關閉它。這在安裝/升級/卸載時會導致一些錯誤。在這種情況下,我想知道哪些進程正在使用文件,並向用戶顯示一條消息,指出是否使用了文件。找出哪個進程阻止修改應用程序數據文件
Inno Setup有可能找出哪些進程阻止腳本修改文件?至少,當我試圖在代碼部分做到這一點。
Inno Setup可以自動檢查安裝的文件是否被某些進程鎖定,並提供用戶自動關閉(以及稍後重新啓動)應用程序(自5.5.0起)。
確保CloseApplications
directive設置爲其默認值yes
。
雖然默認情況下只檢查*.exe,*.dll,*.chm
文件。如果您想檢查還包括其他或所有其他文件,修改CloseApplicationsFilter
directive:
[Setup]
; default
CloseApplications=yes
; check all files
CloseApplicationsFilter=*.*
如果你是一個代碼安裝某些文件,使用RegisterExtraCloseApplicationsResources
event function:
procedure RegisterExtraCloseApplicationsResources;
begin
RegisterExtraCloseApplicationsResource(False, ExpandConstant('{userappdata}\My Program.log'));
end;
有沒有辦法在整個文件夾上共享RegisterExtraCloseApplicationsResource? – lentinant
另外,在哪個版本中引入?我的編譯器(5.4.2)不能識別這個指令。 – lentinant
5.5.0用於'CloseApplications'。 5.5.2用於'RegisterExtraCloseApplicationsResources'。請參閱[Inno Setup修訂歷史記錄](http://www.jrsoftware.org/files/is5-whatsnew.htm)。但它並不重要,總是使用最新版本!特別是最新版本5.5.9修復了重要的安全問題。 –