精华内容
下载资源
问答
  • web项目打包成exe文件,一键安装

    热门讨论 2010-01-10 14:22:24
    公司要求必须把WEB项目成EXE文件,因为客户是不可能去装JDK,TOMCAT,MYSQL的,所以我必须做一个可执行文件,并初始化录入一些数据。 里面讲到了如何做tomcat和mysql的免安装方法还有环境变量的增加、修改和删除...
  • Java_web系统打包成exe安装文件,亲测可用!
  • web项目打包exe文件-实现一键布署

    千次阅读 2019-08-23 19:28:55
    一、准备需要拷贝的文件 文件目录:包括jdk、mysql、tomcat、redis (1).Mysql文件夹 准备my.ini ----------------------------------------------------------------------------- # For advice on how...

    一、准备需要拷贝的文件

    文件目录:包括jdk、mysql、tomcat、redis

     

    (1).Mysql文件夹

     

    准备my.ini

    -----------------------------------------------------------------------------

    # For advice on how to change settings please see

    # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

    # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the

    # *** default location during install, and will be replaced if you

    # *** upgrade to a newer version of MySQL.

     

    [mysqld]

     

    character_set_server=utf8

     

     

    # Remove leading # and set to the amount of RAM for the most important data

    # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

    # innodb_buffer_pool_size = 128M

     

    # Remove leading # to turn on a very important data integrity option: logging

    # changes to the binary log between backups.

    # log_bin

     

    # These are commonly set, remove the # and set as required.

    # basedir = .....

    # datadir = .....

    port = 3306

    # server_id = .....

     

     

    # Remove leading # to set options mainly useful for reporting servers.

    # The server defaults are faster for transactions and fast SELECTs.

    # Adjust sizes as needed, experiment to find the optimal values.

    # join_buffer_size = 128M

    # sort_buffer_size = 2M

    # read_rnd_buffer_size = 2M

     

    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

     

    [client]

    port=3306

    default-character-set=utf8

    [mysql]

    default-character-set=utf8

     

    Mysql bin目录

     

    准备startServer.bat

    ---------------------------------------------------------------------------------------------

    cd /d %~dp0

    "%cd%\mysqld.exe" -install

    net start mysql

    --------------------------------------------------------------------------------------------

    注:mysql 安装需要依赖 visual C++2013 Redistributable(X64)

    下载地址:

    https://download.microsoft.com/download/F/3/5/F3500770-8A08-488E-94B6-17A1E1DD52 6F/vcredist_x64.exe

     

    1. .Tomcat8文件夹:

     

    准备文件Set_Env.bat

    ----------------------------------------------------------------------------------------

    @echo off

    echo

    cd ..

    echo "%~dp0"

    echo "%cd%"

    set jdkpath=%cd%\tomcat8\bin\Java\jdk1.8.0_171

    echo %jdkpath%

    setx JAVA_HOME "%jdkpath%" -m

    setx CLASS_PATH ".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar" -m

    echo %Path%

    echo %Path%|find /i "%java_home%" && set IsNull=true || set IsNull=false

    echo %IsNull%

    if not %IsNull%==true (

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"/vPath/tREG_SZ/d %Path%;%%JAVA_HOME%%\bin;%%JAVA_HOME%%\jre\bin" /f

    setx Path "%%JAVA_HOME%%\bin;%Path%"

    )

    Exit

    -------------------------------------------------------------------------------------------------------------

    Tomcat bin目录

     

    1. . jdk目录放在tomcat bin目录下

     

    Jdk文件夹

     

    1. .Redis文件夹

     

    准备startServer.bat文件

    ------------------------------------------------------------------------------------------

    redis-server.exe redis.windows.conf

    -------------------------------------------------------------------------------------------

     

    二、打包工具

    在网上下载一个 Inno steup的制作exe文件工具

     

    用脚本向导创建新的脚本文件

    确定后,根据向导填入程序信息

     

    这一步选择应用程序没有主执行文件,点击添加文件夹,选择mysql、tomcat、redis等所在文件夹

    完成后生成脚本大致如下:

     

    ---------------------------------------------------------------------------------

    ; 脚本由 Inno Setup 脚本向导 生成!

    ; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档!

     

    #define MyAppName "XXXXXXXX系统"

    #define MyAppVersion "2.2"

    #define MyAppPublisher "XXXX股份有限公司"

    #define MyAppURL "http://www.shlanbao.cn/"

     

    [Setup]

    ; 注: AppId的值为单独标识该应用程序。

    ; 不要为其他安装程序使用相同的AppId值。

    ; (生成新的GUID,点击 工具|在IDE中生成GUID。)

    AppId={{CA21D414-F0D6-4CF0-BAB6-29AC9B20E218}

    AppName={#MyAppName}

    AppVersion={#MyAppVersion}

    ;AppVerName={#MyAppName} {#MyAppVersion}

    AppPublisher={#MyAppPublisher}

    AppPublisherURL={#MyAppURL}

    AppSupportURL={#MyAppURL}

    AppUpdatesURL={#MyAppURL}

    DefaultDirName=D:\lbims

    DefaultGroupName={#MyAppName}

    AllowNoIcons=yes

    OutputDir=C:\Users\Administrator\Desktop\Output

    OutputBaseFilename=setup

    SetupIconFile=C:\Users\Administrator\Desktop\favicon.ico

    Compression=lzma

    SolidCompression=yes

     

    [Languages]

    Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"

     

    [Files]

    Source: "D:\app\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

    ; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion”

    ; source  指定tomcat、mysql等文件夹所在的上级文件夹

     

    [Icons]

    Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"

    ; 下面三行定义在桌面生成三个图标,可根据需要自行增删

    Name: "{commondesktop}\XXXXXX系统"; Filename: http://localhost:8080/mes_sys

    Name: "{userdesktop}\启动服务"; Filename: "{app}\tomcat8\bin\startup.bat";

    Name: "{userdesktop}\关闭服务"; Filename: "{app}\tomcat8\bin\shutdown.bat";

     

    [Run]

    ; 指定安装需要运行的文件,runhidden 指定在后台静默运行

    Filename: "{app}\tomcat8\Set_Env.bat"; Flags: runhidden;

    Filename: "{app}\mysql\bin\startServer.bat"; Flags: runhidden;

    Filename: "{app}\Redis\installServer.bat"; Flags: runhidden;

    准备就绪后,构建-编译

     

     

     

    展开全文
  • Java web系统打包成exe安装文件

    千次阅读 2018-06-01 15:54:03
    Java web系统打包成exe安装文件一、 工具准备1、 NSIS打包工具: http://nsis.sourceforge.net下载并安装;2、 NSIS安装脚本的编辑器HM NIS Editor: http://hmne.sourceforge.net下载并安装二、 运行环境准备...

    Java web系统打包成exe安装文件

    一、    工具准备

    1、        NSIS打包工具: http://nsis.sourceforge.net下载并安装;

    2、        NSIS安装脚本的编辑器HM NIS Editor:

                 http://hmne.sourceforge.net下载并安装

    二、    运行环境准备—JDK

    1、新建打包用的文件夹(本人是在D盘根目录下创建的webExe,即D:\webExe);

    2、JDK本人用的是jdk-6u18,将安装好的JDK目录直接拷贝到目录webExe下就行(绿色版本的也可以)。

    三、    应用程序准备—Tomcat及web应用系统

    1、   免安装版本的tomcat,本人用的是apache-tomcat-6.0.35,将其放到目录webExe下,并将Web应用系统发布进webapps中。

    四、    数据库准备—mysql及数据

    1、        下载一个免安装版本的mysql(本人操作系统是WIN 7 32位,下载的是mysql-noinstall-v5.1.55.zip),解压缩到D盘;

    2、        将主目录名mysql-5.1.55-win32修改为简单的mysql5(不修改也行,建议修改简单);

    3、        找到文件my-small.ini改名为my.ini(也可以是将my-huge.ini、my-large.ini、my-medium.ini中任意一个改名为my.ini);

    4、        将my.ini打开进行配置:

       

    [mysqld]

    port     = 3306

    socket   = MySQL

    default-character-set =utf8     --服务器端

    basedir=D:/mysql5        --路径

    datadir=D:/mysql5/data     --数据库路径

    default-storage-engine= MyISAM   --默认数据库引擎为MyISAM

    5、        在本地启动服务,导入数据库及数据

    (如果本机已经安装了mysql,记得关掉当前的服务)

    运行cmd.exe进入DOS窗口,进到D:\mysql5\bin目录

    注册服务: 

    mysqld --install mysql5--defaults-file=d:\mysql5\my.ini

    可能会出现Install/Remove of the Service Denied! 错误,这时要关闭DOS窗口,以管理员的身份运行cmd.exe程序。

    启动服务:net start mysql5

    使用命令或mysql第三方客户端,创建数据库并导入数据

    停止服务:net stop mysql5

    参考图片—

     

    6、        停止服务后,将mysql5整个目录剪切到目录webExe下

    五、    打包脚本准备

    1、        当前目录情况如下图:


    2、        脚本文件AddPath.nsh(复制到编辑器HM NIS Edit中保存nsh类型)

    !ifndef _AddToPath_nsh

    !define _AddToPath_nsh

     

    !verbose 3

    !include "WinMessages.NSH"

    !verbose 4

     

    !ifndef WriteEnvStr_RegKey

     !ifdef ALL_USERS

       !define WriteEnvStr_RegKey \

          'HKLM "SYSTEM\CurrentControlSet\Control\SessionManager\Environment"'

     !else

       !define WriteEnvStr_RegKey 'HKCU "Environment"'

     !endif

    !endif

     

    ; AddToPath - Adds the given dir to thesearch path.

    ;       Input - head of the stack

    ;       Note - Win9x systems requires reboot

     

    Function AddToPath

     Exch $0

     Push $1

     Push $2

     Push $3

     

      #don't add if the path doesn't exist

     IfFileExists "$0\*.*" "" AddToPath_done

     

     ReadEnvStr $1 PATH

     Push "$1;"

     Push "$0;"

     Call StrStr

      Pop$2

     StrCmp $2 "" "" AddToPath_done

     Push "$1;"

     Push "$0\;"

     Call StrStr

      Pop$2

     StrCmp $2 "" "" AddToPath_done

     GetFullPathName /SHORT $3 $0

     Push "$1;"

     Push "$3;"

     Call StrStr

      Pop$2

     StrCmp $2 "" "" AddToPath_done

     Push "$1;"

     Push "$3\;"

     Call StrStr

      Pop$2

     StrCmp $2 "" "" AddToPath_done

     

     Call IsNT

      Pop$1

     StrCmp $1 1 AddToPath_NT

        ;Not on NT

       StrCpy $1 $WINDIR 2

       FileOpen $1 "$1\autoexec.bat" a

       FileSeek $1 -1 END

       FileReadByte $1 $2

       IntCmp $2 26 0 +2 +2 # DOS EOF

         FileSeek $1 -1 END # write over EOF

       FileWrite $1 "$\r$\nSET PATH=%PATH%;$3$\r$\n"

        FileClose$1

       SetRebootFlag true

       Goto AddToPath_done

     

     AddToPath_NT:

       ReadRegStr $1 ${WriteEnvStr_RegKey} "PATH"

       StrCmp $1 "" AddToPath_NTdoIt

         Push $1

         Call Trim

         Pop $1

         StrCpy $0 "$1;$0"

       AddToPath_NTdoIt:

         WriteRegExpandStr ${WriteEnvStr_RegKey} "PATH" $0

         SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0"STR:Environment" /TIMEOUT=5000

     

     AddToPath_done:

       Pop $3

       Pop $2

       Pop $1

       Pop $0

    FunctionEnd

     

    ; RemoveFromPath - Remove a given dir fromthe path

    ;    Input: head of the stack

     

    Function un.RemoveFromPath

     Exch $0

     Push $1

     Push $2

     Push $3

     Push $4

     Push $5

     Push $6

     

     IntFmt $6 "%c" 26 # DOS EOF

     

     Call un.IsNT

      Pop$1

     StrCmp $1 1 unRemoveFromPath_NT

        ;Not on NT

       StrCpy $1 $WINDIR 2

       FileOpen $1 "$1\autoexec.bat" r

       GetTempFileName $4

       FileOpen $2 $4 w

       GetFullPathName /SHORT $0 $0

       StrCpy $0 "SET PATH=%PATH%;$0"

       Goto unRemoveFromPath_dosLoop

     

       unRemoveFromPath_dosLoop:

         FileRead $1 $3

          StrCpy $5 $3 1 -1 # read last char

         StrCmp $5 $6 0 +2 # if DOS EOF

           StrCpy $3 $3 -1 # remove DOS EOF so we can compare

         StrCmp $3 "$0$\r$\n" unRemoveFromPath_dosLoopRemoveLine

         StrCmp $3 "$0$\n" unRemoveFromPath_dosLoopRemoveLine

          StrCmp $3 "$0"unRemoveFromPath_dosLoopRemoveLine

         StrCmp $3 "" unRemoveFromPath_dosLoopEnd

         FileWrite $2 $3

         Goto unRemoveFromPath_dosLoop

         unRemoveFromPath_dosLoopRemoveLine:

           SetRebootFlag true

           Goto unRemoveFromPath_dosLoop

     

       unRemoveFromPath_dosLoopEnd:

         FileClose $2

         FileClose $1

         StrCpy $1 $WINDIR 2

         Delete "$1\autoexec.bat"

         CopyFiles /SILENT $4 "$1\autoexec.bat"

         Delete $4

         Goto unRemoveFromPath_done

     

     unRemoveFromPath_NT:

       ReadRegStr $1 ${WriteEnvStr_RegKey} "PATH"

       StrCpy $5 $1 1 -1 # copy last char

       StrCmp $5 ";" +2 # if last char != ;

         StrCpy $1 "$1;" # append ;

       Push $1

       Push "$0;"

       Call un.StrStr ; Find `$0;` in $1

       Pop $2 ; pos of our dir

        StrCmp $2 "" unRemoveFromPath_done

         ; else, it is in path

         # $0 - path to add

         # $1 - path var

         StrLen $3 "$0;"

         StrLen $4 $2

         StrCpy $5 $1 -$4 # $5 is now the part before the path to remove

         StrCpy $6 $2 "" $3 # $6 is now the part after the path toremove

         StrCpy $3 $5$6

     

         StrCpy $5 $3 1 -1 # copy last char

         StrCmp $5 ";" 0 +2 # if last char == ;

           StrCpy $3 $3 -1 # remove last char

     

         WriteRegExpandStr ${WriteEnvStr_RegKey} "PATH" $3

         SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0"STR:Environment" /TIMEOUT=5000

     

     unRemoveFromPath_done:

       Pop $6

       Pop $5

       Pop $4

       Pop $3

       Pop $2

       Pop $1

       Pop $0

    FunctionEnd

     

     

     

    ; AddToEnvVar - Adds the given value to thegiven environment var

    ;       Input - head of the stack $0 environement variable $1=value to add

    ;       Note - Win9x systems requires reboot

     

    Function AddToEnvVar

     

     Exch $1 ; $1 has environment variable value

     Exch

     Exch $0 ; $0 has environment variable name

     

     DetailPrint "Adding $1 to $0"

     Push $2

     Push $3

     Push $4

     

     

     ReadEnvStr $2 $0

     Push "$2;"

     Push "$1;"

     Call StrStr

      Pop$3

     StrCmp $3 "" "" AddToEnvVar_done

     

     Push "$2;"

     Push "$1\;"

     Call StrStr

      Pop$3

     StrCmp $3 "" "" AddToEnvVar_done

     

     

     Call IsNT

      Pop$2

     StrCmp $2 1 AddToEnvVar_NT

        ;Not on NT

       StrCpy $2 $WINDIR 2

       FileOpen $2 "$2\autoexec.bat" a

       FileSeek $2 -1 END

       FileReadByte $2 $3

       IntCmp $3 26 0 +2 +2 # DOS EOF

         FileSeek $2 -1 END # write over EOF

       FileWrite $2 "$\r$\nSET $0=%$0%;$4$\r$\n"

       FileClose $2

       SetRebootFlag true

       Goto AddToEnvVar_done

     

     AddToEnvVar_NT:

       ReadRegStr $2 ${WriteEnvStr_RegKey} $0

       StrCpy $3 $2 1 -1 # copy last char

       StrCmp $3 ";" 0 +2 # if last char == ;

         StrCpy $2 $2 -1 # remove last char

       StrCmp $2 "" AddToEnvVar_NTdoIt

         StrCpy $1 "$2;$1"

       AddToEnvVar_NTdoIt:

         WriteRegExpandStr ${WriteEnvStr_RegKey} $0 $1

         SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0"STR:Environment" /TIMEOUT=5000

     

     AddToEnvVar_done:

       Pop $4

       Pop $3

       Pop $2

       Pop $0

       Pop $1

     

    FunctionEnd

     

    ; RemoveFromEnvVar - Remove a given valuefrom a environment var

    ;    Input: head of the stack

     

    Function un.RemoveFromEnvVar

     

     Exch $1 ; $1 has environment variable value

     Exch

     Exch $0 ; $0 has environment variable name

     

     DetailPrint "Removing $1 from $0"

     Push $2

     Push $3

     Push $4

     Push $5

     Push $6

     Push $7

     

     IntFmt $7 "%c" 26 # DOS EOF

     

     Call un.IsNT

      Pop$2

     StrCmp $2 1 unRemoveFromEnvVar_NT

        ;Not on NT

       StrCpy $2 $WINDIR 2

       FileOpen $2 "$2\autoexec.bat" r

       GetTempFileName $5

       FileOpen $3 $5 w

       GetFullPathName /SHORT $1 $1

       StrCpy $1 "SET $0=%$0%;$1"

       Goto unRemoveFromEnvVar_dosLoop

     

       unRemoveFromEnvVar_dosLoop:

         FileRead $2 $4

         StrCpy $6 $4 1 -1 # read last char

         StrCmp $6 $7 0 +2 # if DOS EOF

           StrCpy $4 $4 -1 # remove DOS EOF so we can compare

         StrCmp $4 "$1$\r$\n" unRemoveFromEnvVar_dosLoopRemoveLine

         StrCmp $4 "$1$\n" unRemoveFromEnvVar_dosLoopRemoveLine

         StrCmp $4 "$1" unRemoveFromEnvVar_dosLoopRemoveLine

         StrCmp $4 "" unRemoveFromEnvVar_dosLoopEnd

         FileWrite $3 $4

         Goto unRemoveFromEnvVar_dosLoop

         unRemoveFromEnvVar_dosLoopRemoveLine:

           SetRebootFlag true

           Goto unRemoveFromEnvVar_dosLoop

     

       unRemoveFromEnvVar_dosLoopEnd:

         FileClose $3

         FileClose $2

         StrCpy $2 $WINDIR 2

         Delete "$2\autoexec.bat"

         CopyFiles /SILENT $5 "$2\autoexec.bat"

         Delete $5

          Goto unRemoveFromEnvVar_done

     

     unRemoveFromEnvVar_NT:

       ReadRegStr $2 ${WriteEnvStr_RegKey} $0

       StrCpy $6 $2 1 -1 # copy last char

       StrCmp $6 ";" +2 # if last char != ;

         StrCpy $2 "$2;" # append ;

       Push $2

       Push "$1;"

       Call un.StrStr ; Find `$1;` in $2

       Pop $3 ; pos of our dir

       StrCmp $3 "" unRemoveFromEnvVar_done

         ; else, it is in path

         # $1 - path to add

         # $2 - path var

         StrLen $4 "$1;"

         StrLen $5 $3

         StrCpy $6 $2 -$5 # $6 is now the part before the path to remove

         StrCpy $7 $3 "" $4 # $7 is now the part after the path toremove

         StrCpy $4 $6$7

     

         StrCpy $6 $4 1 -1 # copy last char

         StrCmp $6 ";" 0 +2 # if last char == ;

         StrCpy $4 $4 -1 # remove last char

     

         WriteRegExpandStr ${WriteEnvStr_RegKey} $0 $4

     

         ; delete reg value if null

         StrCmp $4 "" 0 +2 # if null delete reg

         DeleteRegValue ${WriteEnvStr_RegKey} $0

     

         SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0"STR:Environment" /TIMEOUT=5000

     

     unRemoveFromEnvVar_done:

       Pop $7

       Pop $6

       Pop $5

       Pop $4

       Pop $3

       Pop $2

       Pop $1

       Pop $0

    FunctionEnd

     

     

     

     

    !ifndef IsNT_KiCHiK

    !define IsNT_KiCHiK

     

    ###########################################

    #           Utility Functions            #

    ###########################################

     

    ; IsNT

    ; no input

    ; output, top of the stack = 1 if NT or 0if not

    ;

    ; Usage:

    ;  Call IsNT

    ;  Pop $R0

    ; ($R0 at this point is 1 or 0)

     

    !macro IsNT un

    Function ${un}IsNT

     Push $0

     ReadRegStr $0 HKLM "SOFTWARE\Microsoft\WindowsNT\CurrentVersion" CurrentVersion

     StrCmp $0 "" 0 IsNT_yes

      ;we are not NT.

      Pop$0

     Push 0

     Return

     

     IsNT_yes:

        ;NT!!!

       Pop $0

       Push 1

    FunctionEnd

    !macroend

    !insertmacro IsNT ""

    !insertmacro IsNT "un."

     

    !endif ; IsNT_KiCHiK

     

    ; StrStr

    ; input, top of stack = string to searchfor

    ;       top of stack-1 = string to search in

    ; output, top of stack (replaces with theportion of the string remaining)

    ; modifies no other variables.

    ;

    ; Usage:

    ;  Push "this is a long ass string"

    ;  Push "ass"

    ;  Call StrStr

    ;  Pop $R0

    ; ($R0 at this point is "ass string")

     

    !macro StrStr un

    Function ${un}StrStr

    Exch $R1 ; st=haystack,old$R1, $R1=needle

     Exch    ; st=old$R1,haystack

     Exch $R2 ; st=old$R1,old$R2, $R2=haystack

     Push $R3

     Push $R4

     Push $R5

     StrLen $R3 $R1

     StrCpy $R4 0

      ;$R1=needle

      ;$R2=haystack

      ;$R3=len(needle)

      ;$R4=cnt

      ;$R5=tmp

     loop:

       StrCpy $R5 $R2 $R3 $R4

       StrCmp $R5 $R1 done

       StrCmp $R5 "" done

       IntOp $R4 $R4 + 1

        Goto loop

    done:

     StrCpy $R1 $R2 "" $R4

      Pop$R5

      Pop$R4

      Pop$R3

      Pop$R2

     Exch $R1

    FunctionEnd

    !macroend

    !insertmacro StrStr ""

    !insertmacro StrStr "un."

     

    !endif ; _AddToPath_nsh

     

    Function Trim ; Added by Pelaca

      Exch$R1

      Push$R2

    Loop:

      StrCpy$R2 "$R1" 1 -1

      StrCmp"$R2" " " RTrim

      StrCmp"$R2" "$\n" RTrim

      StrCmp"$R2" "$\r" RTrim

      StrCmp"$R2" ";" RTrim

      GoToDone

    RTrim:   

      StrCpy$R1 "$R1" -1

      GotoLoop

    Done:

      Pop$R2

      Exch$R1

    FunctionEnd

    3、        脚本文件WriteEnvStr.nsh(复制到编辑器HM NIS Edit中保存nsh类型)

    !ifndef _WriteEnvStr_nsh

    !define _WriteEnvStr_nsh

     

    !include WinMessages.nsh

     

    !ifndef WriteEnvStr_RegKey

     !ifdef ALL_USERS

       !define WriteEnvStr_RegKey \

          'HKLM "SYSTEM\CurrentControlSet\Control\SessionManager\Environment"'

     !else

       !define WriteEnvStr_RegKey 'HKCU "Environment"'

     !endif

    !endif

     

    #

    # WriteEnvStr - Writes an environmentvariable

    # Note: Win9x systems requires reboot

    #

    # Example:

    # Push "HOMEDIR"          # name

    # Push "C:\New Home Dir\" # value

    # Call WriteEnvStr

    #

    Function WriteEnvStr

     Exch $1 ; $1 has environment variable value

     Exch

     Exch $0 ; $0 has environment variable name

     Push $2

     

     Call IsNT

      Pop$2

     StrCmp $2 1 WriteEnvStr_NT

        ;Not on NT

       StrCpy $2 $WINDIR 2 ; Copy drive of windows (c:)

       FileOpen $2 "$2\autoexec.bat" a

       FileSeek $2 0 END

       FileWrite $2 "$\r$\nSET $0=$1$\r$\n"

       FileClose $2

       SetRebootFlag true

       Goto WriteEnvStr_done

     

     WriteEnvStr_NT:

         WriteRegExpandStr ${WriteEnvStr_RegKey} $0 $1

         SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} \

           0 "STR:Environment" /TIMEOUT=5000

     

     WriteEnvStr_done:

       Pop $2

       Pop $0

       Pop $1

    FunctionEnd

     

    #

    # un.DeleteEnvStr - Removes an environmentvariable

    # Note: Win9x systems requires reboot

    #

    # Example:

    # Push "HOMEDIR"           # name

    # Call un.DeleteEnvStr

    #

    Function un.DeleteEnvStr

     Exch $0 ; $0 now has the name of the variable

     Push $1

     Push $2

     Push $3

     Push $4

     Push $5

     

     Call un.IsNT

      Pop$1

     StrCmp $1 1 DeleteEnvStr_NT

        ;Not on NT

       StrCpy $1 $WINDIR 2

       FileOpen $1 "$1\autoexec.bat" r

       GetTempFileName $4

       FileOpen $2 $4 w

       StrCpy $0 "SET $0="

       SetRebootFlag true

     

       DeleteEnvStr_dosLoop:

         FileRead $1 $3

         StrLen $5 $0

         StrCpy $5 $3 $5

         StrCmp $5 $0 DeleteEnvStr_dosLoop

         StrCmp $5 "" DeleteEnvStr_dosLoopEnd

         FileWrite $2 $3

         Goto DeleteEnvStr_dosLoop

     

       DeleteEnvStr_dosLoopEnd:

         FileClose $2

         FileClose $1

         StrCpy $1 $WINDIR 2

         Delete "$1\autoexec.bat"

         CopyFiles /SILENT $4 "$1\autoexec.bat"

         Delete $4

         Goto DeleteEnvStr_done

     

     DeleteEnvStr_NT:

       DeleteRegValue ${WriteEnvStr_RegKey} $0

       SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} \

         0 "STR:Environment" /TIMEOUT=5000

     

     DeleteEnvStr_done:

       Pop $5

        Pop$4

       Pop $3

       Pop $2

       Pop $1

       Pop $0

    FunctionEnd

     

    !ifndef IsNT_KiCHiK

    !define IsNT_KiCHiK

     

    #

    # [un.]IsNT - Pushes 1 if running on NT, 0if not

    #

    # Example:

    #  Call IsNT

    #  Pop $0

    #  StrCmp $0 1 +3

    #    MessageBox MB_OK "Not running on NT!"

    #    Goto +2

    #    MessageBox MB_OK "Running on NT!"

    #

    !macro IsNT UN

    Function ${UN}IsNT

     Push $0

     ReadRegStr $0 HKLM \

       "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion

     StrCmp $0 "" 0 IsNT_yes

      ;we are not NT.

      Pop$0

     Push 0

     Return

     

     IsNT_yes:

        ;NT!!!

       Pop $0

       Push 1

    FunctionEnd

    !macroend

    !insertmacro IsNT ""

    !insertmacro IsNT "un."

     

    !endif ; IsNT_KiCHiK

     

    !endif ; _WriteEnvStr_nsh

    4、        脚本文件JDevIns.nsi    (将以下脚本内容保存为nsi类型)

    (这个是主脚本,依赖于前两个脚本,复制到编辑器HM NIS Edit中,根据自己的具体情况做相应修改)

     

    ; Script generated by the HM NIS EditScript Wizard.

     

    ; HM NIS Edit Wizard helper defines

    !define PRODUCT_NAME "AAA"

    !define PRODUCT_VERSION "2.0"

    !define PRODUCT_PUBLISHER "AAA科技股份有限公司"

    !define PRODUCT_UNINST_KEY"Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"

    !define PRODUCT_UNINST_ROOT_KEY"HKLM"

    !define PRODUCT_STARTMENU_REGVAL"NSIS:sTARTmENUdIR"

     

    SetCompressor lzma

     

    ; MUI 1.67 compatible ------

    !include "MUI.nsh"

     

    ;Register Environmnet Variable

    !include AddPath.nsh

    !include WriteEnvStr.nsh

    ; MUI Settings

    !define MUI_ABORTWARNING

    !define MUI_ICON"${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"

    !define MUI_UNICON"${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico"

     

    ; Welcome page

    !insertmacro MUI_PAGE_WELCOME

    ; 许可协议页面

    !insertmacro MUI_PAGE_LICENSE"rights.txt"

    ; Components page

    !insertmacro MUI_PAGE_COMPONENTS

    ; Directory page

    ;!insertmacro MUI_PAGE_DIRECTORY

    ; Start menu page

    var ICONS_GROUP

    !define MUI_STARTMENUPAGE_NODISABLE

    !define MUI_STARTMENUPAGE_DEFAULTFOLDER"AAA信息管理系统"

    !define MUI_STARTMENUPAGE_REGISTRY_ROOT"${PRODUCT_UNINST_ROOT_KEY}"

    !define MUI_STARTMENUPAGE_REGISTRY_KEY"${PRODUCT_UNINST_KEY}"

    !defineMUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}"

    !insertmacro MUI_PAGE_STARTMENU Application$ICONS_GROUP

    ; Instfiles page

    !insertmacro MUI_PAGE_INSTFILES

    ; Finish page

    ;!define MUI_FINISHPAGE_RUN"$INSTDIR\tomcat6\bin\startup.bat"

    !insertmacro MUI_PAGE_FINISH

     

    ; Uninstaller pages

    !insertmacro MUI_UNPAGE_INSTFILES

     

    ; Language files

    !insertmacro MUI_LANGUAGE"SimpChinese"

     

    ; Reserve files

    !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS

     

    ;Section Description

    ;!insertmacroMUI_FUNCTION_DESCRIPTION_BEGIN

     ;!insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "Tomcat6.0.35 JDK6u18,MySql5.1.55 必选项"

    ; !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "AAA信息管理系统运行环境,[必选]"

    ; !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "AAA信息管理系统网络服务,[必选]"

    ; !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} "AAA信息管理系统数据库,[必选]"

    ;!insertmacro MUI_FUNCTION_DESCRIPTION_END

     

    ; MUI end ------

    Name "${PRODUCT_NAME}${PRODUCT_VERSION}"

    BRANDINGTEXT "AAA科技股份有限公司"

    OutFile "AAA-install.exe"

    ;InstallDir"$PROGRAMFILES\application"

    InstallDir "D:\aaa"

    ShowInstDetails show

    ShowUnInstDetails show

     

    ;define install type

    InstType "完全"

    ;install type end------

     

    ;Define for Environment Variables

    !define JAVA_HOME"$INSTDIR\jdk1618"

    !define CATALINA_HOME"$INSTDIR\tomcat6"

    !define MYSQL_HOME"$INSTDIR\mysql5"

     

    Section "JDK6u18" SEC02

     sectionin 1

      sectioninRO

     SetOutPath "$INSTDIR\jdk1618"

     SetOverwrite try

     File /r "D:\webExe\jdk1618\*.*"

    SectionEnd

     

    Section "Tomcat6" SEC03

     sectionin 1

     sectionin RO

     SetOutPath "$INSTDIR\tomcat6"

     SetOverwrite try

     File /r "D:\webExe\tomcat6\*.*"

    SectionEnd

     

    Section "MySQL5" SEC04

     sectionin 1

     sectionin RO

     SetOutPath "$INSTDIR\mysql5"

     SetOverwrite try

     File /r "D:\webExe\mysql5\*.*"

    SectionEnd

     

    Section -EnvironmentVariables

     ;WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\SessionManager\Environment" "JAVA_HOME" "${JAVA_HOME}"

     Push JAVA_HOME

     Push '${JAVA_HOME}'

     Call WriteEnvStr

     Push '${JAVA_HOME}\bin'

     Call AddToPath

    ;Set CATALINA_HOME Environment Variable

     Push CATALINA_HOME

     Push '${CATALINA_HOME}'

     Call WriteEnvStr

     Push '${CATALINA_HOME}\bin'

     Call AddToPath

    ;Set MYSQL_HOME Environment Variable

     Push MYSQL_HOME

     Push '${MYSQL_HOME}'

     Call WriteEnvStr

     Push '${MYSQL_HOME}\bin'

     Call AddToPath

    SectionEnd

     

    ;Application StartMenu Directory

    Section -AdditionalIcons

     SetOutPath $INSTDIR

     !insertmacro MUI_STARTMENU_WRITE_BEGIN Application

     CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"

     CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\AAA.lnk""http://localhost:8080/"

     CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk""$INSTDIR\uninst.exe"

     !insertmacro MUI_STARTMENU_WRITE_END

    SectionEnd

     

    ;

    Section -Post

     WriteUninstaller "$INSTDIR\uninst.exe"

     

     WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""DisplayName" "$(^Name)"

     WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""UninstallString" "$INSTDIR\uninst.exe"

     WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""DisplayVersion" "${PRODUCT_VERSION}"

     WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""Publisher" "${PRODUCT_PUBLISHER}"

     

    SectionEnd

     

    Section -Service

     Call InstallTomcatService

     Call InstallMySQLService

     Call StartService

    SectionEnd

     

     

    ;Install Mysql Service

    Function InstallMySQLService

    ExecWait "$INSTDIR\mysql5\bin\mysqld--install mysql5 --defaults-file=$INSTDIR\mysql5\my.ini"

    FunctionEnd

     

    Function InstallTomcatService

    SetOutPath "$INSTDIR\tomcat6\bin"

    ExecWait "service.bat install"

    ExecWait "sc config tomcat6 start=auto"

    FunctionEnd

     

    Function StartService

    ExecWait "net start mysql5"

    ExecWait "net start tomcat6"

    FunctionEnd

    ;Stop MySQL Service

    Function un.stopService

    ExecWait "net stop tomcat6"

    ExecWait "net stop mysql5"

    functionend

    ;Delete MySQL Service

    function un.removeService

    ExecWait "$INSTDIR\mysql5\bin\mysqld-remove"

    functionend

     

    function un.removeTomcatService

    SetOutPath "$INSTDIR\tomcat6\bin"

    ExecWait "service.bat remove"

    functionend

     

    Function un.onUninstSuccess

     HideWindow

     MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从你的计算机移除。"

    FunctionEnd

     

    Function un.onInit

     MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全移除 $(^Name) ,其及所有的组件?" IDYES +2

     Abort

     ;call un.removeFileType

    FunctionEnd

     

    Function un.removeEnvPath

     Push CATALINA_HOME

     Call un.DeleteEnvStr

     Push ${CATALINA_HOME}\bin

     Call un.RemoveFromPath

     

     Push MYSQL_HOME

     Call un.DeleteEnvStr

     Push ${MYSQL_HOME}\bin

     Call un.RemoveFromPath

     

     Push JAVA_HOME

     Call un.DeleteEnvStr

     Push ${JAVA_HOME}\bin

     Call un.RemoveFromPath

    FunctionEnd

     

    Section Uninstall

     Call un.stopService

     Call un.removeTomcatService

     Call un.removeService

     !insertmacro MUI_STARTMENU_GETFOLDER "Application"$ICONS_GROUP

     Delete "$INSTDIR\${PRODUCT_NAME}.url"

     Delete "$INSTDIR\uninst.exe"

     Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk"

     Delete "$SMPROGRAMS\$ICONS_GROUP\AAA.lnk"

     Delete "$DESKTOP\AAA.lnk"

     RMDir "$SMPROGRAMS\$ICONS_GROUP"

     RMDir /r "$INSTDIR\jdk1618"

     RMDir /r "$INSTDIR\mysql5"

     RMDir /r "$INSTDIR\tomcat6"

     RMDir /r "$INSTDIR"

     DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY}"${PRODUCT_UNINST_KEY}"

     DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"

     Call un.removeEnvPath

     SetAutoClose true

    SectionEnd

     

    5、        安装许可协议rights.txt (复制保存为rights.txt)

    AAA科技软件授权许可协议

     

       AAA科技股份有限公司(以下简称AAA科技)独立开发软件, AAA科技依法享有该软件之版权和著作权:

     

            AAA科技软件以商业收费方式提供,许可授权用户使用,但该软件的授权使用者(含个人、法人或其它组织)必须遵守以下许可协议:

     

    1、 AAA科技将 AAA科技软件授权提供给授权用户,同时提供相关的安装说明、使用说明等文档。授权用户依法享有该软件的使用权,依法享有 AAA科技在所承诺的服务期限内提供的安装、升级和技术支持服务。

     

    2、除被授权方外的任何第三方无权使用该许可软件或其中任何一部分。任何人无权将该许可软件或其中任何一部分向他人出售、出租、转让权利或者以其他形式进行转让或提供利用。 任何人不得对本软件进行反向工程、反编译或者反汇编工作。

    对违反此授权协议行为的个人、法人或其它组织,必须立即停止其行为造成的一切不良后果承担全部责任。对此前,尤其是此后的行为,将依据《著作权法》、《计算机软件保护条例》等相关法律、法规追究其经济和法律责任。

     

     AAA科技保留对此协议的最终解释权,任何用户使用本软件则表示默认接受此协议。

     

                                      AAA科技股份有限公司

                              二零一二年十一月

    6、        脚本存放位置

    AddPath.nsh、WriteEnvStr.nsh脚本要拷贝到NSIS(注意,不是HM NIS Editor)安装目录中的Include子目录中,否则JDevIns.nsi将通不过编译。

    JDevIns.nsi、rights.txt放在打包文件目录D:\webExe中

    六、    开始打包

    通过NSIS对JDevIns.nsi脚本文件进行编译就开始打包了。

    (右键JDevIns.nsi选择Compile NSIS Script即可)

    打包速度与web应用系统大小和数据库数据多少有关,本人大概花了15分钟左右。



    展开全文
  • web项目打包成exe在windows下一键安装 jdk+Tomcat+mysql

    万次阅读 多人点赞 2017-05-18 12:46:12
    所以公司就让把我们的项目傻瓜式安装,这样就可以让销售人员去安装,也给技术省了很多事。我在网上找了很多教程但是有些地方还是不全,而且每个人写的也都不一样,所以在制作过程中遇到很多问题,经过几天研究...
    最近因为公司销售人员不懂软件,所以每次部署项目都需要技术人员到客户现场进行部署,很不方便。所以公司就让把我们的项目做成傻瓜式安装,这样就可以让销售人员去安装,也给技术省了很多事。我在网上找了很多教程但是有些地方还是不全,而且每个人写的也都不一样,所以在制作过程中遇到很多问题,经过几天研究终于实现了,现在就把我整理、研究的写下来,希望可以帮到更多人。 
    

    一:打包工具

    在网上下载一个 Inno steup的制作exe文件工具

    下面是我整理好的compile.iss文件(以下这个可以直接复制过去把要改的东西改掉就可以直接用了):

    ; Script generated by the Inno Setup Script Wizard.
    ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

    #define MyAppName "xxxx管理系统"        <------软件的名称
    #define MyAppVersion "V1.0"           <-------软件的版本
    #define MyAppPublisher "xxxxxx信息科技有限公司"    <------公司名称
    #define MyAppURL "http://www.xxxx.com/"          <------公司网址

    [Setup]
    ; NOTE: The value of AppId uniquely identifies this application.
    ; Do not use the same AppId value in installers for other applications.
    ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
    AppId={{DCCFE898-2E2D-4C7B-9A45-C81B3A50F80C}
    AppName={#MyAppName}
    AppVersion={#MyAppVersion}
    ;AppVerName={#MyAppName} {#MyAppVersion}
    AppPublisher={#MyAppPublisher}
    AppPublisherURL={#MyAppURL}
    AppSupportURL={#MyAppURL}
    AppUpdatesURL={#MyAppURL}
    DefaultDirName=D:\soft         <------默认安装的路径
    DefaultGroupName={#MyAppName}
    OutputBaseFilename=setup
    SetupIconFile=C:\Users\g5000\Desktop\soft\logo.ico   <------安装图标的路径
    Compression=lzma
    SolidCompression=yes
    PrivilegesRequired=admin


    [Languages]
    Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"

    [Files]         <------需要打包成exe文件的jdk+Tomcat+mysql文件的路径
    Source: "C:\Users\g5000\Desktop\soft\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
    ; NOTE: Don't use "Flags: ignoreversion" on any shared system files

    [Icons]
    Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
    Name: "{commondesktop}\xxxxxx理系统"; Filename: http://localhost:9080     <------ tomcat访问的端口,这里改成9080是为了避免冲突

    [Run]     <------ 一键安装后要运行一下三个bat文件,Flags: runhidden;表示运行是隐藏的
    Filename: "{app}\tomcat6\Set_Env.bat"; Flags: runhidden;   
    Filename: "{app}\tomcat6\bin\启动服务.bat"; Flags: runhidden;
    Filename: "{app}\MySQL\bin\启动服务.bat"; Flags: runhidden;

     

     

    二:jdk+Tomcat+mysql具体的修改和整理

    1:三个文件目录:

     

     mysql:

    tomcat6:

    jdk(jdk放在tomcat的bin目录下):

    2:需要修改或创建的文件

    mysql的my.ini文件:

    # For advice on how to change settings please see
    # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
    # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
    # *** default location during install, and will be replaced if you
    # *** upgrade to a newer version of MySQL.

    [mysqld]

    character_set_server=utf8


    # Remove leading # and set to the amount of RAM for the most important data
    # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
    # innodb_buffer_pool_size = 128M

    # Remove leading # to turn on a very important data integrity option: logging
    # changes to the binary log between backups.
    # log_bin

    # These are commonly set, remove the # and set as required.
    # basedir = .....
    # datadir = .....
    port = 3307
    # server_id = .....


    # Remove leading # to set options mainly useful for reporting servers.
    # The server defaults are faster for transactions and fast SELECTs.
    # Adjust sizes as needed, experiment to find the optimal values.
    # join_buffer_size = 128M
    # sort_buffer_size = 2M
    # read_rnd_buffer_size = 2M

    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

    [client]
    port=3307
    default-character-set=utf8
    [mysql]
    default-character-set=utf8

    启动服务.bat文件:

    cd /d %~dp0
    "%cd%\mysqld.exe" -install HQmysql
    net start HQmysql

     

    tomcat6的Set_Env.bat文件(jdk,配置环境变量并写到注册表里去):

     

    @echo off
    echo
    cd ..
    echo  "%~dp0"
    echo "%cd%"
    set jdkpath=%cd%\tomcat6\bin\Java\jdk1.6.0_45
    echo %jdkpath%
    setx JAVA_HOME  "%jdkpath%"  -m
    setx CLASSPATH  ".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar" -m
    echo %Path%
    echo %Path%|find /i "%java_home%" && set IsNull=true || set IsNull=false
    echo %IsNull%
    if not %IsNull%==true (
    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%Path%;%%JAVA_HOME%%\bin;%%JAVA_HOME%%\jre\bin" /f
    setx Path "%%JAVA_HOME%%\bin;%Path%"
    )
    exit

     

    tomcat启动服务.bat文件:

    echo
    call "%~dp0%service.bat" install tomcat6
    echo
    sc config tomcat6 start= auto
    sc start tomcat6
    rem 下面两句是设置到服务里自动启动的
    wmic service where name="tomcat6" changestartmode "automatic"
    wmic service where name="tomcat6" startservice
    exit

     

    下面重点说下tomcat的service.bat文件,因为这个文件要配置tomcat6w.exe文件的java里的jvm

    ,如果不配置好服务里的tomcat是无法启动的,启动就会报。而且tomcat6w.exe也打不开,会出现这个错误。所以service.bat文件很重要,下面给出我修改的service.bat,可以把这个复制下去后用beyond compare这个工具和原来tomcat里的service.bat文件比较下就可以清楚的看到我修改的东西。如果想弄清楚service.bat文件里语句的走向流程的话可以在开始的时候把@echo off改成@echo on然后在结尾的地方加暂停(pause),然后保存下,双击运行,就会弹出

    然后把这里面的语句和service.bat里的语句进行对比就会明白service里语句是怎么运行的,以及它的作用。

     

    service.bat配置如下:

    @echo off
    rem Licensed to the Apache Software Foundation (ASF) under one or more
    rem contributor license agreements.  See the NOTICE file distributed with
    rem this work for additional information regarding copyright ownership.
    rem The ASF licenses this file to You under the Apache License, Version 2.0
    rem (the "License"); you may not use this file except in compliance with
    rem the License.  You may obtain a copy of the License at
    rem
    rem     http://www.apache.org/licenses/LICENSE-2.0
    rem
    rem Unless required by applicable law or agreed to in writing, software
    rem distributed under the License is distributed on an "AS IS" BASIS,
    rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    rem See the License for the specific language governing permissions and
    rem limitations under the License.

    rem ---------------------------------------------------------------------------
    rem NT Service Install/Uninstall script
    rem
    rem Options
    rem install                Install the service using Tomcat6 as service name.
    rem                        Service is installed using default settings.
    rem remove                 Remove the service from the System.
    rem
    rem name        (optional) If the second argument is present it is considered
    rem                        to be new service name
    rem ---------------------------------------------------------------------------

    setlocal

    rem Guess CATALINA_HOME if not defined
    set "CURRENT_DIR=%cd%"
    rem if not "%CATALINA_HOME%" == "" goto gotHome
    set "CATALINA_HOME=%cd%"
    if exist "%CATALINA_HOME%\bin\tomcat6.exe" goto okHome
    rem CD to the upper dir
    cd ..
    set "CATALINA_HOME=%cd%"  
    :gotHome
    if exist "%CATALINA_HOME%\bin\tomcat6.exe" goto okHome
    echo The tomcat6.exe was not found...
    echo The CATALINA_HOME environment variable is not defined correctly.
    echo This environment variable is needed to run this program
    goto end
    :okHome
    rem Make sure prerequisite environment variables are set
    if not "%JAVA_HOME%" == "" goto gotJdkHome
    if not "%JRE_HOME%" == "" goto gotJreHome
    echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
    echo Service will try to guess them from the registry.
    goto okJavaHome
    :gotJreHome
    if not exist "%JRE_HOME%\bin\java.exe" goto noJavaHome
    if not exist "%JRE_HOME%\bin\javaw.exe" goto noJavaHome
    goto okJavaHome
    :gotJdkHome
    set "JRE_HOME=%JAVA_HOME%\jre"
    if not exist "%JAVA_HOME%\jre\bin\java.exe" goto okJavaHome
    if not exist "%JAVA_HOME%\jre\bin\javaw.exe" goto noJavaHome
    if not exist "%JAVA_HOME%\bin\javac.exe" goto noJavaHome
    if not "%JRE_HOME%" == "" goto okJavaHome
    set "JRE_HOME=%JAVA_HOME%\jre"
    goto okJavaHome
    :noJavaHome
    echo The JAVA_HOME environment variable is not defined correctly
    echo This environment variable is needed to run this program
    echo NB: JAVA_HOME should point to a JDK not a JRE
    goto end
    :okJavaHome
    if not "%CATALINA_BASE%" == "" goto gotBase
    set "CATALINA_BASE=%CATALINA_HOME%"
    :gotBase
     
    set "EXECUTABLE=%CATALINA_HOME%\bin\tomcat6.exe"

    rem Set default Service name
    set SERVICE_NAME=Tomcat6
    set DISPLAYNAME=HQTomcat6
    if "x%1x" == "xx" goto doInstall
    set SERVICE_CMD=%1
    shift
    if "x%1x" == "xx" goto checkServiceCmd
    set SERVICE_NAME=%1
    set DISPLAYNAME=HQTomcat6 %1
    shift
    if "x%1x" == "xx" goto checkServiceCmd
    echo Unknown parameter "%1"
    goto displayUsage
    :checkServiceCmd
    if /i %SERVICE_CMD% == install goto doInstall
    if /i %SERVICE_CMD% == remove goto doRemove
    if /i %SERVICE_CMD% == uninstall goto doRemove
    echo Unknown parameter "%SERVICE_CMD%"
    :displayUsage
    echo.
    echo Usage: service.bat install/remove [service_name]
    goto end

    :doRemove
    rem Remove the service
    echo Removing the service '%SERVICE_NAME%' ...
    echo Using CATALINA_BASE:    "%CATALINA_BASE%"

    "%EXECUTABLE%" //DS//%SERVICE_NAME% ^
        --LogPath "%CATALINA_BASE%\logs"
    if not errorlevel 1 goto removed
    echo Failed removing '%SERVICE_NAME%' service
    goto end
    :removed
    echo The service '%SERVICE_NAME%' has been removed
    goto end

    :doInstall
    set "JRE_HOME=%JAVA_HOME%\jre"
    rem Install the service
    echo Installing the service '%SERVICE_NAME%' ...
    echo Using CATALINA_HOME:    "%CATALINA_HOME%"
    echo Using CATALINA_BASE:    "%CATALINA_BASE%"
    echo Using JAVA_HOME:        "%JAVA_HOME%"
    echo Using JRE_HOME:         "%JRE_HOME%"

    rem Try to use the server jvm
    rem set "JVM=%JRE_HOME%\bin\server\jvm.dll"
    rem if exist "%JVM%" goto foundJvm
    rem Try to use the client jvm

    set "JVM=%JRE_HOME%\bin\client\jvm.dll"
    if exist "%JVM%" goto foundJvm
    echo Warning: Neither 'server' nor 'client' jvm.dll was found at JRE_HOME.
    set JVM="%JAVA_HOME%\jre\bin\client\jvm.dll"
    :foundJvm
    echo Using JVM:              "%JVM%"

    set "CLASSPATH=%CATALINA_HOME%\bin\bootstrap.jar;%CATALINA_BASE%\bin\tomcat-juli.jar"
    if not "%CATALINA_HOME%" == "%CATALINA_BASE%" set "CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\tomcat-juli.jar"

    "%EXECUTABLE%" //IS//%SERVICE_NAME% ^
        --Description "Apache Tomcat 6.0.45 Server - http://tomcat.apache.org/" ^
        --DisplayName "%DISPLAYNAME%" ^
        --Install "%EXECUTABLE%" ^
        --LogPath "%CATALINA_BASE%\logs" ^
        --StdOutput auto ^
        --StdError auto ^
        --Classpath "%CLASSPATH%" ^
        --Jvm "%CATALINA_HOME%\bin\Java\jdk1.6.0_45\jre\bin\client\jvm.dll" ^
        --StartMode jvm ^
        --StopMode jvm ^
        --StartPath "%CATALINA_HOME%" ^
        --StopPath "%CATALINA_HOME%" ^
        --StartClass org.apache.catalina.startup.Bootstrap ^
        --StopClass org.apache.catalina.startup.Bootstrap ^
        --StartParams start ^
        --StopParams stop ^
        --JvmOptions "-Dcatalina.home=%CATALINA_HOME%;-Dcatalina.base=%CATALINA_BASE%;-Djava.endorsed.dirs=%CATALINA_HOME%\endorsed;-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" ^
        --JvmMs 128 ^
        --JvmMx 256
    if not errorlevel 1 goto installed
    echo Failed installing '%SERVICE_NAME%' service
    goto end
    :installed
    echo The service '%SERVICE_NAME%' has been installed.

    :end
    cd "%CURRENT_DIR%"

    主要的东西都在这里,然后还有tomcat端口的配置我在这里就不说了。参考博客:

    http://blog.csdn.net/liuhaomatou/article/details/52576162

    展开全文
  • javaWeb项目打包成exe安装程序

    千次阅读 2019-09-03 23:21:11
    javaWeb项目打包成exe安装程序前言适用环境原理依赖包资源打包步骤注意事项插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何...

    前言

    因公司业务需要,开发的javaWeb项目要打包成exe可执行安装程序给代理商或者是客户自行安装,特此做过一点研究,并于三年前写了一篇博文分享了我的成功方法。多年来一直陆续有网友向我咨询和索要相关依赖包和demo,能得到大家的关注,不胜感激。但是因为我的方法在多年实施过程中也陆续发现了一系列的问题,加上一直业务比较繁忙没有时间整理,该方法涉及的知识面较多,故并没有很好地给大家回复,实属抱歉。近期工作较为清闲,我简明扼要的整理了一下以前的资料并验证,在此公布给他家,希望能帮到有需要的网友。经历过的问题我就不一一阐述了,直接拿出我认为最合适的说明方式,附件内的资料中都有注解,用过之后就会理解我的做法的含义了。

    其实在我看来,我的这个方法实属鸡肋,不过特定行业,特定人群确实需要。

    适用环境

    本方法仅限windowXP,win7 32位及64位操作系统。

    原理

    在我认为,一个程序能在window上能运行需要依赖两个东西:文件和服务。
    文件可以理解为java代码,Tomcat包,mysql包等文件。
    服务用于控制应用程序的自动启停。
    javaWeb应用程序依赖包有:java,Tomcat,数据库,还有就是我们的java代码。
    我的方法是:制作java,Tomcat,数据库的绿色版压缩包,通过脚本进行安装注册服务,最后通过打包工具封装成exe可执行文件,打上一个logo,优化一系列安装过程界面即成为了一个安装程序。

    依赖包资源

    jdk7包:是jdk1.7,我修改过的。
    tomcat7包:官网下载的Tomcat7,我修改过,我另外有做嵌入了jdk的版本,这里为说明打包方法就用简单的了。
    zsMysql5包:mysql5.26版本数据库,我修改过,可反复使用并且可以带密码,带数据进行迁移安装。
    NSIS软件:打包工具,可以制作exe可执行文件。
    bat包:我制作的一系列会用到的bat脚本。
    icon包:应用程序logo。
    nsi文件:我已经写好了的打包成exe程序的脚本,你们直接在NSIS软件中执行,即可安装所有依赖包(但是没有服务,服务需要运行脚本注册启动)
    还有其他文档不做赘述,所有依赖包及资料附件压缩包里都有。
    因上传文件大小限制,我把zsMysql包单独上传了,所有有2个包
    下载zsStudy: javaWeb项目封装成exe资源包
    下载zsMysql5: zsMysql5资源包

    打包步骤及安装步骤

    如何制作exe可执行安装包程序
    1.把下载的压缩包解压到E盘,因为脚本里面已经写死了从E盘拿资源。
    2.运行安装E:\zsStudy\exe目录内的【NSIS项目打包工具.exe】
    3.把zsMysql5文件夹解压到D盘;使用目录内的【注册服务.bat】脚本注册并运行;然后登陆调好你自己需要的配置信息,【my.ini】配置文件可以配置端口及账号密码等信息;最后导入你的项目sql,最好你自己那这个库测试以下是否通过。调试完成后,再把zsMysql5目录移动到E:\zsStudy\unit32目录下。(移动zsMysql5需要先停止zsMysql5服务,并把zsMysql5服务删除,才能把文件移走。在新的计算机上重新安装后,数据库原账号密码以及数据库内容统统都会存在。)
    4.把你的java项目包放到E:\zsStudy\unit32\tomcat7\webapps目录下,注意配置好数据源跟zsMysql5数据库一致。在E:\zsStudy\unit32\tomcat7\conf目录内可以配置Tomcat的端口等信息。
    5.修改并在NSIS程序中执行【java项目打包成exe脚本.nsi】脚本文件。(脚本内每一行都有注解)
    6.等待执行成功后,会在目录内生成【zsStudy系统.exe】可执行文件。
    安装步骤
    请阅读完本文所有内容后再操作
    1.运行【zsStudy系统.exe】,过程中会选择语言,同意许可协议等不做细说。执行成功后,所有的包会安装在D:/zsStudy目录中,zsMysql5我特意单独放在了D盘。NSIS软件中其实有可以选择安装目录的操作,但是涉及较广,操作起来比较麻烦,有兴趣的可以去试一下。
    2.运行bat脚本,在D:\zsStudy\bat目录中,执行顺序我都在脚本名字上写了123,三步即可。执行过程中的结果输出到D:\zsStudy.txt文件中
    3.执行完后,可以去计算机服务中查看zsMySQL服务及zsStudy服务是否正常启动,若正常执行第四步,若不正常请查看D:\zsStudy.txt日志文件,并参考【答疑】内说明。
    4.通过桌面快捷方式访问,或者浏览器访问:http://localhost:8080
    注意事项:
    1.第一次使用,最好不要在我的demo上做任何修改,上面步骤提到的所有修改内容请暂时忽略,等你弄明白后再修改成你自己的。
    2.如果执行不成功,NSIS中会有提示,原因都是需要的资源拿不到,是因为你的资源目录写错了。
    3.我的这个demo里我去掉了我的项目代码包,但是你访问后能看到Tomcat跟数据库运行正常,相信你应该知道接下来该怎么做。

    答疑

    1.安装成功后,运行脚本异常:请使用系统管理员用户运行脚本,并暂时关闭杀毒软件或者允许执行通过白名单。因为bat命令可以直达计算机底层,篡改计算机系统配置信息,操作较为变态,所以杀毒之类的见到就会阻止。不放心的可以打开看我的脚本中写的啥,特意没有封装,就是供大家审阅的。
    2.脚本执行后,服务无法启动:因为环境变量并没有实时修改(可以查看D:\zsStudy.txt文件内容知道,JAVA_HOME等环境变量没有获取到),需要重启电脑后才会生效,所以注册服务时压根没有获取到环境变量,才会注册异常,导致服务无法启动。(有的电脑会是这样,特别是window专用版,主要原因还是用户操作权限不够)解决方式为:删除所有服务,重启电脑,再次注册服务。
    3.切记该安装包仅适用windowXP,win7 32位及64位操作系统。各操作系统差异其实都很大,不同的版本要做不同的处理,为图省事,我也只是做了适用这两个版本的。

    展开全文
  • 目前好多管理系统都是基于web项目,业务部门提出需求要做成exe可执行文件,需求提了,那就做吧,现将制作过程整理如下: 第一步:将浏览器嵌入到java swing中,需要的三个包如下:DJNativeSwing.jar ...
  • http://topic.csdn.net/u/20080719/16/b5ff33e2-51ec-4516-b38c-3a5cd2f63dff.html步骤: 1、添加一个新项目->选择类库模板->命名为DBCustomAction 2、单击项目右键->添加新项->选择安装程序类(命名为DBCustomAction....
  • Spring Boot项目成exe文件

    千次阅读 2019-06-10 10:27:14
    一、下载Java转Exe文件工具(exe4j) 地址:https://exe4j.apponic.com/ 破解码:L-g782dn2d-1f1yqxx1rv1sqd Icon File 是exe图标,可以不选 GUI application是后台启动程序,没有dos启动停止界面 Console ...
  • idea java web项目导出为jar打包成可运行exe程序

    千次阅读 多人点赞 2019-12-04 16:12:29
    前几天一个朋友找我,说有一个 数据接口开发 能够页面展示的小项目,能够在本地运行就行,不需要放到网上,问我这边可不可以做,本来想 婉言谢绝 的,但是听到说,可以给点 辛苦费,于是想到了 李白大诗人 说的一句...
  • 1.下载并安装Node.js,下载连接https://nodejs.org/en/,选择合适自己电脑的版本,下载安装即可。 检查是否安装成功: 按下键盘win+R键,打开运行窗口,输入“cmd”,点击确定。 输入 “node -v” ,回车,显示...
  • web项目前期安装比较复杂,对于普通的无技术人员,还是比较麻烦的,就需要公司的技术支持去安装,比较耗费人力,想做傻瓜式的,交给客户,直接一直“下一步”,安装完成并启动就可以,类似桌面应用的exe安装文件。...
  • 注:此方式需要外部 JRE ...一、下载Java转Exe文件工具(exe4j) 地址:https://exe4j.apponic.com/ 破解码:L-g782dn2d-1f1yqxx1rv1sqd 二、Jar 转 Exe 步骤            ...
  • 安装完成后自动发布到tomcat,服务设置自动,每次开机启动服务。 卸载时数据库,tomcat jdk全部卸载,包括服务。 求指点如何做。先谢谢各位了。 注:不是异想天开,现在有一实例就是这样的,所以打算参照这...
  • VS2019项目打包生成.exe文件与Setup

    万次阅读 多人点赞 2019-08-02 16:51:33
    对于Visual Studio Installer ,我们通常称为:setup项目,是一个用于自定义安装部署的项目方案。但是在VS2017,VS2019中均不见了,微软是有意废除安装项目的,合作了一个第三方的安装项目单独使用。 我们可以从官网...
  • java项目成exe格式

    千次阅读 2018-09-10 11:21:12
    Java项目打包成exe的详细教程 把Java项目打包成exe共分为以下两步: 1、 利用Eclipse先把Java项目先打jar包 2、 利用exe4j工具把jar包转成exe   这里以Java项目ExeDemo)为例进行讲解 随便在一个位置新建...
  • NW.js把web程序打包桌面exe文件

    万次阅读 2015-10-21 11:25:10
    用node-webkit把web应用打包桌面应用 node-webkit是一个Chromium和node.js上的结合体,通过它我们可以把建立在chrome浏览器和node.js上的web应用打包桌面应用,而且还可以跨平台的哦。很显然比起传统的桌面...
  • web端启动本地exe客户端

    千次阅读 2020-07-20 17:35:41
    由于第三方客户端安装目录不定,所以当安装目录变更时,需要再到exe文件所在目录下重新注册自定义协议,确保协议中command的命令值更新,能够找到需要启动的客户端。 世界这么大,我只是一个永远需要不断学习和思考...
  • JavaWeb项目打包Tomcat,MySQL,Java.exe可执行安装包 本打包方式采用全绿色版本软件打包,用户安装可以直接点击下一步下一步即可;可同时支持win XP和Win7,同时支持32位和64位操作系统;支持Windows service操作...
  • 将java项目打包jar包并生成可独立执行的exe文件

    万次阅读 多人点赞 2017-07-10 09:38:04
    项目要求,需要将java项目生成exe文件,网上有许多文章,可有些直接复制,现将自己的整理出来: 一:思路: 1、将java项目打包jar包 2、将jar包生成exe文件 二:准备工作: jar文件生成exe文件用到第三方...
  • 关于用hbuilder将web项目打包app

    千次阅读 2019-09-20 09:38:21
    1.vue打包前,需要做个处理:找到vue项目下config文件中的index.js,将assetsPublicPath修改'./' 处理完在项目文件下执行打包命令:npm run build 得到dist文件 如图: 2.在hbuilder里新建app项目(默认模板...
  • 3、jar包转化成exe文件步骤 1、准备工作 (1)JAR file和Runnable JAR file,它们的不同点在哪? ...
  • maven项目使用JavaFX生成可运行exe文件

    千次阅读 2019-05-27 21:35:46
    最近研究OCR技术,需要使用javafx-maven-plugin生成可运行的exe文件,但是遇到以下问题: [INFO] Skipping 'EXE 安装程序' because of configuration error '找不到 InnoSetup 编译器 (iscc.exe)。' Advice to fix...
  • java web 项目打包、加密工具

    热门讨论 2012-06-18 17:08:17
    通过将web项目整合到一个exe文件中,实现加密、打包、安装一步到位。真正做到了安全、简单、方便! --------------------------------------------------------------------- JInstall—专业的java web 项目打包...
  • 今天做的是将java项目生成可安装exe文件,一并将jre也打包进去了,用到eclipse、exe4j、Inno setup ,这样可以在没安装java虚拟机的电脑上安装使用该程序。下面介绍详细步骤。 一、将java项目打包; 我用的是...
  • web应用打包成为exe

    千次阅读 2019-03-02 22:27:23
    HTML网页/KRPano项目一键打包EXE工具(HTML网页打包单个windows可执行文件exe) ...web项目打包成exe在windows下一键安装 jdk+Tomcat+mysql https://blog.csdn.net/dj0721/article/details/72462688 jd...
  • 2. VS2015安装 3. VS2015安装C++的内容 作者:大曲曲 邮箱:xiaoxia.qu@foxmail.com 本文最终目标:要实现VS2015+QT5+OpenCV3开发环境搭建 1. VS2015下载 Visual studio官方网站:...
  • vs2019安装及简单处理(详细的很)

    万次阅读 多人点赞 2020-03-04 11:55:13
    点进去之后会开始自动下载vs.exe一个文件: 点开下载的文件之后: 进去后就会出现主界面,在勾选这栏,当然你可以考虑一下安装的位置,系统一般默认安装到C盘,但有时C盘负荷太大你可以调到别的地方(建议还是默认...
  • 一、软件准备 1、下载免安装的mysql、jdk(我用...3、下载exe启动jar包工具javalauncher和更换exe图标工具rh_chinese_gb 二、脚本准备 注意:所有的脚本都保存为ANSI格式,否则在执行脚本时,会出现乱码,导致...
  • 本章以eclipse开发的JSP项目为例

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 76,484
精华内容 30,593
关键字:

web项目安装成exe文件