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的全自动安装包制作心得的更多相关文章

  1. hadoop安装包的目录结构

    初次接触Hadoop,了解了Hadoop安装包的目录结构,和大家分享下: bin:Hadoop最基本的管理脚本和使用脚本的目录,这些脚本是sbin目录下管理脚本的基础实现,用户可以直接使用这些脚本管理 ...

  2. 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 ...

  3. 怎样使用在线Webapp生成器生成安装包

    在这篇文章中,我们来介绍怎样使用在线(online)的Webapp生成器来生产在Ubuntu手机或模拟器中能够安装的click安装包. Webapp生成器的地址:https://developer.u ...

  4. 使用Inno Setup 打包jdk、mysql、tomcat、webapp等为一个exe安装包(转)

    之前一直都没涉及到打包安装方面的东西,都是另一个同事负责的,使用的工具(installshield)也比较高大上一点,可是后来他离职以后接受的同事也只能是在这个基础上做个简单的配置,然后打包,可是现在 ...

  5. 使用Inno Setup 打包jdk、mysql、tomcat、webapp等为一个exe安装包

    之前一直都没涉及到打包安装方面的东西,都是另一个同事负责的,使用的工具(installshield)也比较高大上一点,可是后来他离职以后接受的同事也只能是在这个基础上做个简单的配置,然后打包,可是现在 ...

  6. 带你认识spark安装包的目录结构

    福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑         Java全栈大联盟   ...

  7. VC 2005 解决方案的目录结构设置和管理

    VC 2005 解决方案的目录结构设置和管理   Roger (roger2yi@gmail.com)   一个中等规模的解决方案通常都会包含多个项目,其中一些项目产出静态库,一些产出动态库,一些用于 ...

  8. VS解决方案的目录结构设置和管理

    一个中等规模的解决方案通常都会包含多个项目,其中一些项目产出静态库,一些产出动态库,一些用于单元测试,还有的产出最终的应用程序执行档.除此以外,根据项目的需求,还会使用一些第三方的库.   所以为解决 ...

  9. 基于InstallShield2013LimitedEdition的安装包制作

    在VS2012之前,我们做安装包一般都是使用VS自带的安装包制作工具来创建安装包的,VS2012.VS2013以后,微软把这个去掉,集成使用了InstallShield进行安装包的制作了,虽然思路差不 ...

随机推荐

  1. ios新特性(泛型)

    协变 子类转父类   逆变父类给子类赋值

  2. github上面建立分支

    首先是有一个github的账户,然后随便开个项目. 好了,现在把git命令行打开,输入下面几行代码. git clone https://github.com/user/repository.git ...

  3. oracle 查看锁死的表,锁死的进程

    select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.locked_mode f ...

  4. js写的闹钟,支持多个闹钟

    因为玩一个游戏,该游戏可以支持多个号,每个号有好多等时间的任务. 来回切换看,太耽误时间.手机的闹钟操作太麻烦. 所以写了一个使用配置文件的闹钟,简单方便. var ForReading = 1, F ...

  5. 使用CSDN Code将网站部署到Windows Azure Website上

    在云计算时代,开发和部署应该是完全统一和集成的.在海外,开发者可以用github来管理他们的代码,并且直接部署到Windows Azure上.随着Windows Azure在国内的发布,我们发现,其实 ...

  6. windows8.1下php环境搭建及基本配置(php+apache+mysql)

    一.php下载安装:php-5.6.1-Win32-VC11-x64.zip.解压,操作: 1.复制php.ini-production,更名为php.ini 2.在环境变量PATH末尾添加:D:\p ...

  7. jQuery focus、blur事件 添加、删除类名

    jQuery.focusblur = function(ele,className){ var focusblurid = $(ele); focusblurid.focus(function(){ ...

  8. DLL 导出封装类

    首先使用Wizard创建一个Win32 Dynamic-Link Library工程,然后定义一个简单的C++类CInDLL.由于该类会被工程之外的文件所引用,所以需要对这个类进行引出.因为只有引出后 ...

  9. 高精度快速预览打开dwg文件的CAD控件CAD Image DLL介绍及下载

    CAD Image DLL对于DXF格式, DWG格式(AutoCAD R12 到AutoCAD 2004/2005), PLT 以及 HPGL/HPGL2文件都有快速的显示速度和精度,开发者再也不会 ...

  10. SYS与SYSTEM、DBA与SYSDBA的区别

    SYS与SYSTEM: 1. sys 的角色是sysdba system 的角色是sysoper 2. sys 具有create database的权限 system没有该权限 3. sys可以建数据 ...