gpt4 book ai didi

inno-setup - 帕斯卡脚本: Check if dest directory is empty and only print yes'/no warning if so

转载 作者:行者123 更新时间:2023-12-03 04:58:41 25 4
gpt4 key购买 nike

我已经写了一个设置。在这个设置中什么也没有发生,因为我只专注于一个区域:“wpSelectDir”,用户可以在其中选择安装程序的安装目录。

现在我的代码片段应该检查所选目录中是否存在任何内容(任何其他文件夹、文件等)。如果是这样,如果用户仍想继续,则会收到警告,因为此时该目录中的所有内容都将被删除。如果用户只创建了一个新的空文件夹,他不应该收到警告,因为不会丢失任何内容。

我已经完成了代码片段,除了检查目录是否为空(我将其替换为“if 1=1 then”。

请看一下:

[Setup]
AppName=Testprogramm
AppVerName=Example
AppPublisher=Exxample
DefaultDirName={pf}\C
DefaultGroupName=C
Compression=lzma
SolidCompression=yes

[Code]
function NextButtonClick(CurPageID: Integer): Boolean;
begin
if CurPageID = wpSelectDir then // if user is clicked the NEXT button ON the select directory window; if1 begins here;
begin
if 1=1 then // if the directory is not empty; thx 4 help stackoverflow
begin // warning with yes and no
if MsgBox('The file contains data. This data will be removed permanently by continuing the setup?', mbConfirmation, MB_YESNO) = IDYES then //if 3 begins here
begin
Result := True;
end
else
begin
Result := False;
end;
end; // if2 ends here
end // not CurPageID but any other begins here
else
begin
Result := True;
end;
end;

我已经尝试过使用“if FileExists( ...”之类的函数,但我不能对任何文件说“. ”。此外,我没有成功使用 WizardDirValue 及其属性.

如果有人可以帮助我或给我提示,我将非常感激。

非常感谢,问候 C。

最佳答案

使用FindFirst/FindNext

示例:

function isEmptyDir(dirName: String): Boolean;
var
FindRec: TFindRec;
FileCount: Integer;
begin
Result := False;
if FindFirst(dirName+'\*', FindRec) then begin
try
repeat
if (FindRec.Name <> '.') and (FindRec.Name <> '..') then begin
FileCount := 1;
break;
end;
until not FindNext(FindRec);
finally
FindClose(FindRec);
if FileCount = 0 then Result := True;
end;
end;
end;

注意:如果目录不存在,此函数也会返回False

关于inno-setup - 帕斯卡脚本: Check if dest directory is empty and only print yes'/no warning if so,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21143447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com