命令行NSIS脚本编译 - 静默选项

时间:2012-11-19 09:56:19

标签: command-line installer installation nsis

我想让我的安装程序保持沉默。我希望能够灵活地使安装程序保持静默或不依赖于命令行选项。在doc中,我发现这是为了启动NSIS脚本编译:

"C:\Program Files\NSIS\makensis.exe" "D:\Produts\folder\Install\nsis\MyApp.nsi"
这是有效的。默认情况下,这会生成非静默安装程序。要拥有静默安装程序(仅使用命令行选项),我尝试了这个

"C:\Program Files\NSIS\makensis.exe" \S "D:\Produts\folder\Install\nsis\MyApp.nsi"

但是\ S不是公认的选项。如何使用命令行选项使安装程序无声?

我可以在doc

中找到它
  

4.8.1.36 SilentInstall

     

normal | silent | silentlog指定安装程序是否应该   安静。如果它是'沉默'或'无声日志',那么所有部分都有   安静地安装SF_SELECTED标志(您可以设置此标志   使用SectionSetFlags),安装程序没有屏幕输出   本身(脚本仍然可以显示它想要的任何东西,使用   MessageBox的/ SD指定静默安装程序的默认值。注意   如果将其设置为“正常”并且用户运行安装程序   / S(区分大小写)在命令行上,它的行为就好像   使用了SilentInstall'沉默'。注意:另请参见LogSet。

     

有关详细信息,请参阅第4.12节。

让我感到被虐待

或者是否应该将一些指令添加到NSIS脚本中,以便编译可以接受/ S选项?

用-S尝试,但也没用。

谢谢和问候

2 个答案:

答案 0 :(得分:6)

/S选项适用于您的安装程序,而非makensis.exe。因此,您可以从命令行以静默方式运行安装程序: MyApp.exe /S

如果您希望构建安装程序始终保持静默,您可以使用以下技术:

.onInit函数中:

Function .onInit
  !ifdef IsSilent
    SetSilent silent
  !endif
FunctionEnd

然后使用/D选项构建安装程序以定义IsSilent常量:

makensis.exe /DIsSilent MyApp.nsi

这意味着,如果你使用上面的/D选项构建,安装程序将始终保持沉默;如果没有/D选项,默认情况下您的安装程序将是非静默的,您仍然可以从命令行MyApp.exe /S运行它以保持沉默。

答案 1 :(得分:0)

如果要从命令行静默编译NSI脚本,这与安装程序以静默方式运行不同。

在我的编译批处理脚本中,我使用:

c:\progra~1\nsis\makensis /V0 .\sample.nsi | findstr /b /r /c:"YouCantFindMe"

/V#选项会抑制所有输出但在编译器启动时仍包含功能区/横幅(请参阅NSIS命令行选项文档。通过“findstr”管理所有输出也会抑制输出。