Installation Inno安装程序查找子文件夹

Installation Inno安装程序查找子文件夹,installation,inno-setup,Installation,Inno Setup,是否仍然可以获取目录中的所有(或仅第一个子文件夹)?我正在尝试将文件安装到具有动态名称的子目录中。它不是Inno安装程序可用的常量之一。是否仍然可以找到此子目录名称?好的,要获取某个文件夹的第一个找到的子文件夹的名称,无论它是哪一个子文件夹,您可以使用以下函数: [Setup] AppName=My Program AppVersion=1.5 DefaultDirName={pf}\My Program [Code] function TryGetFirstSubfolder(const P

是否仍然可以获取目录中的所有(或仅第一个子文件夹)?我正在尝试将文件安装到具有动态名称的子目录中。它不是Inno安装程序可用的常量之一。是否仍然可以找到此子目录名称?

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

[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;
[设置]
AppName=我的程序
AppVersion=1.5
DefaultDirName={pf}\My程序
[守则]
函数TryGetFirstSubfolder(const Path:string;out Folder:string):布尔值;
变量
S:字符串;
FindRec:TFindRec;
开始
结果:=假;
如果FindFirst(ExpandConstant(AddBackslash(Path)+'*'),FindRec),则
尝试
重复
if(FindRec.Attributes和文件属性目录0)和
(FindRec.Name'.'和(FindRec.Name'.')然后
开始
结果:=真;
文件夹:=AddBackslash(Path)+FindRec.Name;
出口
结束;
直到
非FindNext(FindRec);
最后
FindClose(FindRec);
结束;
结束;
程序初始化;
变量
S:字符串;
开始
如果TryGetFirstSubfolder('C:\Folder',S),则
MsgBox('找到的第一个子文件夹是:'+S,mbInformation,MB_OK);
结束;

您希望按哪种模式搜索该文件夹?而且,第一个文件夹是一个相当宽泛的术语。首先是那种情况?我想这并不重要-我希望只有一个文件夹谢谢!请忽略我的其他评论