中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]我的超强一键软件安装管理器
作者:
标题: [原创]我的超强一键软件安装管理器 上一主题 | 下一主题
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『楼 主』:  [原创]我的超强一键软件安装管理器

经过半个多月对VBS和HTML的学习,结合自己在电脑维护中的一些经验,编写这个超强的一键软件安装管理器,主要用于绿色软件的安装,也可以用于非绿色软件的安装,还支持批量解压(需要RAR3.7以上版的支持)。
在这次个程序的制作中特别感谢ZH159兄和其他兄弟和朋友的支持。在此致以特别的感谢,程序界面参考了ZH159兄的“谁说批处理界面不漂亮”。
这个软件支持CMD界面和WINDOWS图形界面模式安装;支持繁体和简体语言的自动识别和转换;支持批量安装,支持批量绿色软件修复,支持批量解压;支持安装脚本的制作。

程序基于BAT+VBS+HTML制作,下面对主要功能简单说明一下:
安装方式我给出了4种,第一钟常规方式,不仅可以用来批量安装绿色软件(要求绿色软件中有GSETUP.BAT绿化设置,必须使用WINRAR 或7ZIP压缩),而且可以批量安装普通的EXE软件;第二种则只安装经过特殊制作的WINRAR制作的EXE压缩包,怎么个特殊法,其实就是在压缩绿色软件时在绿色软件解压缩时自动调用里面的GSETUP.BAT来实现,这样就简化了安装过程,我的绿色软件基本上都是这样的模式,比较方便,既可以手动安装,又可以使用RAR命令来解压缩安装.第三种方式表示修复安装后的绿色软件,原因很简单,如果重新安装了系统等,原来的绿色软件就无法再使用了,那么就可以简单的使用这个修复功能了,自动历篇指定目录的存在GSETUP.BAT并执行之.第四个则是直接历篇指定目录中的UINSTALL.BAT来进行绿色软件的删除.
关于脚本的制作,实际上是使用FOR命令和RAR命令获取目录和子目录中所有的EXE,RAR,7Z软件,并把其注释写入到一个文件中,制作安装脚本有两个好处,一是可以加速安装速度,免除每次安装时自动获取目录和子目录中的软件列表;二是可以把注释获取出来,用户可以重新制作注释以便作为安装说明,在IE界面中可以把这些注射读出来以便用户参考。

我把整个软件的压缩包传上来,请不要改变里面的文件名称,否则可能出现错误。把压缩包解压缩后放到需要安装软件的目录或父目录即可。
@ECHO OFF
REM RMODLE为软件运行模式为RCMD版还是图形界面版RGRAPTH,如果是RCMD模式需要设置INSTALLMODLE:M1普通安装;M2特定压缩包安装;M3绿软一键修复;M4绿软一键卸载
mode con cols=20 lines=1
SET TIMEOUT=3
SET PATH=%CD%;%CD%\TOOLS\;%PATH%
SET RMODLE=RCMD
REM CMDOW @ /DIS

FOR /F "TOKENS=1,2 DELIMS=: " %%I IN ('CHCP') DO SET LAN=%%J
IF "%JUT%"=="1" GOTO CHS
IF "%LAN%"=="936" GOTO :CHS
IF "%LAN%"=="437" GOTO :CHS
:CHT
SET JUT=1
START /WAIT CT.EXE /B /S "ONEGSETUP.BAT" /D "ONEGSETUPCHT.BAT"
START /B/WAIT ONEGSETUPCHT.BAT
IF EXIST ONEGSETUPCHT.BAT DEL ONEGSETUPCHT.BAT
EXIT

:CHS
CLS
>Temp.vbs  Echo intAnswer = MsgBox("要进行WINDOWS下的图形界面安装则选择是(Y),否则只在CMD下进行安装!" , vbQuestion+vbYesNo, "小不点温馨提示!")
>>Temp.vbs  Echo IF intAnswer = vbYes THEN
>>Temp.vbs  Echo Wscript.Echo "RGRAPTH"
>>Temp.vbs  Echo ELSEIF intAnswer = vbNo THEN
>>Temp.vbs  Echo Wscript.Echo "RCMD"
>>Temp.vbs  Echo END If
For /f "delims=" %%A In ('"cscript //nologo Temp.vbs"') do (GOTO :%%A)

:RCMD
CLS
mode con cols=70 lines=30
ECHO.
ECHO                   一键安装管理器V1.0可以实现如下功能
ECHO     1.根据子目录中的*G.EXE安装绿软;2.也可用于非绿色软件安装
ECHO 提示:本程序一般只能用于本人制作的绿软安装;要安装非绿软请改文件名
ECHO.
ECHO ╔──────────────────────────────╗
ECHO │                                                            │
ECHO │                   一键安装管理器V1.0                       │
ECHO │              本程序由小布点(秋语)编写制作                  │
ECHO │          欢迎使用小布点制作的绿色软件和其他程序            │
ECHO │     本程序可以自由复制,使用和发布,版权归作者本人所有       │
ECHO │  QQ:9399100 QQ群号:29946542 E-MAIL:xiaobudian528@sina.com  │
ECHO │                                                            │
ECHO ╚──────────────────────────2007─㊣╝
ECHO.
ECHO 正在进行清理前的准备工作,请稍候.........
PING 127.0.0.1 -n %TIMEOUT% >NUL
mode con cols=20 lines=1

REM 设置安装目录IPATH,安装目录最后一个符号不能为\,否则将无法安装
:IPATH
>"%TEMP%\Temp.vbs"   Echo intAnswer = inputbox("请你输入要安装的目录,输入时不要输入最后一个\符号,默认为D:\GRENN","安装目录","D:\GREEN")
>>"%TEMP%\Temp.vbs"  Echo Wscript.Echo intAnswer
For /f "delims=" %%A In ('"cscript //nologo "%TEMP%\Temp.vbs""') do (SET IPATH=%%A)
IF NOT DEFINED IPATH GOTO :IPATH

REM 跳转到相应的安装模式,如果是直接设置安装模式可以使用:FOR /F %%I IN ("%INSTALLMODLE%") DO (GOTO :%%I)或IF "%INSTALLMODLE%"=="%INSTALLMODLE%" GOTO :%INSTALLMODLE%
:INSTALLMODLE
>"%TEMP%\Temp.vbs"   Echo intAnswer = inputbox("请你输入安装模式,须是英文大写字母:" + vbCrlf + "M1:一键普通安装,可安装普软或绿软;" + vbCrlf + "M2:一键绿软安装,安装特定EXE压缩绿软;" + vbCrlf + "M3:一键绿软修复,可修复已经安装的绿软" + vbCrlf + "M4:一键绿软卸载,可删除已安装的绿软;" + vbCrlf + "GL:制作安装脚本,可生成安装文件列表","安装模式","M1")
>>"%TEMP%\Temp.vbs"  Echo Wscript.Echo intAnswer
For /f "delims=" %%I In ('"cscript //nologo "%TEMP%\Temp.vbs""') do (SET INSTALLMODLE=%%I)
IF NOT DEFINED INSTALLMODLE GOTO :INSTALLMODLE
IF "%INSTALLMODLE%"=="M1" (SET ISF=*.EXE *.RAR *.7Z) ELSE (SET ISF=*G.EXE)
IF EXIST "InStallList.TXT" (SET ISL=InStallList.TXT) ELSE (SET ISL='DIR /S/B/O:N %ISF%')
IF EXIST "InStallList.TXT" (SET ETD=EOL=;TOKENS=1-2 DELIMS=:) ELSE (SET ETD=DELIMS=)
IF "%INSTALLMODLE%"=="%INSTALLMODLE%" GOTO :%INSTALLMODLE%

:RGRAPTH
REM 产生IE需要的背景图片和配置IE按键颜色
REM mode con cols=20 lines=1
if exist bg.gif del /f/q bg.gif>nul
echo str="47494638396101000400800000F0F0F0ECECEC2C0000000001000400000203041205003B">>debug.vbs
echo with wscript.stdout:r=vbcrlf:for i=1 to len(str) step 48:.write "e"+hex(256+(i-1)/2):for j=i to i+46 step 2:.write " "+mid(str,j,2):next:.write r:next>>debug.vbs
echo .write "rbx"+r+"0"+r+"rcx"+r+"24"+r+"n debug.tmp"+r+"w"+r+"q"+r:end with>>debug.vbs
cscript //nologo debug.vbs|debug.exe>nul&&rename debug.tmp bg.gif&&del debug.vbs
set "button=border: 1 solid #9ab8f6;FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#10bfff,endColorStr=#007db2);cursor:hand;color:#ffffff;"
set "Pagebutton=border: 1 solid #9ab8f6;FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#10bfff,endColorStr=#007db2)"
set "Pagedisabled=border: 1 solid #b1b1b1;FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#f5f5f5,endColorStr=#b1b1b1)"

REM 最小化所有窗体
>%Temp%\Temp.vbs  echo set WshShell = Wscript.CreateObject("Wscript.Shell")
>>%Temp%\Temp.vbs echo set minWA= Wscript.CreateObject("Shell.Application")
>>%Temp%\Temp.vbs echo minWA.MinimizeAll
cscript //nologo "%Temp%\Temp.vbs"

REM 使用VBS设置IE属性
>%Temp%\Temp.vbs  echo '引用shdocvw.dll的internetexplorer.application对象,如果fullscreen=1则没有标题栏
>>%Temp%\Temp.vbs echo set WshShell = Wscript.CreateObject("Wscript.Shell")
>>%Temp%\Temp.vbs echo set ie=wscript.createobject("internetexplorer.application","event_")
>>%Temp%\Temp.vbs echo ie.fullscreen=1
>>%Temp%\Temp.vbs echo ie.menubar=0
>>%Temp%\Temp.vbs echo ie.addressbar=0
>>%Temp%\Temp.vbs echo ie.toolbar=0
>>%Temp%\Temp.vbs echo ie.statusbar=0
>>%Temp%\Temp.vbs echo ie.resizable=0
>>%Temp%\Temp.vbs echo ie.width=600
>>%Temp%\Temp.vbs echo ie.height=400
>>%Temp%\Temp.vbs echo ie.navigate "about:blank"
>>%Temp%\Temp.vbs echo ie.left=fix((ie.document.parentwindow.screen.availwidth-ie.width)/2)
>>%Temp%\Temp.vbs echo ie.top=fix((ie.document.parentwindow.screen.availheight-ie.height)/2)
>>%Temp%\Temp.vbs echo ie.visible=1

REM 使用VBS制作HTML
>>%Temp%\Temp.vbs echo with ie.document
>>%Temp%\Temp.vbs echo .write "<html><title>一键安装管理器</title><meta http-equiv='Content-Type' content='text/html; charset=gbk'>"
>>%Temp%\Temp.vbs echo .write "<style type='text/css' id='css'>.button {font: 15px 宋体, Verdana;height:32px;width:100px;}</style>"
>>%Temp%\Temp.vbs echo .write "<body onload=sf() background='%CD%\bg.gif' bgcolor=#e3e5da oncontextmenu='return false' scroll=yes style='font-family:宋体;font-size:15px;'>"
>>%Temp%\Temp.vbs echo .write "<table align=center style='font-family:楷体_gb2312;font-size:24px;'><td><b>一键安装管理器V1.0</b></td></table>"
>>%Temp%\Temp.vbs echo .write "<table  width=550 align=center style='FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#9ab8f6,endColorStr=#5a7dde)'><td align=left style='font-size:1px;'> </td></table>"
>>%Temp%\Temp.vbs echo .write "<table  width=550 align=center borderColor=#698cc2 border=1 cellSpacing=0 cellpadding=5 style='font-size:15px;border:#5a7dde 3px solid;'>"
>>%Temp%\Temp.vbs echo .write "<tr><td align=center bgcolor=#698cc2 style='FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#9ab8f6,endColorStr=#5a7dde)' colspan=4><b><font style=font-size:18px;color:#ffffff;> 欢迎使用一键安装管理器 </font><br><font style=color:#d0d0d0;><a title='中国DOS联盟论坛'>QQ:9399100</a>  <a title='参考zh159兄的IE批处理界面编写'>EMAIL:xiaobudian528@yahoo.com.cn</a></font></b></td></tr>"
>>%Temp%\Temp.vbs echo .write "<tr><td align=left colspan=4><b>选择下列要安装的软件,然后点安装即可</td><tr>"
>>%Temp%\Temp.vbs echo .write "<tr align=center><td colspan=1><b>软件名称</b></td><td colspan=3><b>软件说明</b></td><tr>"
CALL :InStallList
>>%Temp%\Temp.vbs echo .write "<tr><td align=left colspan=4 bgcolor=#698cc2 style='FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#9ab8f6,endColorStr=#5a7dde);'><font style=font-size:15px;color:#ffffff;><b>安装模式:</b><input type='radio' CHECKED name='INSTALLMODLE' value='M1' title='默认为常规方式安装,不仅可以安装绿色软件,还可以安装普通软件,安装绿色软件时还可以不用预压缩'>一键常规安装<input type='radio' name='INSTALLMODLE' value='M2' title='只能安装预压缩的绿色软件,非绿色的软件将被忽略'>一键绿化安装<input type='radio' name='INSTALLMODLE' value='M3' title='对安装后的绿色软件进行修复,要求有绿色软件目录有GSETUP.bat存在'>一键绿化修复<input type='radio' name='INSTALLMODLE' value='M4' title='对安装后的绿色软件进行卸载,要求有绿色软件目录有install.bat存在'>一键绿化卸载<br><B>安装路径:</B><input type='text' ID='IPATH' name='IPATH' SIZE='70'value='D:\GREEN' title='设置时注意不要输入路径的最后一个\,如C:不要设置为C:\,又如C:\MYSOFT不要设置为C:\MYSOFT\,另外如果不设置则默认安装路径为D:\GREEN'></font></td></tr>"
>>%Temp%\Temp.vbs echo .write "<tr><td align=center width=25%% style='font-size:0px;FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#9ab8f6,endColorStr=#5a7dde);'> </td><td align=center width=25%% style='font-size:0px;FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#9ab8f6,endColorStr=#5a7dde);'></td>"
>>%Temp%\Temp.vbs echo .write "<td align=center width=25%% style='font-size:0px;FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#9ab8f6,endColorStr=#5a7dde);'> </td><td align=center width=25%% style='font-size:0px;FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#9ab8f6,endColorStr=#5a7dde);'> </td><tr></table>"
>>%Temp%\Temp.vbs echo .write "<table width=550 align=center border=0 cellSpacing=0 cellpadding=5 ><tr align=center><td align=center width=25%%><input id=btALL type=submit class=button value='全部选择' title='全部选择或取消全部选择以便进行软件安装' style='font-family:楷体_gb2312;font-size:21px;width=100;%button%'></td><td align=center width=25%%><input id=btInstall type=button class=button value='立即安装' title='立即安装选择的软件' style='font-family:楷体_gb2312;font-size:21px;width=100;%button%'></td>"
>>%Temp%\Temp.vbs echo .write "<td align=center width=25%%><input id=btGInStallList type=button class=button value='制作安装脚本' title='在当前目录生成InStallList.TXT文件以便根据该文件进行安装,这样可以随意设置软件注释,提高安装速度.' style='font-family:楷体_gb2312;font-size:21px;width=140;%button%'></td><td align=center width=25%%><input type=button class=button onClick='opener=null;window.close()' value='退出程序' title='退出安装程序' style='font-family:楷体_gb2312;font-size:21px;width=100;%button%'></td></tr></td></table>"
>>%Temp%\Temp.vbs echo .write "</body></html>"
>>%Temp%\Temp.vbs echo end with
>>%Temp%\Temp.vbs echo dim wmi
>>%Temp%\Temp.vbs echo set wnd=ie.document.parentwindow
>>%Temp%\Temp.vbs echo set id=ie.document.all
>>%Temp%\Temp.vbs echo id.btAll.onclick=getref("btALL")
>>%Temp%\Temp.vbs echo id.btInstall.onclick=getref("btInstall")
>>%Temp%\Temp.vbs echo id.btGInStallList.onclick=getref("btGInStallList")
>>%Temp%\Temp.vbs echo do while true
>>%Temp%\Temp.vbs echo wscript.sleep 500
>>%Temp%\Temp.vbs echo WshShell.AppActivate ("一键安装管理器 - Microsoft Internet Explorer")
>>%Temp%\Temp.vbs echo loop
REM 退出程序按钮
>>%Temp%\Temp.vbs echo sub event_onquit
>>%Temp%\Temp.vbs echo Wscript.Echo "GOTO END"
>>%Temp%\Temp.vbs echo wscript.quit
>>%Temp%\Temp.vbs echo end sub
REM 全部选择与否按钮
>>%Temp%\Temp.vbs echo sub btALL
>>%Temp%\Temp.vbs echo with id
>>%Temp%\Temp.vbs echo if .btALL.value="全部选择" then
>>%Temp%\Temp.vbs echo for sx=0 to .InStallList.length-1
>>%Temp%\Temp.vbs echo  .InStallList(sx).checked=-1
>>%Temp%\Temp.vbs echo next
>>%Temp%\Temp.vbs echo  .btALL.value="全部取消"
>>%Temp%\Temp.vbs echo elseif .btALL.value="全部取消" then
>>%Temp%\Temp.vbs echo for sx=0 to .InStallList.length-1
>>%Temp%\Temp.vbs echo  .InStallList(sx).checked=0
>>%Temp%\Temp.vbs echo next
>>%Temp%\Temp.vbs echo  .btALL.value="全部选择"
>>%Temp%\Temp.vbs echo end if
>>%Temp%\Temp.vbs echo end with
>>%Temp%\Temp.vbs echo end sub
REM 制作安装脚本按钮
>>%Temp%\Temp.vbs echo sub btGInStallList
IF EXIST "InStallList.TXT" >>%Temp%\Temp.vbs echo msg="已经存在InStallList.TXT,确定要覆盖该安装脚本吗?"
IF NOT EXIST "InStallList.TXT" >>%Temp%\Temp.vbs echo msg="制作安装脚本将会退出并重新启动该程序,确定吗?"
>>%Temp%\Temp.vbs echo ie.visible=0
>>%Temp%\Temp.vbs echo IF MsgBox(msg,vbQuestion+vbYesNo,"小布点提示您")=vbNo then
>>%Temp%\Temp.vbs echo ie.visible=1
>>%Temp%\Temp.vbs echo exit sub
>>%Temp%\Temp.vbs echo END IF
>>%Temp%\Temp.vbs echo Wscript.Echo "GOTO GL"
>>%Temp%\Temp.vbs echo ie.quit
>>%Temp%\Temp.vbs echo end sub
REM 检测安装路径是否合法,没有错误则返回安装路径给CMD
>>%Temp%\Temp.vbs echo sub btInstall
>>%Temp%\Temp.vbs echo ie.visible=0
>>%Temp%\Temp.vbs echo with id
>>%Temp%\Temp.vbs echo if .IPATH.value="" then
>>%Temp%\Temp.vbs echo msgbox "安装路径不能为空,请重新输入!",,"小布点提示您"
>>%Temp%\Temp.vbs echo ie.visible=1
>>%Temp%\Temp.vbs echo exit sub
>>%Temp%\Temp.vbs echo elseif right(.IPATH.value,1)="\" then
>>%Temp%\Temp.vbs echo msgbox "安装路径最后一个字符不能为\,请重新输入!",,"小布点提示您"
>>%Temp%\Temp.vbs echo ie.visible=1
>>%Temp%\Temp.vbs echo exit sub
>>%Temp%\Temp.vbs echo end if
>>%Temp%\Temp.vbs echo Wscript.Echo "SET IPATH="+.IPATH.value
REM 返回安装模式给CMD
>>%Temp%\Temp.vbs echo dim mx
>>%Temp%\Temp.vbs echo for mx=0 to 3
>>%Temp%\Temp.vbs echo if .INSTALLMODLE(mx).checked=-1 then
>>%Temp%\Temp.vbs echo Wscript.Echo "GOTO "+.INSTALLMODLE(mx).value
>>%Temp%\Temp.vbs echo if .INSTALLMODLE(mx).value="M3" OR .INSTALLMODLE(mx).value="M4" THEN wscript.quit
>>%Temp%\Temp.vbs echo end if
>>%Temp%\Temp.vbs echo next

REM 检测是否选择了需要安装的软件,如果没有则退出,这里需要注意的是判断对象是否存在时必须前面使用ON ERROR语句,并且要使用全名ie.document.all.InStallList,尽管前面已经有ID=ie.document.all,这里也不能设置用.InStallList来引用
>>%Temp%\Temp.vbs echo on error resume next
>>%Temp%\Temp.vbs echo tt=isobject(ie.document.all.InStallList)
>>%Temp%\Temp.vbs echo if tt=false then
>>%Temp%\Temp.vbs echo ie.visible=0
>>%Temp%\Temp.vbs echo msgbox "没有搜索到需要安装的软件,请把该程序放到需要安装的软件的目录或父目录",,"小布点提示您"
>>%Temp%\Temp.vbs echo ie.visible=1
>>%Temp%\Temp.vbs echo exit sub
>>%Temp%\Temp.vbs echo end if
>>%Temp%\Temp.vbs echo Set objFSO = CreateObject("Scripting.FileSystemObject")
>>%Temp%\Temp.vbs echo Set objInStallList = objFSO.OpenTextFile("%TEMP%\InStallList.ini",2,true)
>>%Temp%\Temp.vbs echo dim sx,nx
>>%Temp%\Temp.vbs echo nx=0
>>%Temp%\Temp.vbs echo for sx=0 to .InStallList.length-1
>>%Temp%\Temp.vbs echo if .InStallList(sx).checked=-1 then
>>%Temp%\Temp.vbs echo nx=nx+1
>>%Temp%\Temp.vbs echo objInStallList.WriteLine .InStallList(sx).value
>>%Temp%\Temp.vbs echo end if
>>%Temp%\Temp.vbs echo next
>>%Temp%\Temp.vbs echo ie.quit
>>%Temp%\Temp.vbs echo end with
>>%Temp%\Temp.vbs echo end sub

REM 获取VBS返回的变量
IF EXIST "%TEMP%\InStallList.ini" SET ISL=%TEMP%\InStallList.ini
IF EXIST "%TEMP%\InStallList.ini" SET ETD=EOL=;TOKENS=1-2 DELIMS=:
for /f "delims=" %%i in ('"cscript //nologo %Temp%\Temp.vbs"') do (CALL %%i)

:M1
REM 根据任意压缩包(只需要压缩包内有可执行的GSETUP.BAT文件即可,解压后才调用)安装绿色软件:
CLS
IF NOT EXIST "%IPATH%" MD "%IPATH%"
FOR /F "%ETD%" %%I IN (%ISL%) DO (
    IF NOT EXIST "%IPATH%\%%~nI" (
        SET IPATH=%IPATH%\%%~nI
        ECHO 正在安装%%~nI到%IPATH%下,请等待......
        IF /I "%%~xI"==".EXE" (START /WAIT/MIN "" "%%I") ELSE (RAR X -Y -IDQ "%%I" -AD "%IPATH%")
    )
)
GOTO :M3

:M2
REM 根据预定压缩包(在EXE压缩包中直接指定压路径%IPATH%并在接压后注册运行软件,压缩包文件名不必再以*G.*为格式,DOS版则必须有该形式才可以辨别)安装绿色软件
CLS
IF NOT EXIST "%IPATH%" MD "%IPATH%"
FOR /F "%ETD%" %%I IN (%ISL%) DO (
    IF NOT EXIST "%IPATH%\%%~nI" (
        SET IPATH=%IPATH%\%%~nI
        ECHO 正在安装%%~nI到%IPATH%下,请等待......
ECHO %IPATH%
ECHO %%I
PAUSE
        START /WAIT/MIN "" "%%I")
)
GOTO :END

:M3
REM 根据用户设置的路径中的GSETUP.BAT进行一键绿化修复,所需要工具建议统一放到该程序TOOLS目录也可以单独放到软件的GTOOLS目录
CLS
IF NOT EXIST "%IPATH%" GOTO :END
FOR /F "DELIMS=" %%I IN ('DIR /S/B/A %IPATH%\GSETUP.BAT') DO (
    PUSHD "%%~dpI"
    ECHO 正在执行%%I,请等待......
    START /WAIT/MIN "" "%%I")
)
REM POPD
GOTO :END
  
:M4
REM 根据用户设置的路径中的UINSTALL.BAT进行一键绿化卸载
CLS
IF NOT EXIST "%IPATH%" GOTO :END
FOR /F "DELIMS=" %%I IN ('DIR /S/B/A %IPATH%\UINSTALL.BAT') DO (
    PUSHD "%%~dpI"
    ECHO 正在执行%%I,请等待......
    START /WAIT/MIN "" "%%I")
)
REM POPD
GOTO :END

:InStallList
REM 获取安装文件列表到IE复选框,如果存在安装文件则直接调用;反之则产生安装文件列表,同时根据是否有压缩注释来设置需要安装的文件列表1984407iloveyou
CHCP %LAN%>NUL
IF EXIST "InStallList.TXT" (
        FOR /F "EOL=;TOKENS=1-2 DELIMS=:" %%I IN (InStallList.TXT) DO (
                >>%Temp%\Temp.vbs echo .write "<tr><td align=left colspan=1><INPUT type='checkbox' CHECKED name='InStallList' value='%%I'><b>%%~nxI</b></td>"
                >>%Temp%\Temp.vbs echo .write "<td align=left colspan=3>&nbsp&nbsp%%J</td><tr>"
        )
)
IF NOT EXIST "InStallList.TXT" (
        FOR /F "DELIMS=" %%I IN ('DIR /S/B/O:N *.EXE *.RAR *.7Z') DO (
            >>%Temp%\Temp.vbs echo .write "<tr><td align=left colspan=1><INPUT type='checkbox' CHECKED  name='InStallList' value='%%~nxI'><b>%%~nxI</b></td>"
            RAR LT "%%I"|FIND /I "comment:" >NUL
            IF ERRORLEVEL 1 (>>%Temp%\Temp.vbs echo .write "<td align=left colspan=3>&nbsp&nbsp</td><tr>")
            IF ERRORLEVEL 0 (FOR /F "TOKENS=2 DELIMS=:" %%A IN ('RAR LT "%%I"^|FIND /I "comment:"') DO (>>%Temp%\Temp.vbs echo .write "<td align=left colspan=3>&nbsp%%A</td><tr>")))
)
goto :eof

:GL
REM 制作安装脚本文件
CHCP %LAN%>NUL
>InStallList.TXT ECHO ;使用安装脚本可以大大提高程序速度,但使用时要注意:不要修改软件的名称,不要去掉软件名称和说明之间的英文冒号,否则将无法进行安装;说明中不能再有冒号;说明中也不要有换行等特殊符号,否则读取说明时将残缺不全.
FOR /F "DELIMS=" %%I IN ('DIR /S/B/O:N *.EXE *.RAR *.7Z') DO (
      RAR LT "%%I"|FIND /I "comment:" >NUL
            IF ERRORLEVEL 1 (ECHO %%~nXI:>>InStallList.TXT)
            IF ERRORLEVEL 0 (FOR /F "TOKENS=2 DELIMS=:" %%A IN ('RAR LT "%%I"^|FIND /I "comment:"') DO (>>InStallList.TXT ECHO %%~nxI:%%A))
)
rem CHCP %LAN%>NUL
IF EXIST InStallList.TXT (SET msg=成功创建了安装脚本InStallList.TXT,现在要修改该文件吗?) ELSE (SET msg=未成功创建安装脚本InStallList.TXT,现在要返回安装界面吗?)
>%TEMP%\Temp.vbs   Echo intAnswer = MsgBox("%msg%", vbQuestion+vbYesNo, "小不点温馨提示!")
>>%TEMP%\Temp.vbs  Echo IF intAnswer = vbYes THEN
IF EXIST InStallList.TXT (>>%TEMP%\Temp.vbs  Echo Wscript.Echo "START InStallList.TXT") ELSE (>>%TEMP%\Temp.vbs  Echo Wscript.Echo "START %~nx0")
>>%TEMP%\Temp.vbs  Echo ELSEIF intAnswer = vbNo THEN
IF EXIST InStallList.TXT (>>%TEMP%\Temp.vbs  Echo Wscript.Echo "START %~nx0") ELSE (>>%TEMP%\Temp.vbs  Echo Wscript.Echo "exit")
>>%TEMP%\Temp.vbs  Echo END If
for /f "delims=&" %%i in ('"cscript //nologo %Temp%\Temp.vbs"') do (CALL %%i &exit)

:END
REM 退出程序并撤消最小化先前最小化的所有窗体(因为失去了环境变量,所以会最大化所有窗体)
REM >%Temp%\Temp.vbs  echo set WshShell = Wscript.CreateObject("Wscript.Shell")
REM >>%Temp%\Temp.vbs echo set minWA= Wscript.CreateObject("Shell.Application")
REM >>%Temp%\Temp.vbs echo minWA.UndoMinimizeALL
REM cscript //nologo "%Temp%\Temp.vbs"
>"%TEMP%\Temp.vbs" Echo intAnswer = MsgBox("已经完成安装或维护,谢谢你的使用,再见!" , vbOkOnly, "小不点温馨提示!")
cscript //nologo "%Temp%\Temp.vbs"
IF EXIST "%TEMP%\Temp.vbs" DEL /F/Q "%TEMP%\Temp.vbs"
IF EXIST "%TEMP%\InStallList.ini" DEL /F/Q "%TEMP%\InStallList.ini"
EXIT
[ Last edited by HUNRYBECKY on 2007-3-10 at 01:44 AM ]

   此帖被 +46 点积分       点击查看详情   
评分人:【 lxmxn 分数: +10  时间:2007-3-9 23:20
评分人:【 ccwan 分数: +9  时间:2007-3-9 23:51
评分人:【 zh159 分数: +15  时间:2007-3-10 00:30
评分人:【 redtek 分数: +10  时间:2007-3-10 04:28
评分人:【 axi 分数: +2  时间:2007-3-16 08:31


附件 1: onegsetup.rar (2007-3-9 11:26, 181.73 K,下载次数: 355)
附件 2: ONEGSETUP.jpg (2007-3-9 11:26, 95.32 K,下载次数: 71)


2007-3-9 09:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  

  原创要顶~

2007-3-9 23:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 3 楼』:  

vbs  N 人,顶

2007-3-9 23:41
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 4 楼』:  





三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2007-3-9 23:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 5 楼』:  

这是我测试的一个列表,根据exe同名txt文件设置是否默认安装,并显示txt文件里的exe文件说明(每增加一个文件同时增加一个txt文件设置是否默认安装、存放软件说明)

PS:尽量不要使用Set objFSO = CreateObject("Scripting.FileSystemObject")VBS文件操作,很多杀毒软件会拦截掉

[ Last edited by zh159 on 2007-3-9 at 11:55 AM ]

附件 1: 安装.gif (2007-3-10 00:52, 18.23 K, 下载附件所需积分 1 点 ,下载次数: 1)


2007-3-10 00:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 6 楼』:  

ZH什么时候也做了一个呀。早就该放出来了。

2007-3-10 01:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 7 楼』:  

个人意见,VBS+HTML < HTA




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2007-3-10 01:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
juventusryp
初级用户





积分 88
发帖 40
注册 2006-12-26
状态 离线
『第 8 楼』:  

太牛比了,支持一下,等批学好了也学习下VBS

2007-3-10 02:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by HUNRYBECKY at 2007-3-9 12:42:
ZH什么时候也做了一个呀。早就该放出来了。

你发“如何产生网页的复选框并根据用户选择返回给CMD”后开始弄的

  Quote:
Originally posted by electronixtar at 2007-3-9 12:57:
个人意见,VBS+HTML < HTA

想啊,只是不会用啊,特别是VBS读取、显示txt信息

2007-3-10 04:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
nihao6227
初级用户





积分 26
发帖 10
注册 2006-10-28
状态 离线
『第 10 楼』:  

强` `   我喜欢`

2007-3-10 07:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 11 楼』:  



  Quote:
Originally posted by zh159 at 2007-3-10 04:01:

你发“如何产生网页的复选框并根据用户选择返回给CMD”后开始弄的


想啊,只是不会用啊,特别是VBS读取、显示txt信息

呵呵,我也是看了你的那个界面后才开始学VBS和HTML的,我是边看你的程序边琢磨,还是很有意思的,都花了我半个月的时间来学习。

2007-3-10 08:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HUNRYBECKY
银牌会员





积分 1179
发帖 442
注册 2006-9-9
状态 离线
『第 12 楼』:  



  Quote:
Originally posted by electronixtar at 2007-3-10 01:57:
个人意见,VBS+HTML < HTA

HTA的确很好,很多安装程序,尤其是MS出的都是使用这个的,还有很多光盘都是使用这个东西搞的。不错,以后准备学习这个,还有XML也很不错的。不过现在要回家了,所以暂时不研究这些了。

2007-3-10 08:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yuehong
初级用户





积分 64
发帖 37
注册 2007-3-14
状态 离线
『第 13 楼』:  

vbs  N 人,顶

2007-3-14 04:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
axi
中级用户

脚本爱好者


积分 238
发帖 93
注册 2007-3-11
来自 GZ
状态 离线
『第 14 楼』:  

P、 V、 H 都要学,这是我最喜欢看的。 顶!

2007-3-16 08:33
查看资料  发短消息 网志  OICQ (453623262)  编辑帖子  回复  引用回复
gdmzzyw
初级用户





积分 46
发帖 18
注册 2006-12-13
状态 离线
『第 15 楼』:  

感谢楼主!
我今天找了一天了!
转来转去还是回到这里!
谢谢!

2007-3-19 03:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: