转---B/S结构JavaEE WebApp的全自动安装包制作心得
JavaEE的Web应用程序如今已大行其道,但其安装、配置、部署却一直繁琐无比,客观上阻碍了Web应用程序更大规模的推广和应用。因此,开发方制作一个集JDK、Web中间件、开源数据库的全自动安装程序很有必要。
本人经过多日的艰苦摸索而终于成功搞定一个具备上述功能的全自动安装程序。说明如下:
安装程序制作工具:Installshield 12 Premier,因为没银子只好用破解版:),简称IS12;
JSDK:Java 6.0;
应用服务器:Tomcat 6.0 解压版。webapps目录下已放好了要发布的应用程序;
数据库:MySQL 5.0 解压版;
本安装程序具备的特点如下:
1.不需客户机安装JVM,只需他有Windows 2000/XP/2003/Vista中一种操作系统;
2.安装完成后数据库、应用服务器自动注册为系统服务,并自动启动。并且机器重启后仍然有效;
3.对客户机的改动很小,不改变用户机器的环境变量、注册表;卸载后干净、不留残余。
4.安装完成后,打开IE即可立即访问Web应用程序。
制作过程粗略描述如下:
1.建立一个目录,存放你要用来打包的目录和文件,如“MyProject”;
2.首先在本机上安装JDK,然后把安装好的JDK拷贝到MyProject目录下,把JDK的目录名改为“jsdk”;
3.同理,把已部署好Web应用程序的免安装版Tomcat和MySQL也拷贝到MyProject目录下,并分别把目录名改为“tomcat”和“mysql”;(这里的目录都不带版本号是为了增加安装程序的通用性)
4.为使tomcat摆脱JVM的系统环境变量、并使用本目录下的JSDK,需改变其bin目录下的catalina.bat和service.bat两个批处理文件,使之指向指定的JAVAHOME和JVM;具体不再赘述;
5.用IS12建立一个InstallScript MSI Project;(注意:不要用Basic MSI Project,那是徒劳无功)
6.在新建立的工程文件里把上述已存放好的jsdk、tomcat、mysql三个目录都加到工程里,注意勾上"subfolder"选项,把子目录中的文件也加进来,很简单不再赘述;
7.为了实现安装完成后mysql和tomcat的注册服务、自动启动;以及卸载程序时的停止服务、卸载服务,需要写InstallScript脚本(本人起初看着那些脚本就发怵,但最终还是不得不写脚本了事)。关键是重写OnFirstUIBefore(安装程序开始运行时调用)、OnInstallFilesActionAfter(安装结束后调用)、OnUninstall(卸载开始时调用)这几个库函数。重写后不必加到Custom Action的Sequences里,安装程序会自动在相应时候调用。
8.手工写下列函数:动态生成my.ini配置文件(mysql要注册成系统服务就必须依靠此配置文件。存放目录在%mysql%下);注册并启动mysql服务;注册并启动tomcat服务(上述两个函数放在安装程序完成后调用);停止并卸载停止mysql服务;停止并卸载tomcat服务(上述两个函数放在卸载开始时调用);
9.上述工作完成后就基本大功已告成。但还有如下几个细节不能忽视:
10.许可协议:首先自己写一个名为License.txt的许可协议文件,然后在Behavior and Logic|Support Files/Billboards|Language Independent中加入该License.txt;并在OnFirstUIBefore函数中调用;
11.不赞成建立开始菜单中的卸载快捷方式。因为本人做过实验,运行卸载快捷方式时,OnUninstall函数不会被调用,不知怎么回事,也懒得去仔细研究了。卸载程序可以放在控制面板中的“添加删除程序”中。
12.很关键的一点:把Install Information|General Information|Project Properties中,Enable Maintenance选为No,否则OnUninstall函数将不会被调用
大体如上述过程,此时一个全自动安装程序制作完毕,若有细节遗漏,请大家自己研究调试。
如还有不清楚的或想要安装程序的源工程或源代码的,欢迎给本人发email索取:
分享到: http://blog.csdn.net/xuxy03/article/details/2495365
转---B/S结构JavaEE WebApp的全自动安装包制作心得的更多相关文章
- hadoop安装包的目录结构
初次接触Hadoop,了解了Hadoop安装包的目录结构,和大家分享下: bin:Hadoop最基本的管理脚本和使用脚本的目录,这些脚本是sbin目录下管理脚本的基础实现,用户可以直接使用这些脚本管理 ...
- Solr 01 - 什么是Solr + Solr安装包目录结构说明
目录 1 Solr概述 1.1 Solr是什么 1.2 Solr与Lucene的区别 2 Solr文件说明 2.1 Solr的目录结构 2.2 其他常用概念说明 2.3 创建基础文件目录 2.4 so ...
- 怎样使用在线Webapp生成器生成安装包
在这篇文章中,我们来介绍怎样使用在线(online)的Webapp生成器来生产在Ubuntu手机或模拟器中能够安装的click安装包. Webapp生成器的地址:https://developer.u ...
- 使用Inno Setup 打包jdk、mysql、tomcat、webapp等为一个exe安装包(转)
之前一直都没涉及到打包安装方面的东西,都是另一个同事负责的,使用的工具(installshield)也比较高大上一点,可是后来他离职以后接受的同事也只能是在这个基础上做个简单的配置,然后打包,可是现在 ...
- 使用Inno Setup 打包jdk、mysql、tomcat、webapp等为一个exe安装包
之前一直都没涉及到打包安装方面的东西,都是另一个同事负责的,使用的工具(installshield)也比较高大上一点,可是后来他离职以后接受的同事也只能是在这个基础上做个简单的配置,然后打包,可是现在 ...
- 带你认识spark安装包的目录结构
福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号: 大数据躺过的坑 Java从入门到架构师 人工智能躺过的坑 Java全栈大联盟 ...
- VC 2005 解决方案的目录结构设置和管理
VC 2005 解决方案的目录结构设置和管理 Roger (roger2yi@gmail.com) 一个中等规模的解决方案通常都会包含多个项目,其中一些项目产出静态库,一些产出动态库,一些用于 ...
- VS解决方案的目录结构设置和管理
一个中等规模的解决方案通常都会包含多个项目,其中一些项目产出静态库,一些产出动态库,一些用于单元测试,还有的产出最终的应用程序执行档.除此以外,根据项目的需求,还会使用一些第三方的库. 所以为解决 ...
- 基于InstallShield2013LimitedEdition的安装包制作
在VS2012之前,我们做安装包一般都是使用VS自带的安装包制作工具来创建安装包的,VS2012.VS2013以后,微软把这个去掉,集成使用了InstallShield进行安装包的制作了,虽然思路差不 ...
随机推荐
- swift-分支语句
// switch的基本用法 // 1>switch后面的()可以省略 // 2>case中语句结束后不需要跟break // 3>在case中定义局部变量不需要跟{} // 4&g ...
- qt越来越好了
qml中所有的商业控件都开源了,详见: import QtQuick.Extras 1.4 以前自己实现的时候实现了半天.
- Xcode快捷键
1. 文件 CMD + N: 新文件 CMD + SHIFT + N: 新项目 CMD + O: 打开 CMD + S: 保存 CMD + SHIFT + S: 另存为 CMD + W: 关闭窗口 C ...
- Websocket 协议解析
WebSocket protocol 是HTML5一种新的协议.它是实现了浏览器与服务器全双工通信(full-duplex). 现 很多网站为了实现即时通讯,所用的技术都是轮询(po ...
- Android Binder
http://blog.csdn.net/luoshengyang/article/details/6618363 Android进程间通信(IPC)机制Binder简要介绍和学习计划
- Trie树-字典查找
描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进. 这一天,他们遇到了一本词典,于是小Hi就向小Ho提出了那个经典的问题: ...
- matlab 使用札记
1.inline 命令行内置函数,作用同Function一致 2.repmat B = repmat(A,m,n)B = repmat(A,[m n])B = repmat(A,[m n p...]) ...
- List<T>的对比
对于类型的对比,linq原来的对比是区分不了的. 对两个list进行查询交集方法.交集,并集的函数是直接用Linq的,这里不再写. List<T> intersectList = quer ...
- dwg格式用什么打开
dwg文件怎么打开?dwg格式用什么打开?如何打开dwg文件?今天小编在这里推荐几款控件可以实现打开预览编辑DWG格式文件的目的. CADViewX是一款强大的CAD文件以及图片浏览库,在不需要其他三 ...
- 进程和线程及Linux下的编程
一.概述 进程和线程网络上有一堆解释,我不喜欢抄袭,也不喜欢套用太教科书的说法.就以我自己的理解来说说进程和线程吧,当然自己的理解肯定不是很严谨,但是理解起来应该会比教科书快一点.进程和线程都可以认为 ...