Nullsoft脚本安装系统(NSIS)安装程序 - 静默模式

时间:2013-01-21 19:00:22

标签: build installer nsis silent silent-installer

如何使Nullsoft Scriptable Install System(NSIS)安装程序无声?

来自维基百科:

  

“Nullsoft Scriptable Install System(NSIS),est un logiciellibrecontrôlableparscript,qui permetlacréationd'installateurspour Windows.IlaétéinitialementdéveloppéparNullsoft,lasociétécréatricedeWinamp.NSIS est une alternative alternative aux produits commerciaux,comme InstallShield。

     

NSIS编译器程序makensis将以下示例中的脚本编译为可执行安装程序。脚本中的每一行都包含一个命令。“

# Example script

Name "Example1"
OutFile "example1.exe"
InstallDir "$PROGRAMFILES\Example1"
Page Directory
Page InstFiles
Section
  SetOutPath $INSTDIR
  File ..\makensis.exe
SectionEnd  

1 个答案:

答案 0 :(得分:13)

命令行用法

1。 MakeNSIS用法

编译NSIS(.nsi)脚本或生成安装程序

makensis [option | script.nsi | - [...]]

实施例

makensis.exe myscript.nsi

2。安装程序使用

一些选项

  • / S以静默方式运行安装程序或卸载程序
  • / D设置默认安装目录($ INSTDIR),覆盖InstallDir和InstallerDirRegKey。它必须是命令行中使用的最后一个参数,并且不得包含任何引号,即使路径包含空格也是如此。仅支持绝对路径。

实施例

installer.exe /S

installer.exe /S /D=C:\Program Files\NSIS

无提示安装程序/卸载程序

  • 要检查安装程序是否安静,请使用IfSilent

  • 要以静音模式(用户交互,创建窗口)跳过一些内容,请使用跳转指令

实施例

IfSilent +2 0 
    MessageBox MB_OK|MB_ICONINFORMATION 'This is a "non silent" installer'

在此示例中,如果安装程序处于静默状态,则会显示消息框。 +2表示如果IfSilent为true,则跳过nex指令。 0表示如果IfSilent为假,则hat编译器应转到下一条指令。

  • 要以静默方式设置安装程序(只是一段时间),请在SetSilent方法中使用.onInit。对于静音模式,选项为silent,对于非静音模式,选项为normal

  • 设置安装程序| uninstaller silent,你也可以使用

    SilentInstall silent

    SilentUnInstall silent

  • 在静音模式下,不显示安装程序本身的所有屏幕。但是,可能会显示消息框和未标记为SF_SELECTED的所有其他屏幕。要使安装程序完全静音,请使用指令跳转(通常)或标记/ SD IDOK | IDCANCEL(OK | CANCEL消息框)。

    MessageBox MB_OK|MB_ICONINFORMATION "This is not a silent installer" /SD IDOK

此处,如果启用静音模式,则不会显示消息框,其行为与用户确定相同。 请注意那里的选项

MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "Application is running. Please close it first." /SD IDCANCEL  IDOK OK IDCANCEL CANCEL 
  • 如果应该以静默方式从用户收集某些信息,可以将更多选项传递给函数.onInit with GetOptions,

喜欢这里:

!include FileFunc.nsh
!insertmacro GetParameters
!insertmacro GetOptions

Function .onInit
  ${GetParameters} $R0
  ClearErrors
  ${GetOptions} $R0 /USERNAME= $0
FunctionEnd

<强>参考

NSIS silent install 1

NSIS silent install 2

NSIS silent install 3