上一页 | 目录 | 下一页

4.12 静默安装程序、卸载程序

静默安装在安装过程中不需要用户参与而且不显示用户界面。用户不会看到任何对话且不会被询问任何问题。这对于网络管理员希望不需要用户参与的安装或卸载一些程序,这样可以快速的对多台电脑执行操作。对于其他的开发者来说,把其他的安装程序整合到自己的安装程序并且把所有需要的信息收集到自己的安装程序而不是显示两个安装程序时非常有用的。

NSIS 安装程序和卸载程序都可以静默或非静默。当一个安装程序或卸载程序静默时,不是所有的回调函数都被调用。 .onGUIInit, .onGUIEnd,它们对应的卸载程序函数和任何涉及到特殊页面或页面类型的回调将不会被调用。

有几种方法来使得安装或卸载程序静默:

  1. SilentInstallSilentUninstall
  2. SetSilent
  3. 在程序命令行里加 /S 参数 (区分大小写)

要判断安装、卸载程序是否静默请使用 IfSilent

首先你需要确认你的安装程序是否真的需要静默模式,在每一个需要用户参与的命令或创建一个窗口命令之前你应该使用 IfSilent 来判断。 MessageBox 命令是在静默安装程序最常犯的,应该使用 /SD 开关来为静默安装程序指定一个默认的回答。如果你希望你的安装程序可以完全的静默你就应该使用这个开关。使所有内部的 NSIS 信息对话框都有一个静默安装的默认值。 silent.nsi 实例 演示了这个主题所有方面的问题。

因为安装目录选择页面在静默安装的时候不会显示,所以用户可以添加一个命令行选项来指定安装程序安装目录(也可以在非静默安装、卸载程序里使用)。要做到这一点,用户只需要使用 /D 开关象下面这样的例子:

foo.exe /S /D=C:\Program Files\Foo

如果你的安装程序在静默模式时需要更多的信息,你可以让你的用户在命令行里指定并在 .onInit 函数里进行处理。你可以使用 GetOptions

!include FileFunc.nsh
!insertmacro GetParameters
!insertmacro GetOptions

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

上面的例子将会把 /USERNAME= 后面的值复制到 $0。这样可以让用户在命令行指定必须的参数信息而不需要用户参与的用户界面。用户可以使用:

foo.exe /S /USERNAME=Bar /D=C:\Program Files\Foo

或:

foo.exe /S /USERNAME=带空格的字符串 /D=C:\Program Files\Foo

或:

foo.exe /S /USERNAME="带空格的字符串" /D=C:\Program Files\Foo

如果你的安装程序、卸载程序需要大量的信息并且你希望能静默安装,你应该允许用户建立一个应答文件,把需要的信息都写在里面。这样比把所有的信息都写到命令行里更好一些。

上一页 | 目录 | 下一页