无论如何要获取目录中的所有(或只是第一个)子文件夹?我正在尝试将我的文件安装到具有动态名称的子目录中。它不是 Inno Setup 可用的常量之一。有没有办法找到这个子目录名称?

最佳答案

好吧,要获取某个文件夹的第一个找到的子文件夹的名称,无论是哪个子文件夹,都可以使用以下函数:

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Code]
function TryGetFirstSubfolder(const Path: string; out Folder: string): Boolean;
var
  S: string;
  FindRec: TFindRec;
begin
  Result := False;
  if FindFirst(ExpandConstant(AddBackslash(Path) + '*'), FindRec) then
  try
    repeat
      if (FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY <> 0) and
        (FindRec.Name <> '.') and (FindRec.Name <> '..') then
      begin
        Result := True;
        Folder := AddBackslash(Path) + FindRec.Name;
        Exit;
      end;
    until
      not FindNext(FindRec);
  finally
    FindClose(FindRec);
  end;
end;

procedure InitializeWizard;
var
  S: string;
begin
  if TryGetFirstSubfolder('C:\Folder', S) then
    MsgBox('The first found subfolder is: ' + S, mbInformation, MB_OK);
end;

关于installation - Inno Setup 查找子文件夹,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24784031/

10-10 15:32