nsis 安装redis 、mysql 、jdk navicat、 notepad++、
使用NSIS 创建一键安装程序 分为两步
- 下载 NSIS
- 编写 一键安装代码
1.16脚本
; 请求管理员权限运行安装程序
RequestExecutionLevel admin
; 该脚本使用 HM VNISEdit 脚本编辑器向导产生
; 安装程序初始定义常量
!define PRODUCT_NAME "矿压5.2一键安装"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "ustze"
SetCompressor lzma
; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
!include "MUI.nsh"
; 引入文件操作和逻辑判断库
; MUI 预定义常量
!define MUI_ABORTWARNING
!define MUI_ICON "C:\Users\Administrator\Desktop\bitbug_favicon.ico"
; 欢迎页面
!insertmacro MUI_PAGE_WELCOME
; 组件选择页面
!insertmacro MUI_PAGE_COMPONENTS
; 安装目录选择页面
!insertmacro MUI_PAGE_DIRECTORY
; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES
; 安装完成页面
!insertmacro MUI_PAGE_FINISH
; 安装卸载过程页面
!insertmacro MUI_UNPAGE_INSTFILES
; 安装界面包含的语言设置
!insertmacro MUI_LANGUAGE "SimpChinese"
; 安装预释放文件
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; ------ MUI 现代界面定义结束 ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Auto_Install.exe"
InstallDir "D:\KDZT"
ShowInstDetails show
ShowUnInstDetails show
; 引入所需的 NSIS 库
!include "FileFunc.nsh"
!include "LogicLib.nsh"
; 安装 notepad 的部分
Section "Install notepad"
; 设置 MySQL 的输出路径
SetOutPath $INSTDIR\notepad
; 假设你的 MySQL 免安装文件在与 NSIS 脚本相同的目录中名为 MySql
; 复制 MySQL 免安装文件到安装目录
File /r "notepadd\*.*"
; 运行 JDK 安装程序
ExecWait '"$INSTDIR\notepad\Notepad8.1.9.exe" /s'
SectionEnd
; 安装 Navicat15 的部分
Section "Install Navicat15"
; 设置 Navicat15 的输出路径
SetOutPath $INSTDIR\Navicat15
; 假设你的 Navicat15 免安装文件在与 NSIS 脚本相同的目录中名为 MySql
; 复制 Navicat15 免安装文件到安装目录
File /r "Navicat15\*.*"
; 运行 Navicat15 安装程序
ExecWait '"$INSTDIR\Navicat15\navicat150_premium_cs_x64.exe" /s'
SectionEnd
; 安装 resp 的部分
Section "Install resp"
; 设置 resp 的输出路径
SetOutPath $INSTDIR\resp
File /r "resp\*.*"
; 运行 Navicat15 安装程序
ExecWait '"$INSTDIR\resp\resp.exe" /s'
SectionEnd
; 安装函数
Function Kuangya
; 设置 JDK 的输出路径
SetOutPath $INSTDIR\prod-api
; 假设你的 JDK 免安装文件在与 NSIS 脚本相同的目录中名为 JAVA\jdk
; 复制 JDK 免安装文件到安装目录
File /r "prod-api\*.*"
ExecWait '$INSTDIR\prod-api\ruoyi-admin.exe install'
; 显示成功信息
MessageBox MB_OK|MB_ICONINFORMATION "使用 WinSW 成功安装 矿压5.2 服务。"
; 启动 矿压5.2 服务
ExecWait '"$SYSDIR\sc.exe" start ruoyi-admin'
; 显示成功信息
MessageBox MB_OK|MB_ICONINFORMATION "矿压5.2 服务已成功安装并启动。"
FunctionEnd
; 安装节
Section "Kuangya"
Call Kuangya
SectionEnd
; 安装函数
Function Kuangya_nginx
; 设置 JDK 的输出路径
SetOutPath $INSTDIR\nginx
; 假设你的 JDK 免安装文件在与 NSIS 脚本相同的目录中名为 JAVA\jdk
; 复制 JDK 免安装文件到安装目录
File /r "nginx\*.*"
ExecWait '$INSTDIR\nginx\nginx-server.exe install'
; 显示成功信息
MessageBox MB_OK|MB_ICONINFORMATION "使用 WinSW 成功安装 矿压5.2 nginx 服务。"
; 启动 矿压5.2 服务
ExecWait '"$SYSDIR\sc.exe" start nginx-service'
; 显示成功信息
MessageBox MB_OK|MB_ICONINFORMATION "矿压5.2 nginx 服务已成功安装并启动。"
FunctionEnd
; 安装节
Section "Kuangya_nginx"
Call Kuangya_nginx
SectionEnd
1.15 redis 并启动安装脚本
; 请求管理员权限运行安装程序
RequestExecutionLevel admin
; 该脚本使用 HM VNISEdit 脚本编辑器向导产生
; 安装程序初始定义常量
!define PRODUCT_NAME "一键安装"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "ustze"
SetCompressor lzma
; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
!include "MUI.nsh"
; 引入文件操作和逻辑判断库
; MUI 预定义常量
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
; 欢迎页面
!insertmacro MUI_PAGE_WELCOME
; 组件选择页面
!insertmacro MUI_PAGE_COMPONENTS
; 安装目录选择页面
!insertmacro MUI_PAGE_DIRECTORY
; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES
; 安装完成页面
!insertmacro MUI_PAGE_FINISH
; 安装卸载过程页面
!insertmacro MUI_UNPAGE_INSTFILES
; 安装界面包含的语言设置
!insertmacro MUI_LANGUAGE "SimpChinese"
; 安装预释放文件
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; ------ MUI 现代界面定义结束 ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Redis.exe"
InstallDir "D:\KDZT"
ShowInstDetails show
ShowUnInstDetails show
; 安装程序名称
Name "Redis 安装程序"
OutFile "RedisInstaller.exe"
; 引入所需的 NSIS 库
!include "FileFunc.nsh"
!include "LogicLib.nsh"
; 安装部分
Section "安装 Redis"
SetOutPath $INSTDIR\Redis
; 复制 Redis 文件(假设 Redis 安装文件在 RedisFiles 目录下)
File /r "Redis\*.*"
SetOverwrite ifnewer
; 安装 Redis 服务
ExecWait '"$INSTDIR\Redis\redis-server.exe" --service-install "$INSTDIR\Redis\redis.windows-service.conf" --service-name "Redis" --loglevel verbose'
; 启动 Redis 服务
ExecWait '"$SYSDIR\sc.exe" start Redis'
; 显示成功信息
MessageBox MB_OK|MB_ICONINFORMATION "Redis 服务已成功安装并启动。"
SectionEnd
安装jdk 脚本 免安装版jdk
; 安装 JDK 的部分
Section "Install JAVA"
; 设置 JDK 的输出路径
SetOutPath $INSTDIR\JAVA
; 假设你的 JDK 免安装文件在与 NSIS 脚本相同的目录中名为 JAVA\jdk
; 复制 JDK 免安装文件到安装目录
File /r "JAVA\*.*"
; 配置 JAVA_HOME 环境变量
ExecWait 'setx JAVA_HOME "$INSTDIR\JAVA\jdk" /M'
; 配置 PATH 环境变量
; 首先获取当前的 PATH 环境变量
ReadEnvStr $0 PATH
StrCpy $1 "$INSTDIR\JAVA\jdk\bin"
StrCpy $2 "$0;$1"
ExecWait 'setx PATH "$2" /M'
; 显示 JDK 安装完成消息
MessageBox MB_OK "JDK 已安装,环境变量已配置。"
SectionEnd
exe 安装脚本
; 安装 notepad 的部分
Section "Install notepad"
; 设置 MySQL 的输出路径
SetOutPath $INSTDIR\notepad
; 假设你的 MySQL 免安装文件在与 NSIS 脚本相同的目录中名为 MySql
; 复制 MySQL 免安装文件到安装目录
File /r "notepad\*.*"
; 运行 JDK 安装程序
ExecWait '"$INSTDIR\notepad\Notepad8.1.9.exe" /s'
SectionEnd
; 安装 Navicat15 的部分
Section "Install Navicat15"
; 设置 MySQL 的输出路径
SetOutPath $INSTDIR\Navicat15
; 假设你的 MySQL 免安装文件在与 NSIS 脚本相同的目录中名为 MySql
; 复制 MySQL 免安装文件到安装目录
File /r "Navicat15\*.*"
; 运行 JDK 安装程序
ExecWait '"$INSTDIR\Navicat15\navicat150_premium_cs_x64.exe" /s'
SectionEnd
jar 、 naginx 安装
; 安装函数
Function Kuangya
; 设置 JDK 的输出路径
SetOutPath $INSTDIR\prod-api
; 假设你的 JDK 免安装文件在与 NSIS 脚本相同的目录中名为 JAVA\jdk
; 复制 JDK 免安装文件到安装目录
File /r "prod-api\*.*"
ExecWait '$INSTDIR\prod-api\ruoyi-admin.exe install'
; 显示成功信息
MessageBox MB_OK|MB_ICONINFORMATION "使用 WinSW 成功安装 矿压5.2 服务。"
; 启动 矿压5.2 服务
ExecWait '"$SYSDIR\sc.exe" start ruoyi-admin'
; 显示成功信息
MessageBox MB_OK|MB_ICONINFORMATION "矿压5.2 服务已成功安装并启动。"
FunctionEnd
; 安装节
Section "Kuangya"
Call Kuangya
SectionEnd
; 安装函数
Function Kuangya_nginx
; 设置 JDK 的输出路径
SetOutPath $INSTDIR\nginx
; 假设你的 JDK 免安装文件在与 NSIS 脚本相同的目录中名为 JAVA\jdk
; 复制 JDK 免安装文件到安装目录
File /r "nginx\*.*"
ExecWait '$INSTDIR\nginx\nginx-server.exe install'
; 显示成功信息
MessageBox MB_OK|MB_ICONINFORMATION "使用 WinSW 成功安装 矿压5.2 nginx 服务。"
; 启动 矿压5.2 服务
ExecWait '"$SYSDIR\sc.exe" start nginx-service'
; 显示成功信息
MessageBox MB_OK|MB_ICONINFORMATION "矿压5.2 nginx 服务已成功安装并启动。"
FunctionEnd
; 安装节
Section "Kuangya_nginx"
Call Kuangya_nginx
SectionEnd
以下为代码示例
; 请求管理员权限运行安装程序
RequestExecutionLevel admin
; 该脚本使用 HM VNISEdit 脚本编辑器向导产生
; 安装程序初始定义常量
!define PRODUCT_NAME "一键安装"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "admin"
SetCompressor lzma
; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
!include "MUI.nsh"
; MUI 预定义常量
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
; 欢迎页面
!insertmacro MUI_PAGE_WELCOME
; 组件选择页面
!insertmacro MUI_PAGE_COMPONENTS
; 安装目录选择页面
!insertmacro MUI_PAGE_DIRECTORY
; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES
; 安装完成页面
!insertmacro MUI_PAGE_FINISH
; 安装卸载过程页面
!insertmacro MUI_UNPAGE_INSTFILES
; 安装界面包含的语言设置
!insertmacro MUI_LANGUAGE "SimpChinese"
; 安装预释放文件
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; ------ MUI 现代界面定义结束 ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Setup.exe"
InstallDir "D:\KDZT"
ShowInstDetails show
ShowUnInstDetails show
; 安装 MySQL 的部分
Section "Install MySql"
; 设置 MySQL 的输出路径
SetOutPath $INSTDIR\MySql
; 假设你的 MySQL 免安装文件在与 NSIS 脚本相同的目录中名为 MySql
; 复制 MySQL 免安装文件到安装目录
File /r "MySql\*.*"
; 配置 MYSQL_HOME 环境变量
ExecWait 'setx MYSQL_HOME "$INSTDIR\MySql" /M'
; 配置 PATH 环境变量
ReadEnvStr $3 PATH
StrCpy $4 "$INSTDIR\MySql\bin"
StrCpy $5 "$3;$4"
ExecWait 'setx PATH "$5" /M'
; 显示 MySQL 安装完成消息
MessageBox MB_OK "MySQL 已安装,环境变量已配置。"
; 初始化 MySQL 数据目录
ExecWait '"$INSTDIR\MySql\bin\mysqld" --initialize-insecure --datadir="$INSTDIR\data"'
; 等待一段时间,确保 MySQL 服务启动成功(可根据实际情况调整等待时间)
Sleep 5000
; 初始化数据库
ExecWait '"$INSTDIR\MySql\bin\mysql.exe" -u root -p kdzt123456. < "$INSTDIR\MySql\Sql\kdzt.sql"'
IfErrors errorOccurred success
success:
MessageBox MB_OK "数据库已成功初始化并执行 SQL 文件。"
errorOccurred:
MessageBox MB_ICONSTOP "初始化数据库或执行 SQL 文件时出现错误,请检查错误日志。"
noSQLFile:
MessageBox MB_ICONSTOP "指定的 SQL 文件不存在。"
SectionEnd
; 安装节
Section "安装 Redis"
; 创建安装目录
SetOutPath $INSTDIR\Redis
; 复制 Redis 可执行文件及相关文件
File /r "Redis\*.*"
SetOverwrite ifnewer
; 安装 Redis 服务
SetOutPath $INSTDIR
ExecWait '"$INSTDIR\Redis - windows - service - install.exe" --service - name "RedisService" --port 6379'
; 启动 Redis 服务
ExecWait '"$SYSDIR\sc.exe" start RedisService'
SectionEnd
; 卸载节
Section "卸载 Redis"
; 停止 Redis 服务
ExecWait '"$SYSDIR\sc.exe" stop RedisService'
; 卸载 Redis 服务
ExecWait '"$INSTDIR\redis - windows - service - uninstall.exe" --service - name "RedisService"'
; 删除 Redis 安装目录
RMDir /r $INSTDIR
SectionEnd
; 安装 notepad 的部分
Section "Install notepad"
; 设置 MySQL 的输出路径
SetOutPath $INSTDIR\notepad
; 假设你的 MySQL 免安装文件在与 NSIS 脚本相同的目录中名为 MySql
; 复制 MySQL 免安装文件到安装目录
File /r "notepadd\*.*"
; 运行 JDK 安装程序
ExecWait '"$INSTDIR\notepad\Notepad8.1.9.exe" /s'
SectionEnd
; 安装 Navicat15 的部分
Section "Install Navicat15"
; 设置 MySQL 的输出路径
SetOutPath $INSTDIR\Navicat15
; 假设你的 MySQL 免安装文件在与 NSIS 脚本相同的目录中名为 MySql
; 复制 MySQL 免安装文件到安装目录
File /r "Navicat15\*.*"
; 运行 JDK 安装程序
ExecWait '"$INSTDIR\Navicat15\navicat150_premium_cs_x64.exe" /s'
SectionEnd
; 安装函数
Function Kuangya
; 设置 JDK 的输出路径
SetOutPath $INSTDIR\prod-api
; 假设你的 JDK 免安装文件在与 NSIS 脚本相同的目录中名为 JAVA\jdk
; 复制 JDK 免安装文件到安装目录
File /r "prod-api\*.*"
ExecWait '$INSTDIR\prod-api\ruoyi-admin.exe install'
IfErrors errorOccurred success
success:
MessageBox MB_OK "使用 WinSW 成功安装 矿压5.2 服务。"
Goto endFunction
errorOccurred:
MessageBox MB_ICONSTOP "使用 使用WinSW 安装 矿压5.2 服务时出现错误,请检查错误日志。"
endFunction:
FunctionEnd
; 安装节
Section "Kuangya"
Call Kuangya
SectionEnd
; 安装函数
Function Kuangya_nginx
; 设置 JDK 的输出路径
SetOutPath $INSTDIR\nginx
; 假设你的 JDK 免安装文件在与 NSIS 脚本相同的目录中名为 JAVA\jdk
; 复制 JDK 免安装文件到安装目录
File /r "prod-api\*.*"
ExecWait '$INSTDIR\nginx\nginx-server.exe install'
IfErrors errorOccurred success
success:
MessageBox MB_OK "使用 WinSW 成功安装 矿压5.2 nginx 服务。"
Goto endFunction
errorOccurred:
MessageBox MB_ICONSTOP "使用 使用WinSW 安装 矿压5.2 nginx 服务时出现错误,请检查错误日志。"
endFunction:
FunctionEnd
; 安装节
Section "Kuangya_nginx"
Call Kuangya_nginx
SectionEnd
REdis
; 请求管理员权限运行安装程序
RequestExecutionLevel admin
; 该脚本使用 HM VNISEdit 脚本编辑器向导产生
; 安装程序初始定义常量
!define PRODUCT_NAME "一键安装"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "ustze"
SetCompressor lzma
; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
!include "MUI.nsh"
; 引入文件操作和逻辑判断库
; MUI 预定义常量
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
; 欢迎页面
!insertmacro MUI_PAGE_WELCOME
; 组件选择页面
!insertmacro MUI_PAGE_COMPONENTS
; 安装目录选择页面
!insertmacro MUI_PAGE_DIRECTORY
; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES
; 安装完成页面
!insertmacro MUI_PAGE_FINISH
; 安装卸载过程页面
!insertmacro MUI_UNPAGE_INSTFILES
; 安装界面包含的语言设置
!insertmacro MUI_LANGUAGE "SimpChinese"
; 安装预释放文件
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; ------ MUI 现代界面定义结束 ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Redis.exe"
InstallDir "D:\KDZT"
ShowInstDetails show
ShowUnInstDetails show
; 安装程序名称
Name "Redis 安装程序"
OutFile "RedisInstaller.exe"
; 引入所需的 NSIS 库
!include "FileFunc.nsh"
!include "LogicLib.nsh"
; 安装部分
Section "安装 Redis"
; 创建安装目录
CreateDirectory $INSTDIR\Redis
; 复制 Redis 文件(假设 Redis 安装文件在 RedisFiles 目录下)
File /r "Redis\*.*"
SetOutPath $INSTDIR\Redis
SetOverwrite ifnewer
; 复制 Redis 配置文件(假设 redis.conf 在脚本同级目录)
File "Redis\redis.windows-service.conf"
SetOutPath $INSTDIR\Redis
SetOverwrite ifnewer
; 安装 Redis 服务
ExecWait '"$INSTDIR\Redis\redis-server.exe" --service-install "$INSTDIR\Redis\redis.windows-service.conf" --service-name "Redis" --loglevel verbose'
; 启动 Redis 服务
ExecWait '"$SYSDIR\sc.exe" start Redis'
; 显示成功信息
MessageBox MB_OK|MB_ICONINFORMATION "Redis 服务已成功安装并启动。"
SectionEnd