陷入同样的问题,下面是有关subst解决方法的更多详细信息,如评论和接受的答案中所述。
下面是一些precompile.bat文件的内容,用于将一些本地路径与A:驱动器号相关联
@echo off
REM NB: Removing any previous association to be sure new one will work
subst A: /D 1> NUL 2>&1
subst A: "%~dp0.."
并且内容有的postcompile.bat去关联到底
@echo off
subst A: /D 1> NUL 2>&1
NB1:小心,一旦关联,很难直接在.iss脚本中导航上面的路径,因为A:\..仍然A:\!(我陷入了这个问题,所以值得知道)。然后应直接与所有必需文件的最顶层文件夹建立关联precompile.bat。
NB2:我不知道是否可行提醒之前的任何关联并最终恢复它
这些步骤可以添加到.iss脚本中,如下所示:
[PreCompile]
Name: "precompile.bat"; Flags: cmdprompt redirectoutput
[PostCompile]
Name: "postcompile.bat"; Flags: cmdprompt redirectoutput
最后请注意,[PreCompile]and[PostCompile]部分将仅从 IDE 执行。它们不会从命令行执行(至少在 inno 5.5.9 中),我也属于这种情况......所以从命令行完整编译应该如下所示:
call "precompile.bat"
call "%ProgramFiles(x86)%\Inno Setup 5\ISCC.exe" "myscript.iss"
call "postcompile.bat"
注意:我认为调用Compil32.exe /cc "myscript.iss"(IDE 编译器)而不是ISCC.exe(命令行编译器)应该运行[PreCompile]和[PostCompile]部分,但在我的情况下,我必须将额外的/D选项传递给编译器,因此无法Compil32.exe直接调用。