当我编译我的 nsis 脚本时,我想将文件 (config.json) 中的一些值读入一些变量中。我怎么可能做到这一点?
提前致谢。
该!include
命令可以包含任何文件(在编译时)放置在 nsis 脚本中的位置。但是包含的文件必须符合 nsis 语法(例如它应该!define
有一些值)。
该!execute
命令可以帮助您:如果您绝对需要处理 json 文件,您可以编写第三方批处理命令文件来预处理 json 文件并将其转换为合适的 nsis 文件。
您可以使用!define
传递一些可在编译时使用的值。例如,假设您在 nsis 源文件中有此代码:
!define PATHTOFILE "C:\thisfilewillbedeleted.ext"
Delete $PATHTOFILE
如果你想在编译时改变这个值,你可以用这种方式调用 nsis:
makensis /DPATHTOFILE="C:\otherfiletodelete.ext"
[编辑]
如果您有使用外部工具生成的 *.json 文件,并且您必须使用这种文件,我会建议您使用一些构建系统,例如ant
. 您可以build.xml
从 json 文件创建读取、解析数据,然后将这些数据写入*.nsh
文件。我认为它会比在 nsis 脚本中做这一切更好、更干净。
如果您只需要在运行时解析 json 文件,则可以使用!define
以下/file
选项:
!define /file OPTIONS json.txt
它将使用 json.txt 的内容定义 OPTIONS。
如果您想在编译时利用您的 json 文件来更改生成的 exe,那么您需要某种预编译器,这就是您实际正在做的事情。
您可以使用带有 /file 开关的 !searchparse 命令。
例子 :
# 在 filename.cpp 中搜索一行 '#define APP_VERSION "2.5"' 并将 ${VER_MAJOR} 设置为 2,${VER_MINOR} 设置为 5。
!searchparse /file filename.cpp `#define APP_VERSION "` VER_MAJOR `.` VER_MINOR `"`