0

我想让我的安装程序保持沉默。我希望根据命令行选项灵活地使安装程序静音或不静音。在 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 不是一个公认的选项。如何使用命令行选项使安装程序静音?

我可以在文档中找到这个

4.8.1.36 静默安装

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

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

让我感到被虐待

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

用 -S 试过了,也没有用。

谢谢并恭祝安康

4

2 回答 2

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以使其静音。

于 2012-11-19T10:28:56.007 回答
0

如果您想从命令行静默编译 NSI 脚本,这与让安装程序静默运行不同。

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

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

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

于 2013-02-27T19:58:20.063 回答