之前一直都没涉及到打包安装方面的东西,都是另一个同事负责的,使用的工具(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.代码里面的东西可以根据个人项目的实际情况做适当的调整。
  • 居然第一篇文章是写的打包相关,我也是醉了,只是希望能够帮助到一些需要的人,高手请飘过~

http://www.cnblogs.com/dehai168/p/4512484.html

使用Inno Setup 打包jdk、mysql、tomcat、webapp等为一个exe安装包(转)的更多相关文章

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

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

  2. Qt之程序发布以及打包成exe安装包

    一.简述 Qt项目开发完成之后,需要打包发布程序,而因为用户电脑上没有Qt配置环境,所以需要将release生成的exe文件和所依赖的dll文件复制到一个文件夹中,然后再用 Inno Setup打包工 ...

  3. Qt 程序发布以及打包成exe安装包

    一.简述 Qt 项目开发完成之后,需要打包发布程序,而因为用户电脑上没有 Qt 配置环境,所以需要将 release 生成的 exe 文件和所依赖的 dll 文件复制到一个文件夹中,然后再用 Inno ...

  4. NSIS打包electron程序为exe安装包

    在我的上一篇博客已经介绍了将electron程序生成一个exe可执行文件,但是这并不是最终能够发给用户用来安装的最终安装包,下面我们就介绍如何使用NISI将我们的应用程序打包成安装包: 上一篇博客我们 ...

  5. CentOS 5.5 Nginx+JDK+MySQL+Tomcat(jsp)成功安装案例

    在CentOS 5.5中安装Nginx+jdk+mysql+tomcat是非常容易的.只需yum安装环境包和nginx.解压安装jdk和tomcat.配置profile文件.server.xml和ng ...

  6. Inno Setup 打包工具总结

    Inno Setup 打包工具总结 分类: Install Setup 2013-02-02 15:44 2386人阅读 评论(0) 收藏 举报 最近打包用到了Inno setup,在这个过程中容易犯 ...

  7. 使用Inno Setup 打包.NET程序,并自动安装.Net Framework

    使用Inno Setup 打包.NET程序,并自动安装.Net Framework http://www.cnblogs.com/xiaogangqq123/archive/2012/03/19/24 ...

  8. (Inno setup打包)检测系统是否已安装程序,若已安装则弹出卸载提示的代码

    原文 http://bbs.itiankong.com/thread-30983-1-5.html 有6天没研究pascal代码了,昨天晚上突然来了灵感,终于解决了苦思冥想好几天没能解决的问题, 因此 ...

  9. Inno Setup打包的程序提升为管理员权限

    Inno Setup打包的程序在Win7 64位系统上安装,安装步骤最后一步若选中运行程序,会跳出一个错误提示框. 这是因为64位win7系统运行程序时需要管理员权限,而打包的文件并没有这个权限就试图 ...

随机推荐

  1. Xamarin 安装步骤

    原文:Xamarin 安装步骤 1.下载并解压吾乐吧软件站提供的“Mono for Android 离线包” 安装:jdk-6u45-windows-i586.exe (就算你是64位系统,也要安装i ...

  2. BZOJ 2002 HNOI2010 弹飞羊 块

    标题效果,LCT解释版本:见 http://blog.csdn.net/popoqqq/article/details/38849471 如今,用一只手滑动块,并再次改写这个问题0.0 块短啊 将进入 ...

  3. bnu1066

    hnu1066 给我们一张图,问我们摧毁边使得s和t不连通有多少种方案, 方案与方案之间不能存在相同的摧毁目标. 这是一个神奇的题目. 这题可以转为求s与t的最短路,为什么呢? 因为方案与方案之间不能 ...

  4. Debug with Eclipse

    In this post we are going to see how to develop applications using Eclipse and Portofino 4. The trad ...

  5. java战斗系列-战斗MAVENPW结构

     实战中MAVEN私服的搭建 利用maven来管理项目的构建,报告和文档已经成为了我们如今的共识,不论什么开源软件基本都在使用,当然我们如今的大部分公司也基本都在使用,我把曾经使用maven的一些经 ...

  6. A WPF/MVVM Countdown Timer

    Introduction This article describes the construction of a countdown timer application written in C# ...

  7. TFS(Team Foundation Server)简介和新手入门

    在两部分的文章.我会介绍Team Foundation Server一些核心功能,着重于产品的日常应用是如何将这些功能结合使用. 作为一个软件开发.在我的职业生涯,.我常常用于支持软件开发过程中大量的 ...

  8. .Net中获取打印机的相关信息

    原文:.Net中获取打印机的相关信息 新项目中牵涉到对打印机的一些操作,最重要的莫过于获取打印机的状态,IP等信息,代码量不大,但是也是自己花了一点时间总结出来的,希望能帮助需要的朋友. Printe ...

  9. CSS设计指南之理解盒子模型

    原文:CSS设计指南之理解盒子模型 一.理解盒模型 每一个元素都会在页面上生成一个盒子.因此,HTML页面实际上是由一堆盒子组成的.默认情况下,每个盒子的边框不可见,背景也是透明的,所以我们不能直接看 ...

  10. WebService 简单安全验证

    原文:WebService 简单安全验证 最近新接了一个需要调用第三方WebService的项目,看到这个第三方WebService被调用的时候,需要授权用户名和密码,于是自己也想对WebServic ...