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

kir*_*off 0 installation installer command-line nsis

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

"C:\Program Files\NSIS\makensis.exe" "D:\Produts\folder\Install\nsis\MyApp.nsi"
Run Code Online (Sandbox Code Playgroud)

这是有效的.默认情况下,这会生成非静默安装程序.要使用静默安装程序(仅使用命令行选项),我试过这个

"C:\Program Files\NSIS\makensis.exe" \S "D:\Produts\folder\Install\nsis\MyApp.nsi"
Run Code Online (Sandbox Code Playgroud)

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

我可以在doc中找到它

4.8.1.36 SilentInstall

normal | silent | silentlog指定安装程序是否应该是静默的.如果它是'silent'或'silentlog',所有具有SF_SELECTED标志的部分都安静地安装(你可以使用SectionSetFlags设置这个标志),安装程序本身没有屏幕输出(脚本仍然可以显示它想要的任何内容,使用MessageBox的/ SD指定静默安装程序的默认值.请注意,如果将其设置为"normal"并且用户在命令行上使用/ S(区分大小写)运行安装程序,则其行为就像使用了SilentInstall"silent"一样.注意:另请参见LogSet.

有关更多信息,请参见第4.12节.

所以我觉得被虐待了

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

尝试用-S而不是工作.

感谢致敬

zby*_*our 6

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

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

.onInit功能中:

Function .onInit
  !ifdef IsSilent
    SetSilent silent
  !endif
FunctionEnd
Run Code Online (Sandbox Code Playgroud)

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

makensis.exe /DIsSilent MyApp.nsi

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