Bootstrap

NSIS 创建一键安装程序

nsis 安装redis 、mysql 、jdk navicat、 notepad++、

使用NSIS 创建一键安装程序 分为两步

  1. 下载 NSIS
  2. 编写 一键安装代码

最终版本

; 请求管理员权限运行安装程序
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 "ustze_install.exe"
InstallDir "D:\KDZT"
ShowInstDetails show
ShowUnInstDetails show



; 引入所需的 NSIS 库
!include "FileFunc.nsh"
!include "LogicLib.nsh"




; 安装 360zip 的部分
Section "Install 360zip"
; 设置 MySQL 的输出路径
SetOutPath $INSTDIR\360zip

; 复制 360zip 安装文件到安装目录
File /r "360zip\*.*"

 ; 运行 JDK 安装程序
    ExecWait '"$INSTDIR\360zip\360zip_setup.exe" /s'

SectionEnd




; 安装 notepad 的部分
Section "Install notepad"
; 设置 notepad 的输出路径
SetOutPath $INSTDIR\notepad


; 复制 notepad 安装文件到安装目录
File /r "notepad\*.*"

 ; 运行 JDK 安装程序
    ExecWait '"$INSTDIR\notepad\Notepad8.1.9.exe" /s'


SectionEnd



; 安装 Navicat15 的部分
Section "Install Navicat15"
; 设置 MySQL 的输出路径
SetOutPath $INSTDIR\Navicat15

; 复制 Navicat15 安装文件到安装目录
File /r "Navicat15\*.*"

 ; 运行 JDK 安装程序
    ExecWait '"$INSTDIR\Navicat15\navicat150_premium_cs_x64.exe" /s'


SectionEnd





; 安装 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




; 安装节
Section "安装 Redis"
    ; 创建安装目录
	SetOutPath $INSTDIR\Redis

    ; 复制 Redis 可执行文件及相关文件
    File /r "Redis\*.*"
   
    SetOverwrite ifnewer
	
	; 启动 Redis 服务
	ExecWait '"$INSTDIR\Redis\redis-server.exe" --service-install --service - name "RedisService" --config "$INSTDIR\redis.windows-service.conf"'    
    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



Section "安装与配置MySQL"
    ; 设置输出路径为安装目录
    SetOutPath $INSTDIR\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'

	; 安装服务
	
	ExecWait '"$INSTDIR\MySql\bin\mysqld" --install MySQL --defaults-file="$INSTDIR\MySql\my.ini"'
       
	Pop $0
    MessageBox MB_OK "MySQL 服务返回: $0" ; 显示返回值
    
	ExecWait '"net" start MySQL'
	
	
	 Pop $1
    MessageBox MB_OK "MySQL 服务返回: $1" ; 显示返回值


	File   "kdzt.sql"


	ExecWait '"mysql.exe" -u root -p kdzt123456. --defaults-file="$INSTDIR\MySql\my.ini"  < "kdzt.sql"'

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



1.18

; 请求管理员权限运行安装程序
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 "360zip.exe"
InstallDir "D:\KDZT"
ShowInstDetails show
ShowUnInstDetails show





; 引入所需的 NSIS 库
!include "FileFunc.nsh"
!include "LogicLib.nsh"







; 安装 360zip 的部分
Section "Install 360zip"
; 设置 MySQL 的输出路径
SetOutPath $INSTDIR\360zip

; 复制 360zip 安装文件到安装目录
File /r "360zip\*.*"

 ; 运行 JDK 安装程序
    ExecWait '"$INSTDIR\360zip\360zip_setup.exe" /s'

SectionEnd




; 安装 notepad 的部分
Section "Install notepad"
; 设置 notepad 的输出路径
SetOutPath $INSTDIR\notepad


; 复制 notepad 安装文件到安装目录
File /r "notepad\*.*"

 ; 运行 JDK 安装程序
    ExecWait '"$INSTDIR\notepad\Notepad8.1.9.exe" /s'


SectionEnd



; 安装 Navicat15 的部分
Section "Install Navicat15"
; 设置 MySQL 的输出路径
SetOutPath $INSTDIR\Navicat15

; 复制 Navicat15 安装文件到安装目录
File /r "Navicat15\*.*"

 ; 运行 JDK 安装程序
    ExecWait '"$INSTDIR\Navicat15\navicat150_premium_cs_x64.exe" /s'


SectionEnd





; 安装 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




; 安装节
Section "安装 Redis"
    ; 创建安装目录
	SetOutPath $INSTDIR\Redis

    ; 复制 Redis 可执行文件及相关文件
    File /r "Redis\*.*"
   
    SetOverwrite ifnewer
	
	; 启动 Redis 服务
	ExecWait '"$INSTDIR\Redis\redis-server.exe" --service-install --service - name "RedisService" --config "$INSTDIR\redis.windows-service.conf"'    
    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



Section "安装与配置MySQL"
    ; 设置输出路径为安装目录
    SetOutPath $INSTDIR\MySql
    ; 假设已经将免安装版MySQL文件预先解压到某个目录,这里直接复制到安装目录
    File /r "mysql-5.7.44\*" 

	
	
	; 配置 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'

	; 安装服务
	
	ExecWait '"$INSTDIR\MySql\bin\mysqld" --install MySQL --defaults-file="$INSTDIR\MySql\my.ini"'
       
	Pop $0
    MessageBox MB_OK "MySQL 服务返回: $0" ; 显示返回值
    
	ExecWait '"net" start MySQL'
	
	
	 Pop $1
    MessageBox MB_OK "MySQL 服务返回: $1" ; 显示返回值


	File   "kdzt.sql"


	ExecWait '"mysql.exe" -u root -p kdzt123456. --defaults-file="$INSTDIR\MySql\my.ini"  < "kdzt.sql"'

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


1.17



; 安装 360zip 的部分
Section "Install 360zip"
; 设置 MySQL 的输出路径
SetOutPath $INSTDIR\360zip

; 复制 360zip 安装文件到安装目录
File /r "360zip\*.*"

 ; 运行 JDK 安装程序
    ExecWait '"$INSTDIR\360zip\360zip_setup.exe" /s'

SectionEnd




; 安装 notepad 的部分
Section "Install notepad"
; 设置 notepad 的输出路径
SetOutPath $INSTDIR\notepad


; 复制 notepad 安装文件到安装目录
File /r "notepad\*.*"

 ; 运行 JDK 安装程序
    ExecWait '"$INSTDIR\notepad\Notepad8.1.9.exe" /s'


SectionEnd



; 安装 Navicat15 的部分
Section "Install Navicat15"
; 设置 MySQL 的输出路径
SetOutPath $INSTDIR\Navicat15

; 复制 Navicat15 安装文件到安装目录
File /r "Navicat15\*.*"

 ; 运行 JDK 安装程序
    ExecWait '"$INSTDIR\Navicat15\navicat150_premium_cs_x64.exe" /s'


SectionEnd




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
;