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

如何基于命令行参数有条件地编译NSIS脚本?,nsis,Nsis,我试图通过外部传递版本号来概括安装文件。我希望能够做到这一点: makensis myscript.nsi parameter=value 然后读取脚本中的参数,以便使用相同的脚本生成不同版本的可执行文件。我找到了&,但它们似乎用于将命令行参数传递给生成的setup.exe。这是否可能,以及如何实现?您可以使用/D开关从中向全局定义的列表添加符号: makensis /DMyVersion="1.0.1" install.nsi 然后可以使用${}语法使用它们: !ifdef MyVersi

我试图通过外部传递版本号来概括安装文件。我希望能够做到这一点:

makensis myscript.nsi parameter=value

然后读取脚本中的参数,以便使用相同的脚本生成不同版本的可执行文件。我找到了&,但它们似乎用于将命令行参数传递给生成的setup.exe。这是否可能,以及如何实现?

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

makensis /DMyVersion="1.0.1" install.nsi
然后可以使用${}语法使用它们:

!ifdef MyVersion
    StrCpy $Version "${MyInstallerName}"
!else
    StrCpy $Version "1.0.0"
!endif

同样令人感兴趣的是本SO问题中讨论的GetVersion插件:

查看此答案链接的答案符合您的要求。我不打算投票结束这个问题,因为这个问题的标题和目标与你的大不相同。@DavidHall:有什么不同?安装程序名称是一个只能在编译时设置的属性!目标基本上是一样的,@Anders的可能重复我不确定搜索如何在NSIS中设置编译时参数的人会发现另一个问题——它没有提到任何类似“命令行”的术语。答案当然是这样的。我曾考虑在meta上询问关于如何做的意见,因为我觉得这个问题更好(或者至少比另一个更广泛有用),但它将是一个封闭的问题。