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\respFile /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 PATHStrCpy $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 PATHStrCpy $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 successsuccess: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 $INSTDIRExecWait '"$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 successsuccess:MessageBox MB_OK "使用 WinSW 成功安装 矿压5.2 服务。"Goto endFunctionerrorOccurred: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 successsuccess:MessageBox MB_OK "使用 WinSW 成功安装 矿压5.2 nginx 服务。"Goto endFunctionerrorOccurred: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\RedisSetOverwrite ifnewer; 复制 Redis 配置文件(假设 redis.conf 在脚本同级目录)File "Redis\redis.windows-service.conf"SetOutPath $INSTDIR\RedisSetOverwrite 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