一直喜欢用绿色的程序,解压缩就可以用,方便又不向操作系统添加过多东西。

即使不是纯绿色的程序,运行一个批处理或者绿化程序也比原来的安装包方便。

偶尔用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%\SysWOW64\cmd /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%\SysWOW64\cmd /c "卸载.bat"
    )
echo 卸载完毕
pause
exit

注册表数据可以通过导入*.reg文件添加到注册表,但是内容需要预先改好。通过reg命令添加到注册表更加灵活,可以根据当前路径设置数据。有一个工具可以在网上搜索到,Reg2Bat_vbs,可以将导出的注册表文件转成reg命令的批处理。

导入已经修改好的注册表文件:
reg import "user 1导入.reg"
使用当前目录作为注册表数据:
reg add HKLM\SOFTWARE\Microsoft\Windows\Help /v d5corba.hlp /d "%cd%\Help" /f
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDlls /v "%~dp0sys32\dss50.bpl" /t REG_dword /d 1 /f
删除注册表数据:
reg delete "HKCU\SOFTWARE\Software\Borland\Delphi\5.0" /va /f

*.hlp文件需要注册到操作系统,例如上面的代码,win7以上操作系统还要安装hlp阅读软件的补丁。
*.dll文件可以通过添加注册表数据添加,例如上面的代码,也可以使用regsvr32命令进行注册,但有些文件注册时候提示出错。

修改path环境变量以及创建快捷方式可以使用系统dos命令,但使用第三方工具更方便一点。ShortCut和EditPath两个第三方工具可以在下面网址找到。http://www.bathome.net/s/tool/index.html

添加路径:uu\editpath -au "%cd%\sys32"
删除路径:uu\editpath -ru "%cd%\sys32"
Delphi5需要添加安装文件中system32文件夹和Projects\Bpl文件夹到path环境目录。

创建快捷方式:

@echo off
for,/f,"skip=1 tokens=1,2,*",%%a,in,('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Desktop'),do,( 
    @set PathAll_=%%c
    )
start uu\shortcut.exe /f:"%PathAll_%\Delphi5 Green.lnk" /a:c /t:"%cd%\Bin\delphi32.exe"
rem 修改过桌面路径的操作系统不能用start uu\shortcut.exe /f:"%USERPROFILE%\Desktop\Delphi5 Green.lnk" /a:c /t:"%cd%\Bin\delphi32.exe"

删除快捷方式:if exist "%PathAll_%\Desktop\Delphi5 Green.lnk" (del "%PathAll_%\Desktop\Delphi5 Green.lnk")

“批处理之家”是学些和查询第三方工具的好地方,“脚本之家”是搜索批处理代码的好地方。