NSIS/Contrib/VPatch
joostverburg 6dd280b24f VPatch 2.0 final
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@2798 212acab6-be3b-0410-9dea-997c60f758d6
2003-08-11 16:42:41 +00:00
..
Source VPatch 2.0 final 2003-08-11 16:42:41 +00:00
example.nsi VPatch 2003-05-21 12:24:22 +00:00
GenPat.exe VPatch 2.0 final 2003-08-11 16:42:41 +00:00
newfile.txt VPatch 2003-05-21 12:24:22 +00:00
oldfile.txt VPatch 2003-05-21 12:24:22 +00:00
patch.pat VPatch 2003-05-21 12:24:22 +00:00
Readme.html VPatch 2.0 final 2003-08-11 16:42:41 +00:00

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>

<title>VPatch 2</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<style type="text/css">

body
	{
	padding: 10px;
	background-color: #F0F0F0;
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 10pt;
	font-weight: normal;
	}

center
	{
	text-align: center;
	}

table
	{
	margin: auto;
	text-align: left;
	background-color: #FFFFFF;
	}

.maintable
	{
	border: 2px solid #376EAB;
	}

.margin
	{
	margin: 20px;
	}

.text
	{
	margin: 20px;
	}

.bold
	{
	font-weight: bold;
	}
	
.italic
	{
	font-style: italic;
	}

.bigheader
	{
	margin: 10px;
	font-size: 24pt;
	color: #333333;
	text-align: center;
	}

.header
	{
	font-size: 14pt;
	color: #7A7272;
	}
	
.subheader
	{
	margin: 20px;
	font-size: 11pt;
	font-weight: bold;
	color: #303030;
	}

.footer
	{
   	margin: 5px 5px 5px 5px;
	text-align: right;
	font-size: 8pt;
	color: #909090;
	}
	
a:link, a:visited, a:active
	{
	color: #294F75;
	text-decoration: none;
	}
	
a:hover
	{
	color: #182634;
	text-decoration: none;
	}
	
</style>

</head>

<body>

<div class="center">
<table width="750" class="maintable" cellspacing="0" cellpadding="0">
<tr><td>
<table cellspacing="0" cellpadding="0">
<tr>
  <td><p class="bigheader">VPatch 2</p></td>
</tr>

<tr>
 <td><div class="margin">
<p class="header">Introduction</p>
<p class="text">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.</p>
<p class="header">How to use</p>
<p class="subheader">Generate the patch file</p>
<p class="text">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:</p>
<pre class="margin">GENPAT data.dta data_20.dta data.pat</pre>
<p class="text">Now, the patch will be generated, this will take some time.</p>
<p class="text">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).</p>
<p class="subheader">Update the file in your installer</p>
<p class="text">Use the VPatch plug-in to update a file using a patch file:</p>
<pre class="margin">vpatch::vpatchfile "pathfile.pat" "source.file" "new.file"</pre>
<p class="text">Check <a href="example.nsi">example.nsi</a> for an example.</p>
<p class="subheader">Multiple patches in one file</p>
<p class="text">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 &gt; 3 and 2 &gt; 3 patch in one
file.</p>
<p class="text">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).</p>
<p class="header">Source code</p>
<p class="subheader">NSIS plug-in (C++)</p>
<p class="text">The source of the NSIS plug-in that applies patches can be found in the
Source\Plugin folder.</p>
<p class="subheader">Patch Generator (Delphi)</p>
<p class="text">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.</p>
<p class="subheader">User interface (Delphi)</p>
<p class="text">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 will also need to install the <a href="http://www.delphi-gems.com">VirtualTreeView</a> 
component by Mike Lischke.</p>
<p class="header">Version history</p>
<ul>
<li>2.0 final
<ul>
<li>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).</li>
</ul>
</li>
<li>2.0 beta 2 
<ul>
<li>All new algorithm used in the patch generator: much faster (up to 90%) while using
smaller block sizes (higher compression)</li>
<li>Created a NSIS 2 plugin</li>
<li>Works with small files</li>
<li>Replaces existing patch in file if original file CRC is identical</li>
</ul>
</li>
</ul>
<p class="header">Credits</p>
<p class="text">Written by Koen van de Sande<br />
C plug-in by Edgewize<br />
New documentation and example by Joost Verburg</p>
<p class="header">License</p>
<pre class="margin">Copyright (C) 2001-2003 Koen van de Sande

This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.

Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute
it freely, subject to the following restrictions:

1. The origin of this software must not be misrepresented; 
   you must not claim that you wrote the original software.
   If you use this software in a product, an acknowledgment in the
   product documentation would be appreciated but is not required.
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.
</pre>
  </div></td>
  </tr>
</table>
</td></tr>
</table>
</div>

</body>
</html>