首页 > 解决方案 > Inno Setup DelTree 不删除顶级文件夹

问题描述

我连续三个调用 DelTree()CurUninstallStepChanged()usPostUninstall这样的:

if IsDeleteAData then
begin
  Res:=DelTree(AppData+'\ADirName', true, true, true);
  Log('Delete '+AppData+'\ADirName result: '+IntToStr(Integer(Res)));
end;

if IsDeleteBData then
begin
  Res:=DelTree(AppData+'\BDirName', true, true, true);
  Log('Delete '+AppData+'\BDirName result: '+IntToStr(Integer(Res)));
end;

if IsDeleteCData then
begin
  Res:=DelTree(AppData+'\CDirName', true, true, true);
  Log('Delete '+AppData+'\CDirName result: '+IntToStr(Integer(Res)));
end;

A 和 B 删除所有应有的内容。但是,C 不会删除顶级目录(实际的CDirName),但会删除内容,如果CDirName为空,它将删除CDirName目录本身。

如果我启用日志记录,我得到的结果是当它不删除顶级目录时结果为 0。

它在 6.0.3 中执行此操作,现在已更新到 6.2.0,并且仍在执行此操作。有什么想法或方法可以深入挖掘吗?我过去从来没有遇到过问题DelTree()

我捕获了进程信息,它基本上只是说不能删除:

"Time of Day","Process Name","PID","Operation","Path","Result","Detail"
"7:35:00.0095154 PM","_iu14D2N.tmp","1616","CreateFile","C:\Users\testing\AppData\Roaming\CDirName","SUCCESS","Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened"
"7:35:00.0095290 PM","_iu14D2N.tmp","1616","QueryBasicInformationFile","C:\Users\testing\AppData\Roaming\CDirName","SUCCESS","CreationTime: 10/6/2021 7:20:47 PM, LastAccessTime: 10/6/2021 7:30:50 PM, LastWriteTime: 10/6/2021 7:28:54 PM, ChangeTime: 10/6/2021 7:28:54 PM, FileAttributes: RD"
"7:35:00.0095347 PM","_iu14D2N.tmp","1616","CloseFile","C:\Users\testing\AppData\Roaming\CDirName","SUCCESS",""
"7:35:00.0095902 PM","_iu14D2N.tmp","1616","CreateFile","C:\Users\testing\AppData\Roaming\CDirName","SUCCESS","Desired Access: Read Data/List Directory, Synchronize, Disposition: Open, Options: Directory, Synchronous IO Non-Alert, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened"
"7:35:00.0096079 PM","_iu14D2N.tmp","1616","QueryDirectory","C:\Users\testing\AppData\Roaming\CDirName\*","SUCCESS","Filter: *, 1: ."
"7:35:00.0096363 PM","_iu14D2N.tmp","1616","QueryDirectory","C:\Users\testing\AppData\Roaming\CDirName","SUCCESS","0: .., 1: desktop.ini, 2: Paint.lnk"
"7:35:00.0096876 PM","_iu14D2N.tmp","1616","CreateFile","C:\Users\testing\AppData\Roaming\CDirName\desktop.ini","SUCCESS","Desired Access: Read Attributes, Delete, Disposition: Open, Options: Non-Directory File, Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened"
"7:35:00.0097112 PM","_iu14D2N.tmp","1616","QueryAttributeTagFile","C:\Users\testing\AppData\Roaming\CDirName\desktop.ini","SUCCESS","Attributes: HS, ReparseTag: 0x0"
"7:35:00.0097230 PM","_iu14D2N.tmp","1616","<Unknown>","C:\Users\testing\AppData\Roaming\CDirName\desktop.ini","SUCCESS",""
"7:35:00.0097332 PM","_iu14D2N.tmp","1616","CloseFile","C:\Users\testing\AppData\Roaming\CDirName\desktop.ini","SUCCESS",""
"7:35:00.0098645 PM","_iu14D2N.tmp","1616","CreateFile","C:\Users\testing\AppData\Roaming\CDirName\Paint.lnk","SUCCESS","Desired Access: Read Attributes, Delete, Disposition: Open, Options: Non-Directory File, Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened"
"7:35:00.0098873 PM","_iu14D2N.tmp","1616","QueryAttributeTagFile","C:\Users\testing\AppData\Roaming\CDirName\Paint.lnk","SUCCESS","Attributes: A, ReparseTag: 0x0"
"7:35:00.0098956 PM","_iu14D2N.tmp","1616","<Unknown>","C:\Users\testing\AppData\Roaming\CDirName\Paint.lnk","SUCCESS",""
"7:35:00.0099040 PM","_iu14D2N.tmp","1616","CloseFile","C:\Users\testing\AppData\Roaming\CDirName\Paint.lnk","SUCCESS",""
"7:35:00.0099720 PM","_iu14D2N.tmp","1616","QueryDirectory","C:\Users\testing\AppData\Roaming\CDirName","NO MORE FILES",""
"7:35:00.0099817 PM","_iu14D2N.tmp","1616","CloseFile","C:\Users\testing\AppData\Roaming\CDirName","SUCCESS",""
"7:35:00.0100469 PM","_iu14D2N.tmp","1616","CreateFile","C:\Users\testing\AppData\Roaming\CDirName","SUCCESS","Desired Access: Read Attributes, Delete, Synchronize, Disposition: Open, Options: Directory, Synchronous IO Non-Alert, Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened"
"7:35:00.0100652 PM","_iu14D2N.tmp","1616","QueryAttributeTagFile","C:\Users\testing\AppData\Roaming\CDirName","SUCCESS","Attributes: RD, ReparseTag: 0x0"
"7:35:00.0100727 PM","_iu14D2N.tmp","1616","<Unknown>","C:\Users\testing\AppData\Roaming\CDirName","CANNOT DELETE",""
"7:35:00.0100840 PM","_iu14D2N.tmp","1616","CloseFile","C:\Users\testing\AppData\Roaming\CDirName","SUCCESS",""

然后我尝试添加另一个RemoveDirusDone但仍然给出:

"7:35:01.7108218 PM","_iu14D2N.tmp","1616","CreateFile","C:\Users\testing\AppData\Roaming\CDirName","SUCCESS","Desired Access: Read Attributes, Delete, Synchronize, Disposition: Open, Options: Directory, Synchronous IO Non-Alert, Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened"
"7:35:01.7108617 PM","_iu14D2N.tmp","1616","QueryAttributeTagFile","C:\Users\testing\AppData\Roaming\CDirName","SUCCESS","Attributes: RD, ReparseTag: 0x0"
"7:35:01.7108724 PM","_iu14D2N.tmp","1616","<Unknown>","C:\Users\testing\AppData\Roaming\CDirName","CANNOT DELETE",""
"7:35:01.7108875 PM","_iu14D2N.tmp","1616","CloseFile","C:\Users\testing\AppData\Roaming\CDirName","SUCCESS",""

标签: inno-setup

解决方案


推荐阅读