在临时文件夹中创建一个文件夹



我正在尝试在临时文件夹中创建一个没有随机名称的文件夹。

以下是我尝试在临时文件夹中创建文件夹的方式。

if not DirExists(ExpandConstant('{%tmp}UtilitiesSDK')) then
CreateDir(ExpandConstant('{%tmp}UtilitiesSDK'));
Log('TempUtilitiesSDK Folder Has Been Created.');

我看了一下这个线程,但即使有%,不幸的是,它仍然没有创建文件夹。

脚本按预期编译和运行,但是即使文件夹说它在日志文件中也有,也不会创建,我知道日志文件会这么说,因为它也告诉了,但是,如果无法创建文件夹,

它不会崩溃吗? 或者如果存在 if 语句,则返回 false?

CreateDir()您必须一个接一个地创建目录,而不是一次创建目录结构。

if not DirExists(ExpandConstant('{tmp}Utilities')) then
CreateDir(ExpandConstant('{tmp}Utilities'));
if not DirExists(ExpandConstant('{tmp}UtilitiesSDK')) then
CreateDir(ExpandConstant('{tmp}UtilitiesSDK'));
if DirExists(ExpandConstant('{tmp}UtilitiesSDK')) then
Log('TempUtilitiesSDK Folder Has Been Created.') else
Log('TempUtilitiesSDK Folder ERROR : NOT Created.');

Inno Setup具有一次创建目录结构
的功能function ForceDirectories(Dir: string): Boolean;

例:

if not DirExists(ExpandConstant('{tmp}UtilitiesSDK')) then
ForceDirectories(ExpandConstant('{tmp}UtilitiesSDK'));

还请记住:

  • {tmp} 都与 Inno Setup Temp 文件夹 is-XXXXX有关.tmp C:\Users\...\AppData\Local\Temp\is-XXXXX.tmp
  • {%temp} 是用户临时文件夹
    C:\Users\...\AppData\Local\Temp

我认为你想要Windows Temp而不是InnoSetup的tmp

{tmp}: 安装程序或卸载使用的临时目录。这不是用户的 TEMP 环境变量的值。它是用户临时目录的子目录,由启动时安装程序或卸载创建(名称类似于"C:\WINDOWS\TEMP\IS-xxxxxx.tmp"(。当安装程序或卸载退出时,将删除此目录中的所有文件和子目录。在安装过程中,这主要用于提取要在 [Run] 部分中执行但在安装后不需要的文件。

所以我想你想做这样的想法:

if not DirExists(ExpandConstant('{%temp}UtilitiesSDK')) then
CreateDir(ExpandConstant('{%temp}UtilitiesSDK'));
Log('TempUtilitiesSDK Folder Has Been Created.');

相关内容

最新更新