主题 : 网虫2008补丁制作工具
级别: 六行秋雁

UID: 168
精华: 0
发帖: 303
威望: 15507 点
无痕币: 5301 WHB
贡献值: 0 点
在线时间: 182(时)
注册时间: 2007-11-25
最后登录: 2023-12-08

0 网虫2008补丁制作工具

(网虫2008)补丁文件制作工具,以后如果出现ISO文件有更新修正需要打补丁的时候,可以使用工具制作一个(体积很小)补丁文件即可,也不用重新上传更新后的ISO文件,只需要发布补丁文件即可!以减轻工作量!即方便大家,也方便自己!

网虫2008大虾补丁制作工具下载地址:http://u.115.com/file/f23fbb8b93


引用原帖部分说明
补丁制作工具 Xdelta GUI版(增加了MD5生成和验证功能)

通用于桌面Windows系统及PE,通用于所有格式的文件。
这个工具只是二进制算法的文件比较工具,不会对目标的文件进行任何改动,只是创建补丁文件或新文件,可以放心使用。






——————————————————————————————————————————————
01.生成补丁文件后,将弹出“是否创建Xdelta_Auto配置文件”的提示,
如选择“是”,将在补丁文件的同级目录创建 XdeltaAuto.ini


02.集成“Xdelta_Auto”,一个程序两用!
程序启动时,会首先搜索XdeltaAuto.ini配置文件及配置文件中的补丁包名称,如符合双重条件,则启动“自动应用补丁程序”,否则,启动界面版





03.i当选择“应用补丁”选项时,自动查找原始文件同级目录下,与原始文件同名的.DELTA补丁文件,,如存在,则全自动设置“应用补丁(创建新文件)”窗口。
04.成功操作后,自动记忆原始文件位置,再次启动程序时,如原始文件存在,将自动设置此文件为原始文件。
 如未知情况操作失败,将删除预设文件,再次启动时将变为初始状态。
——————————————————————————————————————————————




制作全自动应用补丁包的步骤:
——————————————————————————————————————————————


一、用Xdelta GUI版制作出补丁文件,在最后弹出的窗口中,可选择自动生成.ini配置文件,1020版之后,将自动生成原始文件的MD5的值,只要编辑一下自己的标题名称就可以了。

二、也可手动对 XdeltaAuto.ini 的红色部分进行编辑(注意:所有文件名称不要带后缀名)
QUOTE:
`标题名称
Envi Prog2=网虫2008_WinPE 专用补丁工具
`原始文件MD5值
Envi oldmd5=47af87fa85e257c9ac68b2949e60858b
`原始文件后缀名
Envi zkm=ISO
`原始文件名称
Envi oldfile=【网虫2008】完整版_WinPE20101010_维护盘E
`补丁文件名称
Envi deltafile=%CurDir%\1010-1018
`生成新文件的名称
Envi newfile=【网虫2008】完整版_WinPE20101018_维护盘E
`错误提示的内容
Envi md5=请确认原始文件没有被编辑,且MD5为:47af87fa85e257c9ac68b2949e60858b


三、右键选中 XdeltaGui.exe、XdeltaAuto.ini与补丁文件,制作7z或WinRAR等格式的自解压文件,设置解压到临时路径,解压后执行 XdeltaGui.exe

——————————————————————————————————————————————


引用:
Xdelta 是一个应用程序, 为了计算出两个文件之间的变化. 这些变化 (deltas) 是类似输出的 'diff'程序,因为它们可能被用来存储和传输文件之间的变化. 然而, 不像 diff,Xdelta 其输出不是为了让人们阅读的格式 -- Xdelta 也可以同样适用于这些 deltas复制到原始文件的副本. Xdelta 使用快速线性算法对比二进制文件和文本文件.想要创建一个 '.delta' 文件, 你需要有二份的原始文件, 一个 '老旧的' 和一个 '新' 文件.通过对比新的和老旧文件之间的差异生成新的增量后缀为 '.delta'文件.有了这份 '.delta'文件, 只要你有原始的“老旧文件”你就创造出一份和原始一样的“新文件”.这样说起来好像很复杂,我简单解释下,例如veket系统,新版本是在旧版本上边更新而来的,如果重新发布的话,大家是需要重新下载一份iso的,但是大家都已经下载过旧版的了,为了更新又需要重新下载一个完整的iso会显得很麻烦,如果veket的发布者们采用 '.delta'的方式来发布更新会更方便,就是只要veket的打包者们通过Xdialog来对比新版veket的iso和旧版的iso之间的差异生成一份'.delta'文件,\n这样一来,只要那些下载过旧版veket的用户,只要下载这份'.delta'文件回去,很容易就升级到新版veket了,因为'.delta'文件只是代表新版veket和旧版veket之间的差异,\n容量比起整个iso光盘是小得多的.xdialog的作用不止于此,只是举例向大家说明它的作用.这个图形界面可以令你很轻松地通过拖动来创建 .delta 文件, 这个程序搜索并找到原来的老旧文件. 或者, 点击拖动一份 .delta 文件到 ROX文件管理器的窗口以恢复原有的新文件.



内置 xdelta3.exe 与. INI 到 PECMD.EXE ,这是源代码:

_SUB w_autoini
Envi @label1=正在读取原始文件的MD5值,请稍等...
MD5C %old%,oldmd5
FDIR ph=%delta%
FEXT okzm=%old%
NAME oname=%old%
NAME dname=%delta%
NAME nname=%new%
EXEC =!cmd /c "echo Envi Prog2=Xdelta_Auto工具  by 网虫2008>%ph%\XdeltaAuto.ini
EXEC =!cmd /c "echo Envi oldmd5=%oldmd5%>>%ph%\XdeltaAuto.ini
EXEC =!cmd /c "echo Envi zkm=%okzm%>>%ph%\XdeltaAuto.ini
EXEC =!cmd /c "echo Envi oldfile=%oname%>>%ph%\XdeltaAuto.ini
EXEC =!cmd /c "echo Envi deltafile=^%CurDir^%\%dname%>>%ph%\XdeltaAuto.ini
EXEC =!cmd /c "echo Envi newfile=%nname%>>%ph%\XdeltaAuto.ini
EXEC =!cmd /c "echo Envi autoread=请确认原始文件没有被编辑,且MD5为:%oldmd5%>>%ph%\XdeltaAuto.ini
_END
_SUB ynautoini
TEAM MESS ▉ %read3% @通知:#YN *0 $N
FIND $%YESNO%=YES,TEAM Envi YESNO=|Call w_autoini
_END
_SUB w_ini
EXEC =!cmd /c "echo Envi old=%old%>%tempph%
FIND $%setbd%=y,Call ynautoini!MESS ▉ %read3% @通知:#ok *0
WAIT 500
TEAM FDIR Open=%delta%|FIND $%Open%=%CurDir%,!EXEC %Open%
_END
_SUB go,
FIND $%setbd%=y,TEAM Envi startcs=-e -s|Envi @label1=正在创建补丁文件,请稍等......!TEAM Envi startcs=-d -s|Envi @label1=正在创建新文件,请稍等......
WAIT 500
EXEC !=#101 %startcs% "%old%" "%new%" "%delta%"
WAIT 500
Envi @label1=通知:执行完毕!
FIND $%setbd%=y,Envi read3=已经成功生成补丁文件,\n\n是否创建自动补丁包的配置文件?!Envi read3=已经成功生成打好补丁的新文件!
Envi read4=操作没有成功,请注意文件点选!\n\n点击确认后重新启动程序,\n或尝试将主程序移到其他位置再次执行。
IFEX %delta%,Call w_ini!TEAM MESS ▉ %read4% @通知:#ok *0|FILE %tempph%
KILL \%Prog1%
_END
_SUB del_file
FILE %delta%
WAIT 500
IFEX %delta%,MESS 文件无法删除,\n请返回程序重新选择。@通知: #ok *0!TEAM Envi YESNO=|Call go
_END
_SUB yn_del
IFEX %delta%,MESS 文件已经存在,\n是否删除?@通知: #YN *0 $N!TEAM Envi YESNO=|Call go
FIND $%YESNO%=YES,Call del_file
_END
_SUB set_new2
FIND $%w_%all%%=y,TEAM Envi all=old|Call allName|Envi all=new|Call allName
FIND $%w_delta%=y,Envi @delta=%oldph%\%delta%.%oldkzm%!Envi @delta=%PF_Tag%
_END
_SUB set_new1
FIND $%w_%all%%=y,TEAM Envi all=old|Call allName|Envi all=new|Call allName
IFEX %new%,FIND $%file%=y,Envi @delta=%oldph%\新_%oldname%.%oldkzm%
FIND $%all%=new,FIND $%file%=n,Envi @delta=输入文件名或在补丁文件栏按“回车”或手动选择 >>
_END
_SUB set_delta2
FIND $%w_%all%%=y,TEAM Envi all=old|Call allName|Envi all=new|Call allName
FIND $%w_delta%=y,Envi @delta=%newph%\%delta%.%xkzm%!Envi @delta=%PF_Tag%
_END
_SUB set_delta1
FIND $%w_%all%%=y,TEAM Envi all=old|Call allName|Envi all=new|Call allName
IFEX %new%,FIND $%file%=y,Envi @delta=%newph%\%oldname%.%xkzm%
FIND $%all%=new,FIND $%file%=n,Envi @delta=输入文件名或在目标文件栏按“回车”或手动选择 >>
_END
_SUB allName
FEXT %all%kzm=%%all%%
NAME %all%name=%%all%%
Envi %all%file=%%all%name%\%%all%kzm%
FDIR %all%ph=%%all%%
_END
_SUB set_file
Envi oldts=请选择 原始文件所在目录与名称:
FIND $%setbd%=y,Envi newts=请选择 目标文件所在目录与名称:!Envi newts=请选择 补丁文件所在目录与名称:
FIND $%w_%all%%=y,!BROW PF_Tag,%RP%\*,%%all%ts%,%%all%kzm%
FIND $%PF_Tag%=,!TEAM Envi @%all%=%PF_Tag%|Call allName
IFEX %%all%%,Envi file=y!TEAM Envi @%all%=文件不存在,请重新选择或输入!|Envi file=n|Envi @read=
FIND $%setbd%=y,Call set_delta1!Call set_new1
_END
_SUB apply_file
FIND $%setbd%=y,Envi deltats=请选择 用来储存补丁文件的目录与名称:!Envi deltats=请选择 用来储存新建文件的目录与名称:
FIND $%w_%all%%=y,!BROW PF_Tag,&%RP%\*,%%all%ts%,%%all%kzm%
FIND $%PF_Tag%=,!TEAM Envi @%all%=%PF_Tag%|Call allName
FIND $%setbd%=y,Call set_delta2!Call set_new2
_END
_SUB savefile
FIND $%all%=new,Envi %all%kzm=%xkzm%
FIND $%all%=delta,TEAM FEXT oldkzm=%old%|Envi %all%kzm=%oldkzm%
FIND $%all%=delta,Call apply_file!Call set_file
_END
_SUB makedelta
FIND $%all%=delta,Envi %all%kzm=%xkzm%
FIND $%all%=delta,Call apply_file!Call set_file
_END
_SUB SelecRP
Envi PF_Tag=
IFEX X:\,Envi RP=D:!Envi RP=%CurDir%
IFEX %old%,FDIR RP=%old%
FEXT %all%kzm=%%all%%
FIND $%%all%kzm%=,Envi %all%kzm=*
FIND $%setbd%=y,Call makedelta!Call savefile
IFEX %new%,Envi @read=生成的文件将储存在:%delta%
Envi w_%all%=
Envi all=
_END
_SUB windows1,w453h335,%Prog1%,,XdeltaGui.EXE#1,5,
labe label1,l25t15w320h20,▉ 请按照以下步骤进行详细操作:
grou group1,l15t35w420h40,
labe label2,l25t53w140h20,01.请选择 执行目的:
radi radiobutton1,l155t50w65h20,制作补丁,TEAM Envi bdyn=y|Envi setbd=y|Call make0,%bdno%,
radi radiobutton2,l230t50w140h20,应用补丁(创建新文件),TEAM Envi bdyn=n|Envi setbd=n|Call make0,%newno%,
grou group2,l15t85w420h105,02.设置相关文件:
labe label3,l32t110w60h20,原始文件:
EDIT old,l91t105w305h20,%old%,TEAM Envi w_old=y|Envi md=|Envi all=old|CALL SelecRP,
ITEM Button1,l400t104w25h20,...,TEAM Envi w_old=|Envi md=o|Envi all=old|CALL SelecRP,
labe onebt,l32t138w60h20,%onebt%:
EDIT new,l91t133w305h20,%new%,TEAM Envi w_new=y|Envi md=|Envi all=new|CALL SelecRP,
ITEM Button2,l400t132w25h20,...,TEAM Envi w_new=|Envi md=n|Envi all=new|CALL SelecRP,
labe twobt,l32t164w60h20,%twobt%:
EDIT delta,l91t160w305h20,%delta%,TEAM Envi w_delta=y|Envi md=|Envi all=delta|CALL SelecRP,
ITEM Button3,l400t159w25h20,...,TEAM Envi w_delta=|Envi md=d|Envi all=delta|CALL SelecRP,
grou group3,l15t200w300h70,提示:
labe read,l25t225w280h40,%read%
grou group4,l-5t280w455h10,
ITEM MR_BB,l350t205w60h30,%MR_BB%,Call yn_del,
ITEM Button4,l350t240w60h30,关闭程序,KILL \%Prog1%,
_END
_SUB make2,
IFEX %oldph%\%oldname%.%xkzm%,Envi @new=%oldph%\%oldname%.%xkzm%!Envi %r_new%=拖放 补丁文件到窗口或手动选择 >>
IFEX %oldph%\%oldname%.%xkzm%,Envi @delta=%oldph%\新_%oldname%.%oldkzm%!Envi %r_delta%=输入 不加后缀的文件名称按“回车”或手动选择 >>
IFEX %oldph%\%oldname%.%xkzm%,Envi read=新文件将储存在:%delta%!Envi read=选择补丁文件后(如拖放文件需按回车),将自动设置新文件的储存目录为:原始文件的同级目录\新_原始文件名称
Envi %r_onebt%=补丁文件
Envi %r_twobt%=创建文件
Envi %r_MR_BB%=应用补丁
Envi setbd=n
_END
_SUB make1,
Envi %r_new%=拖放 目标文件到窗口或手动选择 >>
Envi %r_delta%=输入 不加后缀的文件名称按“回车”或手动选择 >>
Envi read=选择目标文件后(如拖放文件需按回车),将自动设置补丁文件的储存目录为:目标文件的同级目录\原始文件名称.%xkzm%
Envi %r_onebt%=目标文件
Envi %r_twobt%=制作补丁
Envi %r_MR_BB%=制作补丁
Envi setbd=y
_END
_SUB make0,
TEAM Envi r_old=old|Envi r_new=new|Envi r_delta=delta|Envi r_MR_BB=MR_BB|Envi r_onebt=onebt|Envi r_twobt=twobt
FIND $%setbd%=,!TEAM Envi r_old=@old|Envi r_new=@new|Envi r_delta=@delta|Envi r_MR_BB=@MR_BB|Envi r_onebt=@onebt|Envi r_twobt=@twobt
IFEX %old%,TEAM Envi all=old|Call allName|Envi %r_old%=%old%!Envi %r_old%=拖放 原始文件到窗口或手动选择 >>
FIND $%bdyn%=y,Call make1!Call make2
Envi @read=%read%
_END
_SUB Gui_Xdelta
Envi Prog1=Xdelta Gui版  by 网虫2008 20101020
Envi xkzm=delta
Envi tempph="%temp%\xdelta3_temp.ini"
LOAD %tempph%
TEAM Envi bdyn=y|Envi bdno=1|Envi newno=0
Call make0
call @windows1
_END
_SUB wa_ini
EXEC =!cmd /c "echo Envi old=%old%>%temp%\xdelta3_temp.ini
_END
_SUB windows2,w400h160,%Prog2%,,XdeltaGui.exe,10
NAME newname=%new%
NAME deltaname=%delta%
LABE LABE1,l30t20w390h30,←正在验证原始文件MD5值
LABE LABE2,l40t55w390h50,请稍候......,
LABE LABE3,l40t90w390h20,,
time t2,1000,Call md5yz
_END
_SUB md5yz
ENVI @t2=0
MD5C %old%,yzoldmd5
WAIT 500
FIND $%yzoldmd5%=%oldmd5%,Call a_go!TEAM MESS ▉ 操作没有成功,%autoread% @通知:#ok *0|FILE %tempph%|KILL \%Prog2%
_END
_SUB a_go,
Envi @LABE1=←正在应用补丁文件创建:
Envi @LABE2="%deltaname%.ISO"
Envi @LABE3=请稍候......
WAIT 500
EXEC =!#101 -d -s "%old%" "%new%" "%delta%"
WAIT 500
Call wa_ini
IFEX %delta%,MESS ▉ 已经成功生成打好补丁的“%delta%”文件! @通知:#ok *0
TEAM FDIR Open=%delta%|FIND $%Open%=%CurDir%,!EXEC %Open%
KILL \%Prog2%
_END
_SUB auto_delfile
FILE %delta%
WAIT 500
IFEX %delta%,TEAM MESS 文件无法删除,\n请重新选择。@通知: #ok *0|Call bb!Envi yngo=y
_END
_SUB auto_yndel
IFEX %delta%,MESS 文件已经存在,\n是否删除?@通知: #YN *0 $N
FIND $%YESNO%=YES,Call auto_delfile!Call bb
_END
_SUB a_make
IFEX %delta%,TEAM Envi yngo=n|Call auto_yndel!Envi yngo=y
_END
_SUB bb
IFEX %old%,FDIR RP=%old%!TEAM MESS ▉ 文件不存在,请重新选择! @通知:#ok *0|Call aa
BROW delta,&%RP%\%newfile%.%zkm%,请选择新文件的目录,并输入文件名称:,%zkm%
FIND $%delta%=,!Call a_make
_END
_SUB aa
BROW old,%RP%\%oldfile%.%zkm%,正在自动应用补丁,请选择“%oldfile%.%zkm%”文件,%zkm%
FIND $%old%=,!Call bb
_END
_SUB cc
TEAM MESS ▉ 补丁文件“%new%”不存在,请重新选择! @通知:#ok *0
BROW new,%CurDir%\*.delta,请选择补丁文件所在的目录与名称,delta
FIND $%new%=,!Call aa
_END
_SUB auto_Xdelta
IFEX D:\,Envi RP=D:!Envi RP=%CurDir%
Envi tempph=%temp%\xdelta3_temp.ini
IFEX %tempph%,TEAM LOAD %tempph%|FDIR RP=%old%|Envi old=
Envi new=%deltafile%.delta
IFEX %new%,Call aa!Call cc
FIND $%yngo%=y,Call @windows2
_END
_SUB openset
LOAD %CurDir%\XdeltaAuto.ini
IFEX %deltafile%.delta,Call auto_Xdelta!Call Gui_Xdelta
_END
IFEX %CurDir%\XdeltaAuto.ini,Call openset!Call Gui_Xdelta
Exit
[ 此帖被hexj9在2010-11-23 20:42重新编辑 ]
本帖最近评分记录:
  • 无痕币:+5(hexj9) 优秀帖子
  • Total 0.035715(s) query 3, Time now is:03-29 17:44, Gzip enabled 粤ICP备07514325号-1
    Powered by PHPWind v7.3.2 Certificate Code © 2003-13 秋无痕论坛