【问题标题】:Command line NSIS script compilation - silent option命令行 NSIS 脚本编译 - 静默选项
【发布时间】:2012-11-19 09:56:19
【问题描述】:

我想让我的安装程序静默。我希望根据命令行选项灵活地使安装程序静音或不静音。在文档中,我发现这是启动 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 试过了,也没用。

感谢和问候

【问题讨论】:

    标签: command-line installation nsis


    【解决方案1】:

    /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 运行它以使其静音。

    【讨论】:

    • 谢谢,这很有帮助。我应该把 .onInit 函数放在哪里?在 MyApp.nsi 的开头? .nsi 文件正在调用许多其他文件 (.nsh),其中包含部分和函数定义。如果我只在 onInit 函数中定义一次静默模式,静默模式是否适用于整个脚本和依赖项?谢谢!!
    • 我可以选择Function .onInit IfSilent +2 SetSilent silent FunctionEnd 吗?
    • .onInit 是安装程序回调函数,因此它将在安装程序运行的确切定义阶段自动调用。我想在哪里定义并不重要。当然它适用于整个安装程序。
    • 似乎当我有 cmd 行 makensis.exe MyApp.nsi 时,安装也是无声的
    • 从您的帖子中我了解到:如果我使用 "makensis.exe" "MyApp.nsi"(不带 \D)编译 nsis 脚本,那么我将默认安装非静默(使用 "MyApp.exe")和按需静默(使用 @987654337 @)。如果我用"makensis.exe" \D IsSilent "MyApp.nsi" 编译nsis 脚本,那么安装总是静默的。我错过了什么吗?
    【解决方案2】:

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

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

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

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

    【讨论】:

    猜你喜欢
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 2011-04-16
    • 2012-12-12
    相关资源
    最近更新 更多