如何根据命令行参数有条件地编译NSIS脚本?

Rex*_*Rex 5 nsis

我试图通过外部传递版本号来概括设置文件.我希望能够这样做:

makensis myscript.nsi parameter=value
Run Code Online (Sandbox Code Playgroud)

然后读取脚本中的参数,以便使用相同的脚本生成不同版本的可执行文件.我找到了这个这个,但它们似乎是用于将命令行参数传递给生成的setup.exe.这有可能,怎么样?

Dav*_*all 6

您可以使用/ D开关从命令行向全局定义的列表添加符号:

makensis /DMyVersion="1.0.1" install.nsi
Run Code Online (Sandbox Code Playgroud)

然后您可以使用$ {}语法来使用它们:

!ifdef MyVersion
    StrCpy $Version "${MyInstallerName}"
!else
    StrCpy $Version "1.0.0"
!endif
Run Code Online (Sandbox Code Playgroud)

另外可能感兴趣的是这个SO问题中讨论的GetVersion插件:NSIS - 将EXE版本放入安装程序的名称