找出哪个进程阻止修改应用程序数据文件

时间:2016-05-16 09:27:48

标签: inno-setup

有时它会发生,我的应用程序的某些文件被某些进程使用。例如,用户打开应用程序日志或类似的东西,并忘记关闭它。这会在安装/升级/卸载时导致一些错误。在这种情况下,我想知道什么进程正在使用文件,并向用户显示一条消息,指示文件已被使用。

在Inno Setup中是否有可能找出什么进程阻止脚本修改文件?至少,当我在“代码”部分尝试执行此操作时。

1 个答案:

答案 0 :(得分:5)

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