论坛风格切换切换到宽版
  • 3244阅读
  • 4回复

inno怎么全盘查找某个文件,包括隐藏文件夹和子目录? [复制链接]

上一主题 下一主题
离线z454892031
 

发帖
50
金钱
500
威望
50
只看楼主 倒序阅读 0 发表于: 2013-10-07
如题,请问inno怎么全盘查找某个文件,包括隐藏文件夹和子目录,并删除该文件所在的文件夹。该程序生成的文件夹名不是固定的。老虎大哥帮帮忙,网上找了下没查到
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 1 发表于: 2013-10-08
给你一个例子你自己去研究吧。

[Setup]
AppName=我的程序
AppVerName=我的程序 版本 1.5
DefaultDirName={pf}\我的程序
DefaultGroupName=我的程序

[Code]
var sDir: string;
  filefounded: boolean;

procedure RecursiveFileSearch(BeginDir, FilePattern: string);
var FR: TFindRec;
begin
  if FindFirst(BeginDir+'\'+FilePattern, FR) then begin  //搜索目录中的文件
      try
      repeat
        if FR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
          begin
          sDir:= BeginDir;
          filefounded:= true;
          Exit;
          end
      until not FindNext(FR);
      finally
        FindClose(FR);
    end;
  end;
  
  if FindFirst(BeginDir+'\*', FR) then begin   //搜索目录中的子目录
    try
      repeat
        if (FR.Attributes and FILE_ATTRIBUTE_DIRECTORY <> 0) and (FR.Name<>'.') and (FR.Name<>'..') then
            RecursiveFileSearch(BeginDir+'\'+FR.Name, FilePattern);      //在子目录中继续搜索文件
      until not FindNext(FR);
    finally
      FindClose(FR);
    end;
  end;
end;

procedure InitializeWizard ();
begin
sDir:= '';
filefounded:= false;
RecursiveFileSearch('E:\', '自定义窗口.iss');    // 开始搜寻的位置以及要搜寻的文件名
if filefounded then
  if MsgBox('找到文件在: ' + sDir + #10#13 + '你想要删除该文件夹吗?', mbConfirmation, MB_YESNO) = IDYES then
    DelTree(sDir, true, true, true);
end;
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 2 发表于: 2013-10-08
要搜寻的文件名可以是通配符。
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 3 发表于: 2013-10-08
如果你不能指定从什么地方开始搜寻,而是希望笼统搜索所有硬盘,可以参考这个:
http://bbs.hanzify.org/read-htm-tid-60402-ds-1-page-1.html#369157
离线z454892031

发帖
50
金钱
500
威望
50
只看该作者 4 发表于: 2013-10-08
谢谢老虎大哥,有事例就好办   我就去研究区了