如何使用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
相关产品推荐
相关产品推荐

