1

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 がコマンド ラインで定義されていても、実行が定義の 2 番目のブロック (ACME) に渡されることです。

NSIS は初めてなので、これを処理するためのより良い方法があると確信しています。また、switch ステートメントを使用して複数の会社を定義したいと考えています。これを行うと、コンパイラは、このコードをセクションまたは関数に配置する必要があることを警告します。

この解決策を複雑にする可能性があることの 1 つは、2 つのパス プロセスでアンインストーラーに署名していることです: http://nsis.sourceforge.net/Signing_an_Uninstaller

NSIS チームとすべての貢献者に敬意を表します。InstallShield に戻ることはありません。

助けてくれてありがとう。

4

1 に答える 1