一. 準備工作 下載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 SectionEndView 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安裝包。