在使用相对路径编译期间在 Inno Setup 预处理器中执行批处理文件

Gho*_*ost 5 inno-setup

我想从部分启动批处理文件[Files]。它适用于绝对路径,例如

[Files]         

#expr Exec("C:\batch.bat");
Run Code Online (Sandbox Code Playgroud)

但我怎样才能用相对路径启动它呢?我的批处理文件与 .iss 文件位于同一目录中。

我已经尝试过

#expr Exec("\Batch.bat");
Run Code Online (Sandbox Code Playgroud)

或者类似的东西

#expr Exec("{#SourceDataPath}\Batch.bat");
Run Code Online (Sandbox Code Playgroud)

#expr Exec(ExpandConstant("{#SourceDataPath}\Batch.bat"));
Run Code Online (Sandbox Code Playgroud)

但它只是说“未声明的标识符:ExpandConstant”。

但我尝试过的一切都不起作用。

Mar*_*ryl 4

使用SourcePath预处理器预定义变量

#expr Exec(SourcePath + "\Batch.bat");
Run Code Online (Sandbox Code Playgroud)

请注意,说您从该[Files]部分执行批处理文件并不正确。这样想可能会让你感到困惑。您正在预处理阶段执行批处理文件。除非您在进一步的预处理器指令中使用批处理文件的结果(我相信您不会),否则您实际上可以将调用放置Exec在脚本文件中的任何位置。因为我相信您的批处理文件仅生成文件,这些文件仅在预处理完整脚本后才发生的编译阶段使用。尽管在你放置的地方拨打电话是完全可以的。这只是为了让您了解幕后发生的事情。