zoukankan      html  css  js  c++  java
  • 用批处理安装卸载程序

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

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

    偶尔用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")

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

  • 相关阅读:
    Bit Manipulation
    218. The Skyline Problem
    Template : Two Pointers & Hash -> String process
    239. Sliding Window Maximum
    159. Longest Substring with At Most Two Distinct Characters
    3. Longest Substring Without Repeating Characters
    137. Single Number II
    142. Linked List Cycle II
    41. First Missing Positive
    260. Single Number III
  • 原文地址:https://www.cnblogs.com/unjiang/p/7729308.html
Copyright © 2011-2022 走看看