我正在尝试在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?
答案 0 :(得分:4)
使用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'));
还请记住:
答案 1 :(得分:0)
我认为您需要Windows Temp,而不是InnoSetup中的tmp
{tmp}: 安装程序或卸载程序使用的临时目录。这不是用户的TEMP环境变量的值。它是用户临时目录的子目录,该目录由启动时的安装或卸载创建(名称类似“ C:\ WINDOWS \ TEMP \ IS-xxxxx.tmp”)。 退出安装程序或卸载时,将删除此目录中的所有文件和子目录。在安装过程中,这对于提取要在[运行]部分中执行但在执行后不需要的文件非常有用。安装。
所以我认为您想做这样的事情:
if not DirExists(ExpandConstant('{%temp}\Utilities\SDK')) then
CreateDir(ExpandConstant('{%temp}\Utilities\SDK'));
Log('Temp\Utilities\SDK Folder Has Been Created.');