我想让我的安装程序保持沉默。我希望能够灵活地使安装程序保持静默或不依赖于命令行选项。在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尝试,但也没用。
谢谢和问候
答案 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”管理所有输出也会抑制输出。