From b7c7a31b3e038f93457fd0783728cbbe31be9534 Mon Sep 17 00:00:00 2001 From: kichik Date: Sat, 27 Dec 2003 18:36:57 +0000 Subject: [PATCH] VPatch 2.1: * Added argument checking and error handling to GenPat. Now returns exit codes as well to indicate success/failure (and the reason for failure). Only GenPat has changed in this version compared to 2.0 final. * Bug Fix: GenPat no longer gives an Access Violation when attempting to patch a file smaller than 64 bytes into a file larger than 64 bytes. git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3318 212acab6-be3b-0410-9dea-997c60f758d6 --- Contrib/VPatch/GenPat.exe | Bin 68096 -> 69120 bytes Contrib/VPatch/Readme.html | 231 ++++++++++++------ Contrib/VPatch/Source/GenPat/GenPat2.dpr | 153 ++++++++++-- .../VPatch/Source/GenPat/PatchGenerator.pas | 32 ++- Contrib/VPatch/Source/GenPat/TreeCode.pas | 6 + 5 files changed, 314 insertions(+), 108 deletions(-) diff --git a/Contrib/VPatch/GenPat.exe b/Contrib/VPatch/GenPat.exe index 0b3613886d2c0a7d8657523e1b2945b85f58f88d..a52d6b754887b3fa232776da043224c3fb1daff5 100644 GIT binary patch delta 65937 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 delta 65083 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 Cq6!ND diff --git a/Contrib/VPatch/Readme.html b/Contrib/VPatch/Readme.html index 372683a6..ad194d61 100644 --- a/Contrib/VPatch/Readme.html +++ b/Contrib/VPatch/Readme.html @@ -98,87 +98,161 @@ a:hover
- - + + + +
-

VPatch 2

-
-

Introduction

-

VPatch allows to create a patch file to update previous versions of your software. The GenPat -utitily generates the patch file. The plug-in can use the patch to update a file. Using a patch, -you can reduce the download size of your updates, because only the differences between the files -are included in the patch file.

-

How to use

-

Generate the patch file

-

Make sure you have the source file (original version) and the target file (version to update -to). For example, DATA.DTA (currently on user system) and DATA_20.DTA (version 2.0 of this data -file). Now call the command line tool GenPat.exe:

-
+    
+

VPatch 2

+
+

Introduction

+

VPatch allows to create a patch file to update previous versions + of your software. The GenPat utitily generates the patch file. The + plug-in can use the patch to update a file. Using a patch, you can + reduce the download size of your updates, because only the differences + between the files are included in the patch file.

+

How to use

+

Generate the patch file

+

Make sure you have the source file (original version) and the target + file (version to update to). For example, DATA.DTA (currently on user + system) and DATA_20.DTA (version 2.0 of this data file). Now call + the command line tool GenPat.exe:

+
 GENPAT data.dta data_20.dta data.pat
 
-

Now, the patch will be generated, this will take some time.

-

Using the /B=(BlockSize) parameter of the GenPat utility (put it after the filenames), you can -use a different block size. A smaller block size may result in a smaller patch, but the generation -will take more time (the default blocksize is 64).

-

Update the file during installation

-

Use the VPatch plug-in to update a file using a patch file:

-
+          

Now, the patch will be generated, this will take some time.

+

Using the /B=(BlockSize) parameter of the GenPat utility (put it + after the filenames), you can use a different block size. A smaller + block size may result in a smaller patch, but the generation will + take more time (the default blocksize is 64).

+

Update the file during installation

+

Use the VPatch plug-in to update a file using a patch file:

+
 vpatch::vpatchfile "pathfile.pat" "source.file" "new.file"
 
-

The result of the patch operating will be added to the stack and can be one of the following -texts:

-
    -
  • OK
  • -
  • OK, new version already installed
  • -
  • An error occured while patching
  • -
  • Patch data is invalid or corrupt
  • -
  • No suitable patches were found
  • -
-

Check example.nsi for an example.

-

Multiple patches in one file

-

GenPat appends a patch to the file you specified. If there is already a patch for the same -orginal file in the patch file, the patch will be replaced. For example, if you want to be able to -upgrade version 1 and 2 to version 3, you can put a 1 > 3 and 2 > 3 patch in one file.

-

You can also put patches for different files in one patch file, for example, a patch from file A -version 1 to file A version 2 and a patch from file B version 1 to file B version 2. Just call the -plug-in multiple times with the same patch file. It will automatically select the right patch -(based on the file CRC).

-

Source code

-

NSIS plug-in (C++)

-

The source of the NSIS plug-in that applies patches can be found in the Source\Plugin -folder.

-

Patch Generator (Delphi)

-

The most interesting part of VPatch, the actual patch generation algoritm, can be found in -Source\GenPat\PatchGenerator.pas. The header of that file contains a brief explanation of the -algoritm as well.

-

User interface (Delphi)

-

A user interface is included as well, which you will have to build yourself because the GUI -executable was too large to include. Besides Borland Delphi 6 or higher (you can use the freely -available Personal edition), you will also need to install the The result of the patch operating will be added to the stack and + can be one of the following texts:

+
    +
  • OK
  • +
  • OK, new version already installed
  • +
  • An error occured while patching
  • +
  • Patch data is invalid or corrupt
  • +
  • No suitable patches were found
  • +
+

Check example.nsi for an example.

+

Multiple patches in one file

+

GenPat appends a patch to the file you specified. If there is already + a patch for the same orginal file in the patch file, the patch will + be replaced. For example, if you want to be able to upgrade version + 1 and 2 to version 3, you can put a 1 > 3 and 2 > 3 patch in + one file.

+

You can also put patches for different files in one patch file, for + example, a patch from file A version 1 to file A version 2 and a patch + from file B version 1 to file B version 2. Just call the plug-in multiple + times with the same patch file. It will automatically select the right + patch (based on the file CRC).

+

GenPat exit codes

+

In version 2.1 support was added for exit codes (known as error levels + in the DOS period) to GenPat. GenPat will return an exit code based + on succes of the patch generation. Here is a list of the possible + exit codes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Exit codeDescription
0Success
1Arguments missing
2Source file not found
3Target file not found
4Unknown error while reading existing patch file
5Unknown error while generating patch
6Unknown error while writing patch file to disk
10CRC of source and target file are equal
11Not enough memory for source file
12Not enough memory for target file
+

These exit codes can be useful when you generate patch files through + a script.

+
+
+

Source code

+

NSIS plug-in (C++)

+

The source of the NSIS plug-in that applies patches can be found + in the Source\Plugin folder.

+

Patch Generator (Delphi)

+

The most interesting part of VPatch, the actual patch generation + algoritm, can be found in Source\GenPat\PatchGenerator.pas. The header + of that file contains a brief explanation of the algoritm as well.

+

User interface (Delphi)

+

A user interface is included as well, which you will have to build + yourself because the GUI executable was too large to include. Besides + Borland Delphi 6 or higher (you can use the freely available Personal + edition), you will also need to install the VirtualTreeView component by Mike Lischke.

-

Version history

-
    -
  • 2.0 final -
      -
    • Cleaned up source code for the patch generator, which is now included (this code is written in -Borland Delphi 6 and compiles with the freely available Personal edition).
    • -
    -
  • -
  • 2.0 beta 2 -
      -
    • All new algorithm used in the patch generator: much faster (up to 90%) while using smaller -block sizes (higher compression)
    • -
    • Created a NSIS 2 plugin
    • -
    • Works with small files
    • -
    • Replaces existing patch in file if original file CRC is identical
    • -
    -
  • -
-

Credits

-

Written by Koen van de Sande
-C plug-in by Edgewize
-New documentation and example by Joost Verburg

-

License

-
+          

Version history

+
    +
  • 2.1 +
      +
    • Added argument checking and error handling to GenPat. Now + returns exit codes as well to indicate success/failure (and + the reason for failure). Only GenPat has changed in this version + compared to 2.0 final.
    • +
    • Bug Fix: GenPat no longer gives an Access Violation when attempting + to patch a file smaller than 64 bytes into a file larger than + 64 bytes.
    • +
    +
  • +
  • 2.0 final +
      +
    • Cleaned up source code for the patch generator, which is now + included (this code is written in Borland Delphi 6 and compiles + with the freely available Personal edition).
    • +
    +
  • +
  • 2.0 beta 2 +
      +
    • All new algorithm used in the patch generator: much faster + (up to 90%) while using smaller block sizes (higher compression)
    • +
    • Created a NSIS 2 plugin
    • +
    • Works with small files
    • +
    • Replaces existing patch in file if original file CRC is identical
    • +
    +
  • +
+

Credits

+

Written by Koen van de Sande
+ C plug-in by Edgewize
+ New documentation and example by Joost Verburg

+

License

+
 Copyright (C) 2001-2003 Koen van de Sande
 
 This software is provided 'as-is', without any express or implied
@@ -196,8 +270,9 @@ it freely, subject to the following restrictions:
 2. Altered versions must be plainly marked as such,
    and must not be misrepresented as being the original software.
 3. This notice may not be removed or altered from any distribution.
-
-
diff --git a/Contrib/VPatch/Source/GenPat/GenPat2.dpr b/Contrib/VPatch/Source/GenPat/GenPat2.dpr index d2a5bbb6..d868588b 100644 --- a/Contrib/VPatch/Source/GenPat/GenPat2.dpr +++ b/Contrib/VPatch/Source/GenPat/GenPat2.dpr @@ -11,6 +11,9 @@ program GenPat2; What's new ---------- + 2.1 20031219 Koen Added error checking, handling, shouldn't + crash when invalid arguments, returns + exit codes now. 2.0 20030811 Koen Initial documentation } @@ -38,18 +41,20 @@ type var Config: TextFile; T1,T2: TDateTime; - d: Integer; + d, i: Integer; S,Key: String; - ShowDebug: Boolean; + SourceFile, TargetFile, PatchFile: String; + ShowDebug, ShowHelp: Boolean; PG: TPatchGenerator; EV: TEventHandler; + begin EV:=TEventHandler.Create; PG:=TPatchGenerator.Create; PG.StartBlockSize:=64; - WriteLn('GenPat v2.0 final'); - WriteLn('================='); + WriteLn('GenPat v2.1'); + WriteLn('==========='); WriteLn; WriteLn('(c) 2001-2003 Van de Sande Productions'); WriteLn('Website: http://www.tibed.net/vpatch'); @@ -75,13 +80,35 @@ begin CloseFile(Config); end; {$ENDIF} + i:=0; for d:=1 to ParamCount do begin if CompareStr(LowerCase(Copy(ParamStr(d),1,3)),'/b=')=0 then begin PG.StartBlockSize:=StrToInt(Copy(ParamStr(d),4,10)); + end else begin + // not a parameter? + if not (ParamStr(d)[1] = '/') then begin + if i = 2 then begin + PatchFile:=ParamStr(d); + Inc(i); + end; + if i = 1 then begin + TargetFile:=ParamStr(d); + Inc(i); + end; + if i = 0 then begin + SourceFile:=ParamStr(d); + Inc(i); + end; + end; end; end; - if (CompareStr(ParamStr(1),'')=0) or (CompareStr(ParamStr(2),'')=0) or (CompareStr(ParamStr(3),'')=0) then begin + ShowHelp:=False; + if(CompareStr(PatchFile,'')=0) then ShowHelp:=True; + if SourceFile = '' then ShowHelp:=True; + if TargetFile = '' then ShowHelp:=True; + + if ShowHelp then begin WriteLn('This program will take (sourcefile) as input and create a (patchfile).'); WriteLn('With this patchfile, you can convert a (sourcefile) into (targetfile).'); WriteLn; @@ -90,36 +117,110 @@ begin WriteLn; WriteLn('Command line options (you do not need them):'); WriteLn('/B=(BlockSize) Set blocksize (def=64), multiple of 2'); - WriteLn('/WAIT Wait for a keypress after program complete'); + WriteLn('/NOEQUALERROR Exit code becomes 0 instead of 10 when'); + WriteLn(' two files with equal CRC are encountered'); + WriteLn(' (patch file will remain unchanged)'); WriteLn('/DEBUG Show runtime debug information'); - WriteLn('Note: all these parameters must be *after* the filenames!'); WriteLn; - Write('Press a enter to exit '); - ReadLn(S); + WriteLn('Note: filenames should never start with / character!'); + WriteLn; + WriteLn('Possible exit codes:'); + WriteLn(' 0 Success'); + WriteLn(' 1 Arguments missing'); + WriteLn(' 2 Source file not found'); + WriteLn(' 3 Target file not found'); + WriteLn(' 4 Unknown error while reading existing patch file'); + WriteLn(' 5 Unknown error while generating patch'); + WriteLn(' 6 Unknown error while writing patch file to disk'); + WriteLn(' 10 CRC of source and target file are equal (impossible with /NOEQUALERROR)'); + WriteLn(' 11 Not enough memory for source file'); + WriteLn(' 12 Not enough memory for target file'); + PG.Free; + ExitCode:=1; Exit; end; - if FileExists(ParamStr(3)) then begin - WriteLn('Using existing file to include patches in: '+ParamStr(3)); - PG.LoadFromFile(ParamStr(3)); + // stop if file error, result shown above + if not FileExists(SourceFile) then begin + WriteLn('Error: Source file not found'); + PG.Free; + ExitCode:=2; + Exit; end; + if not FileExists(TargetFile) then begin + WriteLn('Error: Target file not found'); + PG.Free; + ExitCode:=3; + Exit; + end; + + if FileExists(PatchFile) then begin + WriteLn('Using existing file to include patches in: '+PatchFile); + try + PG.LoadFromFile(PatchFile); + except + on E: Exception do begin + WriteLn('Error: Reading existing patch file failed'); + WriteLn('Error message: ', E.ClassName, ': ', E.Message); + PG.Free; + ExitCode:=4; + Exit; + end; + end; + end; + + WriteLn('Source (original) file: ', SourceFile); + WriteLn('Target (newer) file: ', TargetFile); T1:=Now; - WriteLn('Patch body size: '+IntToStr(PG.CreatePatch(ParamStr(1),ParamStr(2)))); - PG.WriteToFile(ParamStr(3)); - T2:=Now; - Write('GenPat.exe finished execution in: '); - WriteLn(FloatToStr((T2-T1)*24*60*60),'s'); - WriteLn; -{$IFNDEF AUTOWAIT} - if FindCmdLineSwitch('wait',['/'],True) then begin -{$ENDIF} - WriteLn; - WriteLn('Press a key'); - ReadLn(S); -{$IFNDEF AUTOWAIT} + // create patch file, with error handling + try + i:=PG.CreatePatch(SourceFile,TargetFile); + except + on E: Exception do begin + WriteLn('Error: Generating patch failed'); + WriteLn('Error message: ', E.ClassName, ': ', E.Message); + PG.Free; + ExitCode:=5; + Exit; + end; end; -{$ENDIF} + + if(i < 0) then begin + if(i = -1) then begin + if not FindCmdLineSwitch('noequalerror',['/'],True) then + WriteLn('Error: CRC of source and target file are equal'); + end; + if(i = -2) then WriteLn('Error: Not enough memory for source file'); + if(i = -3) then WriteLn('Error: Not enough memory for target file'); + ExitCode:=9 - i; + + if(i = -1) and (FindCmdLineSwitch('noequalerror',['/'],True)) then begin + WriteLn('Equal CRCs ignored (no patch will be written and exit code is 0)'); + ExitCode:=0; + end; + end else begin + WriteLn('Patch body size: '+IntToStr(i)); + try + PG.WriteToFile(PatchFile); + except + on E: Exception do begin + WriteLn('Error: Writing patch to file ' + PatchFile + ' failed'); + WriteLn('Error message: ', E.ClassName, ': ', E.Message); + PG.Free; + ExitCode:=6; + Exit; + end; + end; + + T2:=Now; + Write('Time taken for generation: '); + WriteLn(FloatToStr((T2-T1)*24*60*60),'s'); + WriteLn; + + ExitCode:=0; + end; + PG.Free; end. diff --git a/Contrib/VPatch/Source/GenPat/PatchGenerator.pas b/Contrib/VPatch/Source/GenPat/PatchGenerator.pas index c4e99ce9..53745357 100644 --- a/Contrib/VPatch/Source/GenPat/PatchGenerator.pas +++ b/Contrib/VPatch/Source/GenPat/PatchGenerator.pas @@ -32,6 +32,8 @@ unit PatchGenerator; What's new ---------- + 2.1 20031219 Koen Added error checking to CreatePatch, returns + negative numbers when there are errors. 2.0 20030811 Koen Initial documentation } @@ -141,8 +143,8 @@ var retTO: Integer; noN: Integer; begin - fsSource:=TFileStream.Create(SourceFileName,fmOpenRead); - fsTarget:=TFileStream.Create(TargetFileName,fmOpenRead); + fsSource:=TFileStream.Create(SourceFileName,fmOpenRead+fmShareDenyNone); + fsTarget:=TFileStream.Create(TargetFileName,fmOpenRead+fmShareDenyNone); fm:=TMemoryStream.Create; SetLength(PRay,INIT_BLOCK_COUNT); @@ -150,7 +152,14 @@ begin //Load those files into memory! SourceSize:=fsSource.Size; - GetMem(Source,SourceSize); + try + GetMem(Source,SourceSize); + except + on EOutOfMemory do begin + Result:=-2; // not enough memory for source file + Exit; + end; + end; fm.CopyFrom(fsSource,SourceSize); Move(fm.Memory^,Source^,SourceSize); SourceCRC:=FileCRC(fsSource); @@ -158,13 +167,28 @@ begin fm.Clear; TargetSize:=fsTarget.Size; - GetMem(Target,TargetSize); + try + GetMem(Target,TargetSize); + except + on EOutOfMemory do begin + FreeMem(Source,SourceSize); + Result:=-3; // not enough memory for target file + Exit; + end; + end; fm.CopyFrom(fsTarget,TargetSize); Move(fm.Memory^,Target^,TargetSize); TargetCRC:=FileCRC(fsTarget); fsTarget.Free; fm.Free; + if(SourceCRC = TargetCRC) then begin + FreeMem(Source,SourceSize); + FreeMem(Target,TargetSize); + Result:=-1; + Exit; + end; + PRay[0].TargetOffset:=0; PRay[0].SourceOffset:=0; PRay[0].Size:=0; diff --git a/Contrib/VPatch/Source/GenPat/TreeCode.pas b/Contrib/VPatch/Source/GenPat/TreeCode.pas index 3d6c5f62..29e5cd37 100644 --- a/Contrib/VPatch/Source/GenPat/TreeCode.pas +++ b/Contrib/VPatch/Source/GenPat/TreeCode.pas @@ -15,6 +15,8 @@ unit TreeCode; What's new ---------- + 2.1 20031219 Koen Fixed bug in TreeFind: when tree was a nil + pointer, now returns instead of AVing 2.0 20030811 Koen Initial documentation } @@ -179,6 +181,10 @@ var lo,mid,hi,m: Integer; tmp: Cardinal; begin + if not Assigned(ABlockTree) then begin + FoundCount:=0; Result:=nil; + Exit; + end; lo:=0; hi:=ABlockTreeNodeCount-1; while true do begin