【问题标题】:How do I conditionally compile an NSIS script based on commandline parameters?如何根据命令行参数有条件地编译 NSIS 脚本?
【发布时间】:2011-11-30 12:04:02
【问题描述】:

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

makensis myscript.nsi parameter=value

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

【问题讨论】:

  • 链接的答案可以满足您的需求。我不会投票结束这个问题,因为问题的标题和目标与你的非常不同。
  • @DavidHall:有什么不同?安装程序名称是您只能在编译时设置的属性!目标几乎相同......
  • NSIS Installer Name 的可能副本
  • @Anders 我不确定搜索如何在 NSIS 中设置编译时间参数的人会发现另一个问题 - 它没有提到任何术语,如“命令行”。他们当然在答案中。我考虑过在 meta 上征求意见,因为我觉得这个问题更好(或者至少比另一个问题更有用),但它将是一个已关闭的问题。

标签: nsis


【解决方案1】:

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

makensis /DMyVersion="1.0.1" install.nsi

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

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

这个 SO 问题中讨论的 GetVersion 插件也可能令人感兴趣:NSIS - put EXE version into name of installer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-27
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    相关资源
    最近更新 更多