使用Inno Setup 打包jdk、mysql、tomcat、webapp等为一个exe安装包(转)
之前一直都没涉及到打包安装方面的东西,都是另一个同事负责的,使用的工具(installshield)也比较高大上一点,可是后来他离职以后接受的同事也只能是在这个基础上做个简单的配置,然后打包,可是现在做的项目和原来的完全不一样以后就不能使用之前的了,只能是自己硬着头皮来弄个比较简单快捷的了。
切入正题,如标题所述使用inno setup来打包一个java web 相关的内容为一个exe,.net web类似,这个工具可以在网上直接找到下载,有汉化版的,并且里面也有帮助手册可以参考。把里面的一些敏感信息已经做了替代,这些都是可以根据你自己情况来修改的。下面直接上干货。
- 打包和发布的内容
 jdk(1.6/1.7/1.8)、mysql(5.5~)、tomcat(6.0/7.0/8.0)、ftp服务器、webapp、.Net服务、C++服务(请诸位无视项目中技术的复杂行,都是历史原因)
 打包脚本和bat脚本中涉及到,文件拷贝、ini配置文件修改、xml配置文件修改、服务安装停止启动、.net服务安装、环境变量配置、数据库初始化等,唯独缺少注册表和防火墙配置(%>_<%)
- 打包脚本
 1 ; 脚本由 Inno Setup 脚本向导 生成! 
 2 ; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档!
 3
 4 #define MyAppName "abc"
 5 #define MyAppVersion "1.0"
 6 #define MyAppPublisher "aaa"
 7 #define MyAppURL "http://www.abc.com/"
 8
 9 [Setup]
 10 ; 注: AppId的值为单独标识该应用程序。
 11 ; 不要为其他安装程序使用相同的AppId值。
 12 ; (生成新的GUID,点击 工具|在IDE中生成GUID。)
 13 AppId={{9E044575-9CD9-4751-B0BE-F6758BA94548}
 14 AppName={#MyAppName}
 15 AppVersion={#MyAppVersion}
 16 ;AppVerName={#MyAppName} {#MyAppVersion}
 17 AppPublisher={#MyAppPublisher}
 18 AppPublisherURL={#MyAppURL}
 19 AppSupportURL={#MyAppURL}
 20 AppUpdatesURL={#MyAppURL}
 21 DefaultDirName={pf}\{#MyAppName}
 22 DefaultGroupName=XX管理软件(abc)
 23 AllowNoIcons=yes
 24 OutputBaseFilename=setup
 25 Compression=lzma
 26 SolidCompression=yes
 27 [Files]
 28 ;拷贝tomcat
 29 Source:"Source\apache-tomcat-6.0.41\*";DestDir:"{app}\tomcat6.0";Flags:igNoreversion recursesubdirs createallsubdirs
 30 ;拷贝jdk
 31 Source:"Source\jdk1.6.0_43\*";DestDir:"{app}\jdk1.6";Flags:igNoreversion recursesubdirs createallsubdirs
 32 ;拷贝mysql
 33 Source:"Source\MySql5.5\*";DestDir:"{app}\MySql5.5";Flags:igNoreversion recursesubdirs createallsubdirs
 34 ;拷贝源代码
 35 Source:"Source\abc\*";DestDir:"{app}\tomcat6.0\webapps\ROOT";Flags:igNoreversion recursesubdirs createallsubdirs
 36 ;拷贝sdk
 37 Source:"Source\Sdk\*";DestDir:"{app}\Sdk";Flags:igNoreversion recursesubdirs createallsubdirs
 38 ;拷贝服务器
 39 Source:"Source\Server\*";DestDir:"{app}\Server";Flags:igNoreversion recursesubdirs createallsubdirs
 40 ;拷贝ftp
 41 Source:"Source\FtpServer\*";DestDir:"{app}\FtpServer";Flags:igNoreversion recursesubdirs createallsubdirs
 42 ;拷贝bat
 43 Source:"Source\*";DestDir:"{app}\";
 44 ;拷贝桌面快捷方式
 45 Source:"Source\xx系统.url";DestDir:"{userdesktop}\xx系统";
 46 [Languages]
 47 Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"
 48 [Icons]
 49 Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}"
 50 Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
 51 [INI]
 52 ;修改数据库配置文件
 53 Filename:"{app}\MySql5.5\my.ini";Section:"mysqld";Key:"basedir"; String:"{app}\MySql5.5"
 54 Filename:"{app}\MySql5.5\my.ini";Section:"mysqld";Key:"datadir"; String:"{app}\MySql5.5\data"
 55 Filename:"{app}\MySql5.5\my.ini";Section:"mysqld";Key:"port"; String:"3308"
 56 Filename:"{app}\MySql5.5\my.ini";Section:"client";Key:"port"; String:"3308"
 57 ;修改服务器配置文件
 58 Filename:"{app}\Server\init.ini";Section:"RegAddr";Key:"port"; String:"5556"
 59 Filename:"{userdesktop}\xx系统.url";Section:"InternetShortcut";Key:"URL"; String:"http://127.0.0.1:7070/"
 60 [Run]
 61 ;修改tomcat配置文件
 62 Filename:"{app}\loading.bat";AfterInstall:ConfigXml(ExpandConstant('{app}\tomcat6.0\conf\server.xml'),'/Server/Service/Connector','port','7070')
 63 ;修改web数据库连接配置文件
 64 Filename:"{app}\loading.bat";AfterInstall:ConfigXml(ExpandConstant('{app}\tomcat6.0\webapps\ROOT\META-INF\Context.xml'),'/Context/Resource','password','123456')
 65 Filename:"{app}\loading.bat";AfterInstall:ConfigXml(ExpandConstant('{app}\tomcat6.0\webapps\ROOT\META-INF\Context.xml'),'/Context/Resource','url','jdbc:mysql://127.0.0.1:3308/abc?characterEncoding=UTF-8')
 66 ;修改FTP配置文件
 67 Filename:"{app}\loading.bat";AfterInstall:ConfigXml(ExpandConstant('{app}\FtpServer\FileZilla Server.xml'),'/FileZillaServer/Users/User','Name','admin')
 68 Filename:"{app}\loading.bat";AfterInstall:ConfigXml2(ExpandConstant('{app}\FtpServer\FileZilla Server.xml'),'/FileZillaServer/Users/User/Option[0]','e10adc3949ba59abbe56e057f20f883e')
 69 Filename:"{app}\loading.bat";AfterInstall:ConfigXml(ExpandConstant('{app}\FtpServer\FileZilla Server.xml'),'/FileZillaServer/Users/User/Permissions/Permission','Dir',ExpandConstant('{app}\tomcat6.0\webapps\ROOT\SystemFile'))
 70 ;修改服务配置文件
 71 Filename:"{app}\loading.bat";AfterInstall:ConfigXml(ExpandConstant('{app}\Sdk\abc.config'),'/configuration/appSettings/add[1]','value','127.0.0.1')
 72 Filename:"{app}\loading.bat";AfterInstall:ConfigXml(ExpandConstant('{app}\Sdk\abc.config'),'/configuration/appSettings/add[2]','value','5556')
 73 Filename:"{app}\loading.bat";AfterInstall:ConfigXml(ExpandConstant('{app}\Sdk\abc.config'),'/configuration/appSettings/add[3]','value','127.0.0.1')
 74 Filename:"{app}\loading.bat";AfterInstall:ConfigXml(ExpandConstant('{app}\Sdk\abc.config'),'/configuration/appSettings/add[4]','value','7070')
 75 Filename:"{app}\install.bat";Description:"正在启动或配置相关程序";
 76 [UninstallRun]
 77 Filename:"{app}\uninstall.bat";
 78 [UninstallDelete]
 79 Type:filesandordirs;Name:"{app}\Server"
 80 Type:filesandordirs;Name:"{app}\MySql5.5"
 81 Type:filesandordirs;Name:"{app}\Sdk"
 82 Type:filesandordirs;Name:"{app}\tomcat6.0"
 83 Type:files;Name:"{app}\InstallUtil.InstallLog"
 84 [Code]
 85 procedure ConfigXml2(xmlPath:String;xPath:String;innerText:String);
 86 var
 87 XMLDocument,XMLRoot,XMLNode:Variant;
 88 begin
 89 try
 90 XMLDocument := CreateOleObject('MSXML2.DOMDocument');
 91 XMLDocument.async := False;
 92 XMLDocument.resolveExternals := False;
 93 XMLDocument.load(xmlPath);
 94 XMLRoot := XMLDocument.documentElement;
 95
 96 XMLNode:=XMLRoot.SelectSingleNode(xPath);
 97 XMLNode.Text:=innerText;
 98 XMLDocument.Save(xmlPath);
 99 except
 100 MsgBox('xml error', mbInformation, mb_Ok);
 101 end;
 102 end;
 103 procedure ConfigXml(xmlPath:String;xPath:String;attrName:String;attrValue:String);
 104 var
 105 XMLDocument,XMLRoot,XMLNode:Variant;
 106 begin
 107 try
 108 XMLDocument := CreateOleObject('MSXML2.DOMDocument');
 109 XMLDocument.async := False;
 110 XMLDocument.resolveExternals := False;
 111 XMLDocument.load(xmlPath);
 112 XMLRoot := XMLDocument.documentElement;
 113
 114 XMLNode:=XMLRoot.SelectSingleNode(xPath);
 115 XMLNode.Attributes.GetNamedItem(attrName).Value:=attrValue;
 116 XMLDocument.Save(xmlPath);
 117 except
 118 MsgBox('xml error', mbInformation, mb_Ok);
 119 end;
 120 end; 
- 打包脚本调用的bat安装脚本
 @echo off 
 title 运维系统正在安装中,请不要手动关闭
 color 0a
 echo jdk 环境变量
 reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v JAVA_HOME /t REG_EXPAND_SZ /d "%cd%\jdk1.6" /f
 echo tomcat 环境变量
 reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v CATALINA_HOME /t REG_EXPAND_SZ /d "%cd%\tomcat6.0" /f
 echo 系统环境变量
 reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v "PATH" /d "%PATH%;%cd%\jdk1.6\bin;%cd%\tomcat6.0\bin;" /f
 echo 启动mysql并更新密码
 "%cd%\MySql5.5\bin\mysqld.exe" --install "abcMysql" --defaults-file="%cd%\MySql5.5\my.ini"
 net start abcMysql
 sc config abcMysql start=auto
 ping -n 30 127.1>nul
 "%cd%\MySql5.5\bin\mysql.exe" --defaults-file="%cd%\MySql5.5\my.ini" -u root -e "UPDATE mysql.user SET Password=old_password('123456') WHERE User='root' or User='';"
 "%cd%\MySql5.5\bin\mysql.exe" --defaults-file="%cd%\MySql5.5\my.ini" -u root -e "FLUSH PRIVILEGES;"
 echo 初始化mysql数据库
 "%cd%\MySql5.5\bin\mysql.exe" -uroot -p123456 < "%cd%\tomcat6.0\webapps\ROOT\abc.sql"
 net stop abcMysql
 net start abcMysql
 echo 安装ftp
 "%cd%\FtpServer\FileZilla server.exe" /install auto
 "%cd%\FtpServer\FileZilla server.exe" /start
 echo 安装服务器
 sc create abcMessageService binpath= "%cd%\Server\Server.exe" displayname= "abcMessageService" start= auto
 Net Start abcMessageService
 echo 启动tomcat
 set JAVA_HOME=%cd%\jdk1.6
 set CATALINA_HOME=%cd%\tomcat6.0
 set CATALINA_BASE=%cd%\tomcat6.0
 cd .\tomcat6.0\bin
 call service.bat install
 sc config abcTomcat6 start=auto
 net start abcTomcat6
 cd ..\..\
 echo 安装服务
 %SystemRoot%\Microsoft.NET\Framework\v2.0.50727\installutil.exe "%cd%\Sdk\abc.exe"
 Net Start abcService
 sc config abcService start=auto
 exit 
- 打包脚本调用的bat卸载脚本
 @echo off 
 title abc系统正在卸载中,请不要手动关闭
 color 0a
 echo 删除环境变量
 reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v JAVA_HOME /f
 reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v CATALINA_HOME /f
 echo 停止并删除tomcat
 net stop abcTomcat6
 cd .\tomcat6.0\bin
 call service.bat remove
 cd ..\..\
 echo 停止并删除mysql
 net stop abcMysql
 sc delete abcMysql
 echo 停止并卸载FTP
 "%cd%\FtpServer\FileZilla server.exe" /stop
 "%cd%\FtpServer\FileZilla server.exe" /uninstall
 echo 卸载注册服务器
 Net Stop abcMessageService
 sc delete abcMessageService
 echo 卸载运维服务
 Net Stop abcService
 %SystemRoot%\Microsoft.NET\Framework\v2.0.50727\installutil.exe -u "%cd%\Sdk\abc.exe"
 sc delete abcService
 exit 
- 打包脚本调用的bat等待脚本
@echo off 
 echo pause;
- 其他相关
 1.建议把要打包的内容都放在同一个目录下面
 2.自己新建一个ie网站快捷方式,用记事本打开以后修改成自己app的连接地址
 3.这个ftp是使用的FileZilla,配置文件中的密码是标准md5加密
 4.代码里面的东西可以根据个人项目的实际情况做适当的调整。
- 居然第一篇文章是写的打包相关,我也是醉了,只是希望能够帮助到一些需要的人,高手请飘过~
使用Inno Setup 打包jdk、mysql、tomcat、webapp等为一个exe安装包(转)的更多相关文章
- 使用Inno Setup 打包jdk、mysql、tomcat、webapp等为一个exe安装包
		之前一直都没涉及到打包安装方面的东西,都是另一个同事负责的,使用的工具(installshield)也比较高大上一点,可是后来他离职以后接受的同事也只能是在这个基础上做个简单的配置,然后打包,可是现在 ... 
- Qt之程序发布以及打包成exe安装包
		一.简述 Qt项目开发完成之后,需要打包发布程序,而因为用户电脑上没有Qt配置环境,所以需要将release生成的exe文件和所依赖的dll文件复制到一个文件夹中,然后再用 Inno Setup打包工 ... 
- Qt 程序发布以及打包成exe安装包
		一.简述 Qt 项目开发完成之后,需要打包发布程序,而因为用户电脑上没有 Qt 配置环境,所以需要将 release 生成的 exe 文件和所依赖的 dll 文件复制到一个文件夹中,然后再用 Inno ... 
- NSIS打包electron程序为exe安装包
		在我的上一篇博客已经介绍了将electron程序生成一个exe可执行文件,但是这并不是最终能够发给用户用来安装的最终安装包,下面我们就介绍如何使用NISI将我们的应用程序打包成安装包: 上一篇博客我们 ... 
- CentOS 5.5 Nginx+JDK+MySQL+Tomcat(jsp)成功安装案例
		在CentOS 5.5中安装Nginx+jdk+mysql+tomcat是非常容易的.只需yum安装环境包和nginx.解压安装jdk和tomcat.配置profile文件.server.xml和ng ... 
- Inno Setup 打包工具总结
		Inno Setup 打包工具总结 分类: Install Setup 2013-02-02 15:44 2386人阅读 评论(0) 收藏 举报 最近打包用到了Inno setup,在这个过程中容易犯 ... 
- 使用Inno Setup 打包.NET程序,并自动安装.Net Framework
		使用Inno Setup 打包.NET程序,并自动安装.Net Framework http://www.cnblogs.com/xiaogangqq123/archive/2012/03/19/24 ... 
- (Inno setup打包)检测系统是否已安装程序,若已安装则弹出卸载提示的代码
		原文 http://bbs.itiankong.com/thread-30983-1-5.html 有6天没研究pascal代码了,昨天晚上突然来了灵感,终于解决了苦思冥想好几天没能解决的问题, 因此 ... 
- Inno Setup打包的程序提升为管理员权限
		Inno Setup打包的程序在Win7 64位系统上安装,安装步骤最后一步若选中运行程序,会跳出一个错误提示框. 这是因为64位win7系统运行程序时需要管理员权限,而打包的文件并没有这个权限就试图 ... 
随机推荐
- 一类斜率优化的dp(特有性质:只能连续,不能交叉)
			hdu3480 给定一个有n个数的集合,将这个集合分成m个子集,要求子集的并等于全集求花费最小. 花费为该子集的(最大数-最小数)的平方. 我们将n个数排序, a < b < c < ... 
- HBaseConvetorUtil 实体转换工具
			HBaseConvetorUtil 实体转换工具类 public class HBaseConvetorUtil { /** * @Title: convetor * @De ... 
- Qt数据类型转换
			把QString转换为double类型 方法1.QString str="123.45"; double val=str.toDouble(); //val=123.45 方法2. ... 
- 使用.netFx4.0提供的方法解决32位程序访问64位系统的64位注册表
			原文:使用.netFx4.0提供的方法解决32位程序访问64位系统的64位注册表 我们知道目标平台是32位的程序运行在64位的系统上,去访问部分注册表的时候系统自动重定向到win32node节点对应的 ... 
- WebService(2)-XML系列之Java和Xml之间相互转换
			源代码下载:链接:http://pan.baidu.com/s/1ntL1a7R password: rwp1 本文主要讲述:使用jaxb完毕对象和xml之间的转换 TestJava2xml.java ... 
- Android在浏览器启动APP
			要想在浏览器启动APP的方法例如以下: 在须要跳转的ACTIVITY中加入intent-filter的相关信息: <intent-filter> <data android: ... 
- APUE读书笔记-第13章-守护进程
			第13章 守护进程 13.1 引言 *守护进程也称精灵进程(daemon)是生存期较长的一种进程.它们常常在系统自举时启动,仅在系统关闭时才终止.因为它们没有控制终端,所以说它们是在后台运行的.UNI ... 
- javascript于boolean类型转换,运营商&&和|| 返回值
			javascript它是弱类型语言,不管是什么类型的数据可以被转换成boolean种类.转换规则如下面的: 数据类型 转换为boolean后的值 NAN ... 
- Lua 服务器与客户端实例(转)
			=============================================================== 服务器,main.lua ======================= ... 
- [LeetCode145]Binary Tree Postorder Traversal
			题目: Given a list, rotate the list to the right by k places, where k is non-negative. For example:Giv ... 
