Nsis製作啟動Tomcat服務的exe安裝包教程

来源:http://www.cnblogs.com/Mr-kevin/archive/2016/06/13/5580674.html
-Advertisement-
Play Games

一. 準備工作 下載nsis相關工具包,點擊此下載 1. 安裝程式:nsis-2.46-setup.exe 2. 編輯程式:cnisedit203.exe 3. 幫助文檔:NSIS205幫助文檔.rar 4. 第三方庫:ExecCmd.dll、AddPath.nsh、WriteEnvStr.nsh ...


一. 準備工作

  下載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打包腳本:oa1.0.0-jdk1.6.0_21&tomcat6.0.33.nsi

  1 ;-------------------------------常量定義-------------------------------
  2 ;定義產品名稱常量
  3 !define PRODUCT_NAME "辦公自動化系統"
  4 
  5 ;定義產品版本常量
  6 !define PRODUCT_VERSION "1.0.0"
  7 
  8 ;定義發佈公司名稱常量
  9 !define PRODUCT_PUBLISHER "oa"
 10 
 11 ;資源路徑常量
 12 !define RESOURCE_CATALOG "resource"
 13 
 14 ;目標路徑常量
 15 !define TARGET_CATALOG "target"
 16 
 17 ;定義JDK資源存放路徑常量
 18 !define JDK_RESOURCE_CATALOG "${RESOURCE_CATALOG}\jdk1.6.0_21"
 19 
 20 ;定義TOMCAT的資源存放路徑常量
 21 !define TOMCAT_RESOURCE_CATALOG "${RESOURCE_CATALOG}\apache-tomcat-6.0.33"
 22 
 23 ;定義JAVA_HOME常量常量
 24 !define JAVA_HOME "$INSTDIR\${JDK_RESOURCE_CATALOG}"
 25 
 26 ;定義CATALINA_HOME常量常量
 27 !define CATALINA_HOME "$INSTDIR\${TOMCAT_RESOURCE_CATALOG}"
 28 
 29 ;定義反安裝鍵值常量
 30 !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
 31 
 32 ;定義反安裝ROOT鍵值常量
 33 !define PRODUCT_UNINST_ROOT_KEY "HKLM"
 34 
 35 
 36 
 37 ;------------------------------第三方庫導入-------------------------------
 38 !include "MUI.nsh"
 39 
 40 ;導入打包程式第三方庫
 41 !include "third\AddPath.nsh"
 42 !include "third\WriteEnvStr.nsh"
 43 
 44 
 45 
 46 ;------------------------------圖標定義-------------------------------
 47 
 48 !define MUI_ABORTWARNING
 49 !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"
 50 !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico"
 51 
 52 
 53 
 54 ;------------------------------安裝步驟嚮導界面定義-------------------------------
 55 
 56 ;歡迎頁面
 57 !insertmacro MUI_PAGE_WELCOME
 58 
 59 ;授權頁面
 60 !insertmacro MUI_PAGE_LICENSE "..\${RESOURCE_CATALOG}\licence.txt"
 61 
 62 ;目錄選擇頁面
 63 !insertmacro MUI_PAGE_DIRECTORY
 64 
 65 ;安裝頁面
 66 !insertmacro MUI_PAGE_INSTFILES
 67 
 68 ;完成頁面
 69 !insertmacro MUI_PAGE_FINISH
 70 
 71 ;反安裝頁面
 72 !insertmacro MUI_UNPAGE_INSTFILES
 73 
 74 ;語言選擇
 75 !insertmacro MUI_LANGUAGE "SimpChinese"
 76 
 77 
 78 
 79 ;------------------------------打包後安裝文件名/輸出路徑/安裝路徑定義-------------------------------
 80 
 81 ;產品名稱及產品版本
 82 Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
 83 
 84 ;輸出文件名稱
 85 OutFile "..\${TARGET_CATALOG}\${PRODUCT_NAME}-${PRODUCT_VERSION}.exe"
 86 
 87 ;程式安裝路徑
 88 InstallDir "$PROGRAMFILES\${PRODUCT_PUBLISHER}${PRODUCT_VERSION}"
 89 
 90 ;顯示安裝進度
 91 ShowInstDetails show
 92 
 93 ;顯示反安裝進度
 94 ShowUnInstDetails show
 95 
 96 
 97 
 98 ;------------------------------提示對話框定義-------------------------------
 99 
100 ;安裝前提示
101 Function .onInit
102    MessageBox MB_YESNO "請先確認該電腦上沒有安裝JDK、Apache Tomcat軟體。是否繼續?" IDYES NoAbort
103      Abort
104    NoAbort:
105 FunctionEnd
106 
107 
108 ;反安裝提示
109 Function un.onInit
110   MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您確實要完全移除 $(^Name) ,其及所有的組件?" IDYES +2
111   Abort
112 FunctionEnd
113 
114 
115 
116 ;------------------------------菜單以及註冊表信息註冊-------------------------------
117 
118 ;菜單註冊
119 Section -AdditionalIcons
120   SetOutPath $INSTDIR
121   CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
122   CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk" "$INSTDIR\uninst.exe"
123 SectionEnd
124 
125 
126 ;註冊表註冊
127 Section -Post
128   WriteUninstaller "$INSTDIR\uninst.exe"
129   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
130   WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
131 SectionEnd
132 
133 
134 
135 
136 ;------------------------------資源複製打包-------------------------------
137 
138 ;將RESOURCE_CATALOG下的所有文件資源拷貝至安裝目錄下
139 Section "RESOURCE_COPY" SEC01
140   sectionin 1
141   sectionin RO
142   SetOutPath "$INSTDIR\${RESOURCE_CATALOG}"
143   SetOverwrite try
144   File /r "..\${RESOURCE_CATALOG}\*.*"
145 SectionEnd
146 
147 
148 
149 
150 ;------------------------------環境變數註冊及反註冊-------------------------------
151 
152 ;註冊環境變數
153 Section -EnvironmentVariables
154   ;JDK安裝根路徑
155   Push JAVA_HOME
156   Push '${JAVA_HOME}'
157   Call WriteEnvStr
158   Push '${JAVA_HOME}\bin'
159   Call AddToPath
160   
161   ;TOMCAT安裝根路徑
162   Push CATALINA_HOME
163   Push '${CATALINA_HOME}'
164   Call WriteEnvStr
165   Push '${CATALINA_HOME}\bin'
166   Call AddToPath
167 
168 SectionEnd
169 
170 
171 
172 ;反註冊環境變數
173 Function un.removeEnvPath
174   Push JAVA_HOME
175   Call un.DeleteEnvStr
176   Push '${JAVA_HOME}\bin'
177   Call un.RemoveFromPath
178 
179   Push CATALINA_HOME
180   Call un.DeleteEnvStr
181   Push '${CATALINA_HOME}\bin'
182   Call un.RemoveFromPath
183 
184 FunctionEnd
185 
186 
187 
188 ;------------------------------服務的安裝/啟動/停止/反安裝-------------------------------
189 
190 ;安裝並啟動後臺服務
191 Section -Service
192   Call InstallTomcatService
193   
194   Call startTomcatService
195 SectionEnd
196 
197 
198 ;安裝TOMCAT服務
199 Function InstallTomcatService
200   SetOutPath "${CATALINA_HOME}\bin"
201   ExecCmd::exec /TIMEOUT=10000 "service.bat install"
202 FunctionEnd
203 
204 
205 ;啟動TOMCAT服務
206 Function startTomcatService
207   SetOutPath "${CATALINA_HOME}\bin"
208   ExecCmd::exec /TIMEOUT=120000 "net start Tomcat6"
209 FunctionEnd
210 
211 
212 ;停止TOMCAT服務
213 Function un.stopTomcatService
214   ExecCmd::exec /TIMEOUT=120000 "net stop Tomcat6"
215 FunctionEnd
216 
217 
218 ;刪除TOMCAT服務
219 function un.removeTomcatService
220   SetOutPath "${CATALINA_HOME}\bin"
221   ExecCmd::exec /TIMEOUT=120000 "service.bat remove"
222 functionend
223 
224 
225 
226 ;------------------------------反安裝-------------------------------
227 
228 Section Uninstall
229   ExecCmd::exec /TIMEOUT=120000 "taskkill /im tomcat6.exe /f"
230 
231   Call un.stopTomcatService 
232   
233   Call un.removeTomcatService  
234 
235   Delete "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk"
236   RMDir "$SMPROGRAMS\${PRODUCT_NAME}"
237 
238   Delete "$INSTDIR\uninst.exe"
239   RMDir /r "$INSTDIR"
240 
241   DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
242   
243   Call un.removeEnvPath
244   SetAutoClose true
245 SectionEnd
View Code

 

四. 編譯前準備

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

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

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

  4. 將oa1.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安裝包。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 資料庫中的五種約束及其添加方法五大約束 五大約束的語法示例 ...
  • 第12章 可擴展設計的基本原則 前言: 隨著信息量的飛速增加,硬體設備的發展已經慢慢的無法跟上應用系統對處理能力的要求了。此時,我們如何來解決系統對性能的要求?只有一個辦法,那就是通過改造系統的架構體系,提升系統的擴展能力,通過組合多個低處理能力的硬體設備來達到一個高處理能力的系統,也就是說,我們必 ...
  • phpMyAdmin是一款以PHP為基礎,基於Web的MySQL/MariaDB資料庫管理工具。雖然已經存在著一些諸如Adminer的輕量級資料庫管理工具, 但是phpMyAdmin還是更加廣泛應用於網站管理員之中來進行各種MySQL/MariaDB的管理任務。它支持幾乎所有MySQL資料庫/表的相 ...
  • 在Linux系統上,一個檔案能不能被執行看的是有沒有可執行的那個許可權(x),不過,Linux系統上真正認識的可執行文件其實是二進位文件(binary program),例如/usr/bin/passwd 這些檔案就是二進位程式代碼。 怎麼產生一個可執行的二進位程式呢?首先寫程式,用字處理器寫完的程式 ...
  • EPEL 是什麼? EPEL (Extra Packages for Enterprise Linux,企業版Linux的額外軟體包) 是Fedora小組維護的一個軟體倉庫項目,為RHEL/CentOS提供他們預設不提供的軟體包。這個源相容RHEL及像CentOS和Scientific Linux這 ...
  • http://pan.baidu.com/s/1pLByvUF ...
  • 在使用第三方類庫時,使用cocoaPods是非常方便的,具體使用方法可以參考:CocoaPods安裝和使用教程 的安裝使用方法。今天討論的問題是,我在使用的時候遇到了一些問題:用cocoaPod sinstall完成所需要的第三方類庫之後,在要用的地方導入(#import)發現不提示,雖然自己手寫之 ...
  • 在Linux中要修改一個文件夾或文件的許可權我們需要用到linux chmod命令來做. 語法如下: 命令中各選項的含義為 操作符號可以是: 設置mode所表示的許可權可用下述字母的任意組合: X 只有目標文件對某些用戶是可執行的或該目標文件是目錄時才追加x 屬性。 實例 修改文件可讀寫屬性的方法 例如 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...