一直喜欢用绿色的程序,解压缩就可以用,方便又不向操作系统添加过多东西。
即使不是纯绿色的程序,运行一个批处理或者绿化程序也比原来的安装包方便。
偶尔用Delphi5写点小程序,需要用就安装,不需要就卸载,但是安装卸载有点麻烦。
想做一个绿化程序,觉得有点复杂,而且不通用。
使用安装脚本虽然方便,但还是要重新学专用的脚本语言。
最终还是选择了批处理。
主要步骤:安装Delphi5及升级文件,提取文件及注册表信息,制作批处理(注册DLL,修改Path环境变量,注册表增加一些数据,创建快捷方式)。
提取文件,有些文件在程序目录中,有些在系统的system32中,有些在share中。这些文件统统复制到一起,分别放在子文件夹中。
注册表需要提取的内容在以下几个分支中:Help,SharedDlls,Borland。regedit或Registry_Workshop可以搜索和导出注册表数据。
制作安装和卸载批处理需要一个选择菜单并判断操作系统是32位还是64位。64位的操作系统中,32位的应用程序访问system32路径或注册表HKLM分支,都会转到sysWOW64路径及Wow6432Node分支,不用特殊的api是不能访问system32路径和原注册表项的,Delphi5是32位的,所以要用32位的cmd执行批处理,才会对Delphi5有效。
@echo off cls :memu echo 功能选择 echo ============================== echo. echo 输入1,安装Delphi5 echo. echo 输入2,卸载Delphi5 echo. echo 输入3,退出 echo. echo ============================== rem echo 请输入: set /p user_input=请输入: if "%user_input%" equ "1" ( goto setup) if "%user_input%" equ "2" ( goto unsetup) if "%user_input%" equ "3" ( exit ) echo. echo 输入错误,请重新输入。 echo. goto memu :setup rem 判断64位系统32位系统 if /i %PROCESSOR_IDENTIFIER:~0,3%==x86 ( echo 32位操作系统,开始安装。 start "安装.bat" ) else ( echo 64位操作系统,使用32位cmd执行安装。 start %WinDir%SysWOW64cmd /c "安装.bat" ) echo 安装完毕 pause exit :unsetup rem 判断64位系统32位系统 if /i %PROCESSOR_IDENTIFIER:~0,3%==x86 ( echo 32位操作系统,开始卸载。 start "卸载.bat" ) else ( echo 64位操作系统,使用32位cmd执行卸载。 start %WinDir%SysWOW64cmd /c "卸载.bat" ) echo 卸载完毕 pause exit
注册表数据可以通过导入*.reg文件添加到注册表,但是内容需要预先改好。通过reg命令添加到注册表更加灵活,可以根据当前路径设置数据。有一个工具可以在网上搜索到,Reg2Bat_vbs,可以将导出的注册表文件转成reg命令的批处理。
导入已经修改好的注册表文件:
reg import "user 1导入.reg"
使用当前目录作为注册表数据:
reg add HKLMSOFTWAREMicrosoftWindowsHelp /v d5corba.hlp /d "%cd%Help" /f
reg add HKLMSOFTWAREMicrosoftWindowsCurrentVersionSharedDlls /v "%~dp0sys32dss50.bpl" /t REG_dword /d 1 /f
删除注册表数据:
reg delete "HKCUSOFTWARESoftwareBorlandDelphi5.0" /va /f
*.hlp文件需要注册到操作系统,例如上面的代码,win7以上操作系统还要安装hlp阅读软件的补丁。
*.dll文件可以通过添加注册表数据添加,例如上面的代码,也可以使用regsvr32命令进行注册,但有些文件注册时候提示出错。
修改path环境变量以及创建快捷方式可以使用系统dos命令,但使用第三方工具更方便一点。ShortCut和EditPath两个第三方工具可以在下面网址找到。http://www.bathome.net/s/tool/index.html
添加路径:uueditpath -au "%cd%sys32"
删除路径:uueditpath -ru "%cd%sys32"
Delphi5需要添加安装文件中system32文件夹和ProjectsBpl文件夹到path环境目录。
创建快捷方式:
@echo off for,/f,"skip=1 tokens=1,2,*",%%a,in,('reg query "HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerShell Folders" /v Desktop'),do,( @set PathAll_=%%c ) start uushortcut.exe /f:"%PathAll_%Delphi5 Green.lnk" /a:c /t:"%cd%Bindelphi32.exe" rem 修改过桌面路径的操作系统不能用start uushortcut.exe /f:"%USERPROFILE%DesktopDelphi5 Green.lnk" /a:c /t:"%cd%Bindelphi32.exe"
删除快捷方式:if exist "%PathAll_%DesktopDelphi5 Green.lnk" (del "%PathAll_%DesktopDelphi5 Green.lnk")
“批处理之家”是学些和查询第三方工具的好地方,“脚本之家”是搜索批处理代码的好地方。