2016-05-16 48 views
0

有時會發生,我的應用程序的某些文件被某些進程使用。例如,用戶打開應用程序日誌或類似的東西,忘記關閉它。這在安裝/升級/卸載時會導致一些錯誤。在這種情況下,我想知道哪些進程正在使用文件,並向用戶顯示一條消息,指出是否使用了文件。找出哪個進程阻止修改應用程序數據文件

Inno Setup有可能找出哪些進程阻止腳本修改文件?至少,當我試圖在代碼部分做到這一點。

回答

1

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; 

enter image description here

+0

有沒有辦法在整個文件夾上共享RegisterExtraCloseApplicationsResource? – lentinant

+0

另外,在哪個版本中引入?我的編譯器(5.4.2)不能識別這個指令。 – lentinant

+0

5.5.0用於'CloseApplications'。 5.5.2用於'RegisterExtraCloseApplicationsResources'。請參閱[Inno Setup修訂歷史記錄](http://www.jrsoftware.org/files/is5-whatsnew.htm)。但它並不重要,總是使用最新版本!特別是最新版本5.5.9修復了重要的安全問題。 –

相關問題