Создание папки в папке Temp
Я пытаюсь создать папку во временной папке, которая не имеет случайного имени.
Вот как я пытался создать папку внутри временной папки.
if not DirExists(ExpandConstant('{%tmp}\Utilities\SDK')) then
CreateDir(ExpandConstant('{%tmp}\Utilities\SDK'));
Log('Temp\Utilities\SDK Folder Has Been Created.');
Я посмотрел на эту тему, но даже с %
К сожалению, он все еще не создает папку.
Сценарий компилируется и запускается, как и ожидалось, однако папка не создается, хотя и говорит, что она есть в файле журнала,
Я понимаю, что в файле журнала будет указано, что, поскольку в нем также указано, что если папка не может быть создана, не произойдет ли сбой? или вернуть false, если присутствовал оператор if?
2 ответа
С CreateDir()
Вы должны создавать dir один за другим, а не структуру dir одновременно.
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 имеет функцию для одновременного создания структуры dir 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 \ это-XXXXX.tmp - {% temp} - папка пользователя Temp
C:\Users\...\AppData\Local\Temp
Я думаю, что вы хотите Windows Temp, а не tmp
от InnoSetup
{tmp}: временный каталог, используемый программой установки или удаления. Это не значение переменной окружения TEMP пользователя. Это подкаталог временного каталога пользователя, который создается программой установки или удаления при запуске (с именем, например, "C:\WINDOWS\TEMP\IS-xxxxx.tmp"). Все файлы и подкаталоги в этом каталоге удаляются при выходе из программы установки или удаления. Во время установки это в первую очередь полезно для извлечения файлов, которые должны быть выполнены в разделе [Run], но не нужны после установки.
Поэтому я думаю, что вы хотите сделать что-то вроде этого:
if not DirExists(ExpandConstant('{%temp}\Utilities\SDK')) then
CreateDir(ExpandConstant('{%temp}\Utilities\SDK'));
Log('Temp\Utilities\SDK Folder Has Been Created.');