nsis制作啟動Tomcat服務的exe安裝包教程


一. 准備工作

  下載nsis相關工具包,點擊此下載

    1. 安裝程序:nsis-2.46-setup.exe

    2. 編輯程序:cnisedit203.exe

    3. 幫助文檔:NSIS205幫助文檔.rar

    4. 第三方庫:ExecCmd.dll、AddPath.nsh、WriteEnvStr.nsh

 

二. 安裝nsis-2.4.6-setup.exe

  1. 安裝完后,右鍵nsi格式的文件,如果沒有出現Compile NSIS Script和Compile NSIS Script(Choose Compressor)兩個選項,

  可嘗試右鍵nsi格式文件---屬性---常規---更改打開方式為記事本。

   2. 將ExecCmd.dll復制到"NSIS安裝路徑\Plugins"下

  

三. 制作nsi打包腳本:ims1.0.0-jdk1.6.0_21&tomcat6.0.33.nsi

; Script generated by the HM NIS Edit Script Wizard.


;------------------------------常量定義-------------------------------

;定義產品名稱常量
!define PRODUCT_NAME "企業信息管理系統"

;定義產品版本常量
!define PRODUCT_VERSION "1.0.0"

;定義發布公司名稱常量
!define PRODUCT_PUBLISHER "ims"

;定義產品發布公司網址常量
!define PRODUCT_WEB_SITE "http://www.ims.com"

;定義反安裝鍵值常量
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"

;定義反安裝ROOT鍵值常量
!define PRODUCT_UNINST_ROOT_KEY "HKLM"

;定義開機自動啟動ROOT鍵值常量
!define PRODUCT_AUTORUN_ROOT_KEY "HKCU"

;定義開機自動啟動鍵值常量
!define PRODUCT_AUTORUN_KEY "Software\Microsoft\Windows\CurrentVersion\Run"

;定義系統訪問地址
!define URL "http://localhost:8080/ims/index.html"

;應用路徑常量
!define APP_CATALOG "app"

;資源路徑常量
!define RESOURCE_CATALOG "resource"

;目標路徑常量
!define TARGET_CATALOG "target"

;定義JDK資源存放路徑常量
!define JDK_RESOURCE_CATALOG "java\jdk1.6.0_21"

;定義TOMCAT的資源存放路徑常量
!define TOMCAT_RESOURCE_CATALOG "container\apache-tomcat-6.0.33"

;定義MYSQL的資源存放路徑常量
!define MYSQL_RESOURCE_CATALOG "db\mysql-server-5.1"

;定義數據存放路徑常量
!define DATA_RESOURCE_CATALOG "data"

;定義圖標存放路徑常量
!define ICON_RESOURCE_CATALOG "icon"

;定義JAVA_HOME常量常量
!define JAVA_HOME "$INSTDIR\${JDK_RESOURCE_CATALOG}"

;定義CATALINA_HOME常量常量
!define CATALINA_HOME "$INSTDIR\${TOMCAT_RESOURCE_CATALOG}"

;定義MYSQL_HOME常量常量
!define MYSQL_HOME "$INSTDIR\${MYSQL_RESOURCE_CATALOG}"




;------------------------------第三方庫導入-------------------------------

; MUI 1.67 compatible ------
!include "MUI.nsh"

;導入打包程序第三方庫
!include "third\AddPath.nsh"
!include "third\WriteEnvStr.nsh"


;------------------------------圖標定義-------------------------------

; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico"




;------------------------------安裝步驟向導界面定義-------------------------------

;歡迎頁面
!insertmacro MUI_PAGE_WELCOME

;授權頁面
!insertmacro MUI_PAGE_LICENSE "..\${RESOURCE_CATALOG}\licence.txt"

;目錄選擇頁面
!insertmacro MUI_PAGE_DIRECTORY

;安裝頁面
!insertmacro MUI_PAGE_INSTFILES

;完成頁面
!insertmacro MUI_PAGE_FINISH

;反安裝頁面
!insertmacro MUI_UNPAGE_INSTFILES

;語言選擇
!insertmacro MUI_LANGUAGE "SimpChinese"




;------------------------------打包后安裝文件名/輸出路徑/安裝路徑定義-------------------------------

;產品名稱及產品版本
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"

;輸出文件名稱
OutFile "..\${TARGET_CATALOG}\${PRODUCT_NAME}-${PRODUCT_VERSION}.exe"

;程序安裝路徑
InstallDir "$PROGRAMFILES\ims1.0.0"

;顯示安裝進度
ShowInstDetails show

;顯示反安裝進度
ShowUnInstDetails show



;------------------------------提示對話框定義-------------------------------

;安裝前提示
Function .onInit
   MessageBox MB_YESNO "請先確認該電腦上沒有安裝JDK、Apache Tomcat、Mysql軟件。是否繼續?" IDYES NoAbort
     Abort
   NoAbort:
FunctionEnd

;安裝失敗提示
Function .onInstFailed
    MessageBox MB_OK "安裝失敗,請檢查您的系統環境。"
FunctionEnd

;反安裝成功提示
Function un.onUninstSuccess
  HideWindow
  MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地從您的計算機移除。"
FunctionEnd

;反安裝提示
Function un.onInit
  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您確實要完全移除 $(^Name) ,其及所有的組件?" IDYES +2
  Abort
FunctionEnd



;------------------------------菜單以及注冊表信息注冊-------------------------------

;菜單注冊
Section -AdditionalIcons
  SetOutPath $INSTDIR
  ;WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
  CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "${URL}"
  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk" "$INSTDIR\uninst.exe"
  ;CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "${URL}" "" "$INSTDIR\icon\ims.ico"
SectionEnd


;注冊表注冊
Section -Post
  WriteRegStr ${PRODUCT_AUTORUN_ROOT_KEY} "${PRODUCT_AUTORUN_KEY}" "${PRODUCT_NAME}" "${CATALINA_HOME}\bin\runbat.vbs"
  WriteUninstaller "$INSTDIR\uninst.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd




;------------------------------資源復制打包-------------------------------

;將JDK_RESOURCE_CATALOG下的所有文件資源拷貝至安裝目錄下
Section "JDK_RESOURCE_COPY" SEC01
  sectionin 1
  sectionin RO
  SetOutPath "$INSTDIR\${JDK_RESOURCE_CATALOG}"
  SetOverwrite try
  File /r "..\${RESOURCE_CATALOG}\${JDK_RESOURCE_CATALOG}\*.*"
SectionEnd


;將TOMCAT_RESOURCE_CATALOG下的所有文件資源拷貝至安裝目錄下
Section "TOMCAT_RESOURCE_COPY" SEC02
  sectionin 1
  sectionin RO
  SetOutPath "$INSTDIR\${TOMCAT_RESOURCE_CATALOG}"
  SetOverwrite try
  File /r "..\${RESOURCE_CATALOG}\${TOMCAT_RESOURCE_CATALOG}\*.*"
SectionEnd


;將MYSQL_RESOURCE_CATALOG下的所有文件資源拷貝至安裝目錄下
Section "MYSQL_RESOURCE_COPY" SEC03
  sectionin 1
  sectionin RO
  SetOutPath "$INSTDIR\${MYSQL_RESOURCE_CATALOG}"
  SetOverwrite try
  File /r "..\${RESOURCE_CATALOG}\${MYSQL_RESOURCE_CATALOG}\*.*"

  ;設置初始化SQL文件路徑
  WriteINIStr "${MYSQL_HOME}\my.ini" mysqld "init-file" '"${MYSQL_HOME}\init.sql"'
  WriteINIStr "${MYSQL_HOME}\my.ini" mysqld "basedir" '"${MYSQL_HOME}"'
  WriteINIStr "${MYSQL_HOME}\my.ini" mysqld "datadir" '"$INSTDIR\${DATA_RESOURCE_CATALOG}\mysql"'
  FlushINI "${MYSQL_HOME}\my.ini"
SectionEnd


;將DATA_RESOURCE_COPY下的所有文件資源拷貝至安裝目錄下
Section "DATA_RESOURCE_COPY" SEC04
  sectionin 1
  sectionin RO
  SetOutPath "$INSTDIR\${DATA_RESOURCE_CATALOG}"
  SetOverwrite try
  File /r "..\${DATA_RESOURCE_CATALOG}\*.*"
SectionEnd


;將ICON_RESOURCE_COPY下的所有文件資源拷貝至安裝目錄下
Section "ICON_RESOURCE_COPY" SEC06
  sectionin 1
  sectionin RO
  SetOutPath "$INSTDIR\${ICON_RESOURCE_CATALOG}"
  SetOverwrite try
  File /r "..\${RESOURCE_CATALOG}\${ICON_RESOURCE_CATALOG}\*.*"
  CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "${URL}" "" "$INSTDIR\icon\ims.ico"
SectionEnd


;將APP_RESOURCE_COPY下的所有文件資源拷貝至安裝目錄下
Section "APP_RESOURCE_COPY" SEC07
  sectionin 1
  sectionin RO
  SetOutPath "$INSTDIR\${TOMCAT_RESOURCE_CATALOG}\webapps"
  SetOverwrite try
  File /r "..\${APP_CATALOG}\*.*"
SectionEnd



;------------------------------環境變量注冊及反注冊-------------------------------

;注冊環境變量
Section -EnvironmentVariables
  ;JDK安裝根路徑
  Push JAVA_HOME
  Push '${JAVA_HOME}'
  Call WriteEnvStr
  Push '${JAVA_HOME}\bin'
  Call AddToPath
  
  ;TOMCAT安裝根路徑
  Push CATALINA_HOME
  Push '${CATALINA_HOME}'
  Call WriteEnvStr
  Push '${CATALINA_HOME}\bin'
  Call AddToPath
  
  ;MySQL安裝根路徑
  Push MYSQL_HOME
  Push '${MYSQL_HOME}'
  Call WriteEnvStr
  Push '${MYSQL_HOME}\bin'
  Call AddToPath
SectionEnd



;反注冊環境變量
Function un.removeEnvPath
  Push JAVA_HOME
  Call un.DeleteEnvStr
  Push '${JAVA_HOME}\bin'
  Call un.RemoveFromPath

  Push CATALINA_HOME
  Call un.DeleteEnvStr
  Push '${CATALINA_HOME}\bin'
  Call un.RemoveFromPath

  Push MYSQL_HOME
  Call un.DeleteEnvStr
  Push '${MYSQL_HOME}\bin'
  Call un.RemoveFromPath
FunctionEnd




;------------------------------服務的安裝/啟動/停止/反安裝-------------------------------

;安裝並啟動后台服務
Section -Service
  Call InstallMySQLService
  Call InstallTomcatService
  
  Call startMySQLService
  Call startTomcatProcess
SectionEnd



;安裝TOMCAT服務
Function InstallTomcatService
  SetOutPath "$INSTDIR\${TOMCAT_RESOURCE_CATALOG}\bin"
  ExecCmd::exec /TIMEOUT=10000 "service.bat install"
FunctionEnd

;安裝MYSQL服務
Function InstallMySQLService
  ExecWait "$INSTDIR\${MYSQL_RESOURCE_CATALOG}\bin\mysqld -install"
FunctionEnd




;啟動TOMCAT進程
Function startTomcatProcess
  SetOutPath "${CATALINA_HOME}\bin"
  nsExec::Exec /TIMEOUT=120000 '"$SYSDIR\cscript.exe" "${CATALINA_HOME}\bin\runbat.vbs"'
FunctionEnd

;啟動MySQL服務
Function startMySQLService
  ExecCmd::exec /TIMEOUT=60000 "net start MySQL"
  Sleep 1500
  SetOutPath "$INSTDIR\${MYSQL_RESOURCE_CATALOG}\bin"
  Sleep 1500
  ExecCmd::exec /TIMEOUT=60000 "mysql.exe -uroot -p123456 <ims.sql"
FunctionEnd




;停止TOMCAT服務
Function un.stopTomcatService
  ExecCmd::exec /TIMEOUT=120000 "net stop Tomcat6"
FunctionEnd

;停止MySQL服務
Function un.stopMySQLService
  ExecCmd::exec /TIMEOUT=20000 "net stop MySQL"
FunctionEnd




;刪除TOMCAT服務
function un.removeTomcatService
  SetOutPath "$INSTDIR\${TOMCAT_RESOURCE_CATALOG}\bin"
  ExecCmd::exec /TIMEOUT=120000 "service.bat remove"
functionend

;刪除MySQL服務
function un.removeMySQLService
  ExecWait "$INSTDIR\${MYSQL_RESOURCE_CATALOG}\bin\mysqld -remove"
functionend

;------------------------------反安裝-------------------------------

Section Uninstall
  ExecCmd::exec /TIMEOUT=120000 "taskkill /im tomcat6.exe /f"

  Call un.stopTomcatService 
  Call un.stopMySQLService   
  
  Call un.removeTomcatService  
  Call un.removeMySQLService   
  
  Delete "$DESKTOP\${PRODUCT_NAME}.lnk"
  Delete "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk"
  Delete "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk"
  RMDir "$SMPROGRAMS\${PRODUCT_NAME}"

  Delete "$INSTDIR\${PRODUCT_NAME}.url"
  Delete "$INSTDIR\uninst.exe"
  RMDir /r "$INSTDIR"

  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
  DeleteRegValue ${PRODUCT_AUTORUN_ROOT_KEY} "${PRODUCT_AUTORUN_KEY}" "${PRODUCT_NAME}"
  
  Call un.removeEnvPath
  SetAutoClose true
SectionEnd
View Code


四. 編譯前准備

  1. 新建resource、target、script三個文件夾

  2. 將jdk1.6.0_21、tomcat6.0.33放置到resource文件夾下

  3. 創建licence.txt文件,放置到resource文件夾下

  4. 將ims1.0.0-jdk1.6.0_21&tomcat6.0.33.nsi放置到script文件夾下

  5. 在script下新建third文件夾,將AddPath.nsh、WriteEnvStr.nsh放置到該文件夾下

   

五. 編譯nsi腳本

  右鍵nsi腳本,選擇Compile NSIS Script進行編譯,最終在target目錄下生成exe安裝包。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM