You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用NSIS制作支持多安装包的静默安装程序?

NSIS实现多安装包混合部署方案

实现逻辑

先完成指定链接安装包的下载+静默安装,全部执行成功后,触发本地安装包的手动运行流程,主程序本身可静默运行也可带简单交互提示。

前置依赖

无需额外安装第三方插件,使用NSIS自带的NSISdl插件完成下载即可。

完整示例脚本

!include "LogicLib.nsh"
Outfile "MultiInstaller.exe"
RequestExecutionLevel admin ; 申请管理员权限适配全系统安装场景
SilentInstall silent ; 主程序默认静默运行,可按需修改为交互模式

Section "核心执行逻辑"
    ; -------------------- 第一个远程静默安装包处理 --------------------
    StrCpy $0 "https://替换为你的第一个安装包下载地址.exe"
    StrCpy $1 "$TEMP\installer1.exe"
    ; 执行下载
    NSISdl::download $0 $1
    Pop $R0
    ${If} $R0 != "success"
        MessageBox MB_OK "安装包1下载失败"
        Abort
    ${EndIf}
    ; 静默安装,/S为NSIS类安装包的静默参数,其他格式包替换为对应参数
    ExecWait '"$1" /S' $R1
    ${If} $R1 != 0
        MessageBox MB_OK "安装包1安装失败"
        Abort
    ${EndIf}

    ; -------------------- 第二个远程静默安装包处理(按需保留/删除) --------------------
    StrCpy $0 "https://替换为你的第二个安装包下载地址.exe"
    StrCpy $1 "$TEMP\installer2.exe"
    NSISdl::download $0 $1
    Pop $R0
    ${If} $R0 != "success"
        MessageBox MB_OK "安装包2下载失败"
        Abort
    ${EndIf}
    ExecWait '"$1" /S' $R1
    ${If} $R1 != 0
        MessageBox MB_OK "安装包2安装失败"
        Abort
    ${EndIf}

    ; -------------------- 本地安装包手动运行处理 --------------------
    ; 方式1:本地安装包路径固定时直接启动
    ; Exec '"C:\预设路径\本地安装包.exe"'
    
    ; 方式2:本地路径不固定时弹出选择框让用户手动选择
    FileSelectFile "请选择本地待运行安装包" $2 "exe|*.exe|所有文件|*.*"
    ${If} $2 != ""
        Exec '"$2"' ; 无需等待本地安装完成就退出主程序,替换为ExecWait可等待运行结束
    ${EndIf}

    ; 可选:清理临时下载的安装包
    Delete "$TEMP\installer1.exe"
    Delete "$TEMP\installer2.exe"
SectionEnd

注意事项

  • 静默参数要和你下载的安装包格式匹配:NSIS制作的exe用/S,Inno Setup制作的exe用/verysilent,MSI包用msiexec /i 包路径 /qn,其他格式安装包自行替换对应静默参数
  • 若下载的安装包需要校验完整性,可以在下载完成后添加MD5校验逻辑,避免损坏包安装失败
  • 如果需要适配断点续传、大文件下载场景,可以将NSISdl替换为InetC插件,逻辑基本一致

内容的提问来源于stack exchange,提问作者BabuPC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 14:06:03