在 Inno Setup 中检查文件夹是否存在,如果存在则重命名新文件夹

问题描述 投票:0回答:1

我想制作一个安装程序,用于将包含文件的文件夹“解压”到特定位置 - 我使用 Inno Setup 向导完成了此操作,但存在一个问题,因为我想首先检查具有该名称的文件夹是否已存在,以及是否存在所以重命名新的:

检查文件夹

example
是否存在于
location
中 – 是,将新文件夹重命名为
example_2
并将其放入
location
– 否,将
example
放入
location

我在帮助文件中发现有一个函数

int DirExists
但没有示例等。而且我不知道如何正确使用它:(

inno-setup
1个回答
1
投票

使用脚本常量通过使用 if

DirExists
支持功能:

来实现唯一的目标路径解析
[Files]
Source: "subdir\*"; DestDir: "{code:GetUniquePath}";
[Code]

var
  UniqueName: string;

function GetUniquePath(Param: string): string;
var
  BasePath: string;
  I: Integer;
begin
  if UniqueName = '' then
  begin
    I := 2;
    BasePath := ExpandConstant('{app}\subdir');
    UniqueName := BasePath;
    while DirExists(UniqueName) do
    begin
      UniqueName := BasePath + '_' + IntToStr(I);
      Inc(I);
    end;
    Log('Unique destination path resolved to: ' + UniqueName);
  end;
  Result := UniqueName;
end;

上面的代码解析第一次调用时的路径(对于子文件夹中的第一个文件)。有些人可能更喜欢提前解决路径,如这个类似的问题所示:
在 Inno Setup 中选择一个目录来安装预定义集中的文件

© www.soinside.com 2019 - 2024. All rights reserved.