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

And*_*ewE 4 inno-setup pascalscript

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

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

if not DirExists(ExpandConstant('{%tmp}\Utilities\SDK')) then
    CreateDir(ExpandConstant('{%tmp}\Utilities\SDK'));
    Log('Temp\Utilities\SDK Folder Has Been Created.');
Run Code Online (Sandbox Code Playgroud)

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

该脚本按预期编译并运行,但是该文件夹不会创建,即使它说它在日志文件中,

我知道日志文件会说,因为它也被告知,但是,如果无法创建文件夹,会不会崩溃?或者如果存在 if 语句则返回 false?

mos*_*o-x 5

随着CreateDir()您必须创建一个迪尔斯其他,而不是一个目录结构,在一次后。

if not DirExists(ExpandConstant('{tmp}\Utilities')) then
  CreateDir(ExpandConstant('{tmp}\Utilities'));
if not DirExists(ExpandConstant('{tmp}\Utilities\SDK')) then
  CreateDir(ExpandConstant('{tmp}\Utilities\SDK'));

if DirExists(ExpandConstant('{tmp}\Utilities\SDK')) then
   Log('Temp\Utilities\SDK Folder Has Been Created.') else
   Log('Temp\Utilities\SDK Folder ERROR : NOT Created.');
Run Code Online (Sandbox Code Playgroud)

Inno Setup 有一个功能可以一次性创建一个目录结构
function ForceDirectories(Dir: string): Boolean;

例子:

if not DirExists(ExpandConstant('{tmp}\Utilities\SDK')) then
   ForceDirectories(ExpandConstant('{tmp}\Utilities\SDK'));
Run Code Online (Sandbox Code Playgroud)

还要记住:

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