Inno setup “创新设置”;“删除后安装”;标志:如果文件被锁定会发生什么?

Inno setup “创新设置”;“删除后安装”;标志:如果文件被锁定会发生什么?,inno-setup,Inno Setup,我正在对一些临时文件使用deleteafterinstall标志,但是如果在Inno Setup installer完成时它们仍然被进程锁定,是否会计划稍后删除它们 文档中没有提到在这种情况下会发生什么: 删除后安装 指示安装程序照常安装文件,但 然后在安装完成(或中止)后将其删除。这 可用于提取程序所需的临时数据 在脚本的[Run]部分执行 此标志不会导致在过程中未替换的现有文件 要删除的安装 此标志不能与isreadme、regserver、regtypelib、, restartrepla

我正在对一些临时文件使用
deleteafterinstall
标志,但是如果在Inno Setup installer完成时它们仍然被进程锁定,是否会计划稍后删除它们

文档中没有提到在这种情况下会发生什么:

删除后安装

指示安装程序照常安装文件,但 然后在安装完成(或中止)后将其删除。这 可用于提取程序所需的临时数据 在脚本的[Run]部分执行

此标志不会导致在过程中未替换的现有文件 要删除的安装

此标志不能与isreadme、regserver、regtypelib、, restartreplace、sharedfile或UninsOverUninstall标志


我不确定你希望答案有多深刻的解释,但我认为最好的解释是跳入源代码。因此,所有具有指定标志的文件都将添加到集合中,在取消初始化设置时将迭代该集合。此时,集合为,并且对于该集合中的每个文件,都称为函数,该函数可选地禁用WOW64重定向(在本例中不重要),并调用Windows API函数,该函数不执行延迟删除。

您尝试过吗?InnoSetups帮助没有详细说明这一点,因此我猜通常的Inno行为将开始,并向用户显示一条错误消息。例如,对于resetreplace(),他们可以重新启动计算机,并详细说明这一点,因此我猜他们也会在手册中详细说明计划的删除。但是测试这个应该很容易。是的,我只是测试了一下,没有错误消息框,重启后文件也没有被删除。我有点惊讶。我希望
MoveFileEx
具有
MOVEFILE\u DELAY\u直到重新启动
,或者调用内置函数来延迟删除。好吧,要么你需要小心等待直到文件句柄被释放,要么你可以尝试在服务器上请求一个功能请求。