上一篇 写了 J2EE 打包 一键安装 固定路径,此文说下灵活路径,相关bat文件都需要处理。
一直想mysql如果可以灵活安装路径,而且my.ini文件可以自动处理,看过tomcat 的安装tomcat安装由于有环境变量,所以tomcat的安装不存在难点,但是整理我们要处理的东西很多。
想要一次性安装所有,绝非容易的,但也不是做不到。
先说下构思:
1:为按照的web项目添加一个环境变量,由于windows的环境变量其实是注册表。如:WEB_HOME
2:在原有的tomcat.bat,mysql.bat,install.bat文件中,先获取web的环境变量WEB_HOME,set一个变量值,如下:
rem 读取WEB_HOME的植
for /f "skip=4 tokens=1,2 delims=:" %%a in ('reg query "HKLM\system\controlset001\control\session manager\environment" /v WEB_HOME') do (
set "a=%%a"
set "b=%%b"
)
set "webPath=%a:~-1%:%b:\=\%"
set homePath=%webPath%
set p=%homePath:~0,1%
homePath 即使我们按照产品的目录的路径 ,P为盘符
3: 添加一个修改my.ini的bat的文件:
保存为myren.bat
@ECHO OFF
color 01a
rem 不能用绿色的mysql
@ECHO 数据库安装进行中,请不要中断 ......
rem 读取WEB_HOME的值
for /f "skip=4 tokens=1,2 delims=:" %%a in ('reg query "HKLM\system\controlset001\control\session manager\environment" /v WEB_HOME') do (
set "a=%%a"
set "b=%%b"
)
set "hqPath=%a:~-1%:%b:\=\%"
set homePath=%hqPath%
rem 单个字符替换
set homePath=%homePath:\=/%
echo %homePath%
set p=%homePath:~0,1%
@echo %p%
%p%:
set mysqlPath=%WEB_HOME%\mysql5.1
cd %mysqlPath%
ren my.ini=myII.ini
echo 替换字符:
call :replace myII.ini D:/mysql5.1/ %homePath%/
pause>nul
goto :eof
:replace
setlocal ENABLEDELAYEDEXPANSION
for /f "tokens=1* delims=" %%i in (%1) do (
set var=%%i & echo !var:%2=%3! >>myIII.ini
)
endlocal
ren myIII.ini=my.ini
@ECHO 恭喜你 处理完成
goto :eof
pause
上面此代码: call :replace myII.ini D:/mysql5.1/ %homePath%/
注意:D:/mysql5.1 是我原来安装的路径,也就是说my.ini里面指向的路径,这个大家根据实际情况进行修改。
4:修改install文件,install其实是调用其他的bat文件,此处顺序:
4.1:call myren.bat
4.2: call mysql.bat
4.3: call tomcat.bat
4.4: call 设置手动(自动)启动
5:打包,利用工具打包:
注意项:
5.1 对话框常规项中,固定路径不打钩
5.2 在注册表项中,添加:
主键:HEKY_LOCAL_MACHINE
子建:SYSTEM\ControlSet001\Control\Session Manager\Environment
名称:WEB_HOME
类型:REG_SZ
数据:%InstallPath%
此动作是第一步骤的实现。