我正在尝试在temp文件夹中创建一个没有随机名称的文件夹。
这是我尝试在temp文件夹中创建文件夹的方式。

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


我看了this线程,但是不幸的是,即使使用%,它仍然不会创建文件夹。脚本会按预期编译并运行,但是即使文件夹说它已经创建,也不会创建在日志文件中,我知道该日志文件会说,因为它也被告知,但是,如果无法创建该文件夹,它会崩溃吗?或如果存在if语句,则返回false?

最佳答案

使用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.');


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

例:

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


另外请记住:


{tmp}全部与Inno Setup Temp文件夹is-XXXXX.tmp有关。
C:\ Users \ ... \ AppData \ Local \ Temp \ is-XXXXX.tmp
{%temp}是用户的Temp文件夹
C:\ Users \ ... \ AppData \ Local \ Temp

10-07 19:09
查看更多