【发布时间】:2013-03-30 03:57:55
【问题描述】:
我想通过将参数传递给 makensis 来控制我的 NSIS 安装程序的品牌:
makensis.exe /DCOMPANY_X=1 installer.nsi
以下是我的 NSI 文件中列出的前几行:
!ifdef ${COMPANY_X}
!define PRODUCT_NAME "Widget Pro"
!define PRODUCT_VERSION "v2.0"
!define PRODUCT_PUBLISHER "ACE Company"
!define PRODUCT_WEB_SITE "www.ace.com"
!define PRODUCT_COPYRIGHT "Copyright 2013 Ace"
!else
!define PRODUCT_NAME "Widget Maker"
!define PRODUCT_VERSION "v12.3"
!define PRODUCT_PUBLISHER "ACME CO"
!define PRODUCT_WEB_SITE "www.acme.com"
!define PRODUCT_COPYRIGHT "Copyright 2013 ACME"
!endif
我在整个脚本中使用这些定义。
我遇到的问题是,即使在命令行上定义了 COMPANY_X,执行也会传递到第二个定义块 (ACME)。
作为 NSIS 的新手,我确信有更好的方法来处理这个问题。我还想使用 switch 语句来定义多个公司。如果我这样做,编译器会警告我需要将此代码放在一个部分或函数中。
可能使解决方案复杂化的一件事是,我正在使用两遍过程签署我的 uinstaller: http://nsis.sourceforge.net/Signing_an_Uninstaller
向 NSIS 团队和所有贡献者致敬。我绝不会回到 InstallShield。
提前感谢您的帮助。
【问题讨论】:
标签: command-line-arguments nsis