如何在 NSIS 中创建输出所需的文件夹

How to create an output required folder in NSIS

我有一个 NSIS 脚本,它应该为我的程序构建一个安装程序。 它应该将 setup.exe 放入我定义的文件夹中:

!define INSTALLER_NAME "C:\Tools\NSIS\Frontend\setup.exe"
...
OutFile "${INSTALLER_NAME}"

只要在我执行此脚本时该文件夹已经存在,它就可以工作,否则我会收到“无法打开输出文件 错误 - 正在中止创建过程。

为了确保它存在,我在第一部分中包含了一个 CreateDirectory:

!define INSTALLER_FOLDER "C:\Tools\NSIS\Frontend"
...
Section -MainProgram
CreateDirectory "${INSTALLER_FOLDER}"
...
SectionEnd

但我仍然得到错误。我在 windows cmd 上启动这个 .nsi 脚本:

"[Path]\makensis.exe" "[Path]\[Script Name].nsi"

我没有在网上找到任何解决方案或替代文件夹创建命令

Section 中的代码在最终用户机器上执行,而不是在编译器内部执行。使用 !system:

!system 'mkdir "${INSTALLER_NAME}\.."'
OutFile "${INSTALLER_NAME}"