updated reserve file info, fixes, html structure

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3265 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
joostverburg 2003-12-09 19:33:48 +00:00
parent f850525a12
commit 516667fc1b
3 changed files with 166 additions and 177 deletions

View file

@ -22,7 +22,7 @@ p
margin: 20px;
}
center
.center
{
text-align: center;
}
@ -64,7 +64,7 @@ h2
h3
{
font-size: 150%;
font-size: 140%;
font-weight: bold;
color: #303030;
margin: 20px;
@ -203,9 +203,8 @@ to the right. Use NSIS's $(^RTL) to fill this field, it's the easiest way.</td>
<td class="lefttable"><strong>State</strong></td>
<td class="lefttable"><em>(output)</em></td>
<td class="righttable">This is not something you have to supply yourself but is set by
InstallOptions, before calling your custom page validation function, to the field
number of the custom Button control (or other control having the Notify flag) the
user pressed, if any.
InstallOptions, before calling your custom page validation function, to the field number of the
custom Button control (or other control having the Notify flag) the user pressed, if any.</td>
</tr>
</table>
<p>Each field section has the heading "Field #" where # must be sequential numbers from 1 to
@ -217,7 +216,8 @@ NumFields. Each Field section can contain the following values:</p>
<td class="righttable">Type of control to be created. Valid values are "<em>Label</em>",
"<em>Text</em>", "<em>Password</em>", "<em>Combobox</em>", "<em>DropList</em>", "<em>Listbox</em>",
"<em>CheckBox</em>", "<em>RadioButton</em>", "<em>FileRequest</em>", "<em>DirRequest</em>"
"<em>Icon</em>", "<em>Bitmap</em>", "<em>GroupBox</em>", "<em>Link</em>" or "<em>Button</em>".<br />
"<em>Icon</em>", "<em>Bitmap</em>", "<em>GroupBox</em>", "<em>Link</em>" or
"<em>Button</em>".<br />
<br />
A "<em>Label</em>" is used to display static text. (i.e. a caption for a textbox)<br />
A "<em>Text</em>" and "<em>Password</em>" accept text input from the user. "<em>Password</em>"
@ -237,8 +237,8 @@ A "<em>Bitmap</em>" control displays a bitmap.<br />
A "<em>GroupBox</em>" control displays a frame to group controls.<br />
A "<em>Link</em>" control displays a static hot text, when the user click the control the contents
of <strong>State</strong> (e.g. http://...) will be executed using ShellExecute<br />
A "<em>Button</em>" control displays a push button that your NSIS script can act on
when pressed. See the "<em>NOTIFY</em>" flag for more information.</td>
A "<em>Button</em>" control displays a push button that your NSIS script can act on when pressed.
See the "<em>NOTIFY</em>" flag for more information.</td>
</tr>
<tr>
<td class="lefttable"><strong>Text</strong></td>
@ -455,10 +455,9 @@ box.</td>
</tr>
<tr>
<td class="righttable">NOWORDWRAP</td>
<td class="righttable">Used by "<em>Text</em>" controls with multiple-line. Disables the
word-wrap that occurs when long lines are entered. Long lines instead scroll off to the
side. Specifying the HSCROLL flag also has this effect.
</td>
<td class="righttable">Used by "<em>Text</em>" controls with multiple-line. Disables the word-wrap
that occurs when long lines are entered. Long lines instead scroll off to the side. Specifying the
HSCROLL flag also has this effect.</td>
</tr>
<tr>
<td class="righttable">HSCROLL</td>
@ -478,12 +477,11 @@ text in the edit control, but allow the user to select and copy the text.</td>
<tr>
<td class="righttable">NOTIFY</td>
<td class="righttable">Used by "<em>Button</em>", "<em>CheckBox</em>" and "<em>RadioButton</em>"
controls. Causes InstallOptions to call your NSIS custom page validation/leave function
whenever the button is pressed. Your validation/leave function can read the "<em>State</em>"
value from the "<em>Settings</em>" section to determine which custom button has been
pressed, if any, and perform some appropriate action followed by an Abort instruction
(to tell NSIS to return to the page). The Contrib\InstallOptions folder contains an
example script showing how this might be used.</td>
controls. Causes InstallOptions to call your NSIS custom page validation/leave function whenever
the button is pressed. Your validation/leave function can read the "<em>State</em>" value from the
"<em>Settings</em>" section to determine which custom button has been pressed, if any, and perform
some appropriate action followed by an Abort instruction (to tell NSIS to return to the page). The
Contrib\InstallOptions folder contains an example script showing how this might be used.</td>
</tr>
</table>
</td>
@ -672,10 +670,12 @@ following values:</p>
(have a look at the example above).</p>
<p>If you want to check the user input immediately, for example, to display a warning when the
input is invalid, you should check whether the user has pressed the Back or Next button.</p>
<p class="subheader">ReserveFile</p>
<p>It you are using solid BZIP2 compression and your .onInit and Page functions are not above all
other sections/functions with File commands, use ReserveFile on the top of your script to put the
DLL/INI files first in the data block, which will make your installer start faster:</p>
<h2>Reserve files</h2>
<p>If you are using BZIP2 (solid) compression, it's important that files which are being extracted
in init- or page functions function are located before other files in the data block, because this
will make your installer faster.</p>
<p>If there are File commands in your sections or functions above the init- or page functions, add
ReserveFile commands above your sections and functions:</p>
<pre>
ReserveFile "test.ini"
ReserveFile "${NSISDIR}\Plugins\InstallOptions.dll"

View file

@ -452,7 +452,6 @@ Variable in which to store the selected folder.<br />
Does not disable the Next button when a folder is invalid but allows you to use GetInstDirError in
the leave function to handle an invalid folder.</p>
</div>
<br />
<h3>Start Menu Folder Page Settings</h3>
<div>
<p>Put the code to write the shortcuts (using CreateShortcut) between the MUI_STARTMENU_WRITE_BEGIN
@ -633,9 +632,9 @@ language stored in the registry will be selected by default.</p>
</div>
</div>
<h2>6. Reserve files</h2>
<p>If you are using BZIP2 (solid) compression, it's important that files which are being extracted
in init- or page functions function are located before other files in the data block, because this
will make your installer faster.</p>
<p>If you are using solid compression (by default, solid compression is enabled for BZip2 and
LZMA), it's important that files which are being extracted in init- or page functions function are
located before other files in the data block, because this will make your installer faster.</p>
<p>If there are File commands in your sections or functions above the init- or page functions, add
the reserve file macros above your sections and functions.</p>
<pre>

View file

@ -1,138 +1,131 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>VPatch 2</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
<style type="text/css">
/*<![CDATA[*/
body
{
padding: 10px;
background-color: #F0F0F0;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10pt;
font-weight: normal;
}
{
padding: 10px;
background-color: #F0F0F0;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 13px;
font-weight: normal;
}
center
{
text-align: center;
}
p
{
font-size: 100%;
margin: 20px;
}
.center
{
text-align: center;
}
table
{
margin: auto;
text-align: left;
background-color: #FFFFFF;
}
{
margin: auto;
text-align: left;
background-color: #FFFFFF;
}
.maintable
{
border: 2px solid #376EAB;
}
{
border: 2px solid #376EAB;
}
.margin
{
margin: 20px;
}
.parameter
{
font-weight: bold;
color: #6586AC;
}
.text
{
margin: 20px;
}
.bold
{
font-weight: bold;
}
.italic
{
font-style: italic;
}
h1
{
font-size: 220%;
color: #333333;
font-weight: normal;
text-align: center;
margin: 20px;
}
h2
{
font-size: 165%;
color: #7A7272;
font-weight: normal;
}
h3
{
font-size: 140%;
font-weight: normal
color: #303030;
margin: 20px;
}
.bigheader
{
margin: 10px;
font-size: 24pt;
color: #333333;
text-align: center;
}
pre {
font-size: 100%;
margin: 20px;
}
.header
{
font-size: 14pt;
color: #7A7272;
}
.subheader
{
margin: 20px;
font-size: 11pt;
font-weight: bold;
color: #303030;
}
div
{
margin: 20px;
}
.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;
}
{
color: #294F75;
text-decoration: none;
}
a:hover
{
color: #182634;
text-decoration: none;
}
{
color: #182634;
text-decoration: underline;
}
/*]]>*/
</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">The result of the patch operating will be added to the stack and can
be one of the following texts:</p>
<td>
<h1>VPatch 2</h1>
<div>
<h2>Introduction</h2>
<p>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>
<h2>How to use</h2>
<h3>Generate the patch file</h3>
<p>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>
GENPAT data.dta data_20.dta data.pat
</pre>
<p>Now, the patch will be generated, this will take some time.</p>
<p>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>
<h3>Update the file during installation</h3>
<p>Use the VPatch plug-in to update a file using a patch file:</p>
<pre>
vpatch::vpatchfile "pathfile.pat" "source.file" "new.file"
</pre>
<p>The result of the patch operating will be added to the stack and can be one of the following
texts:</p>
<ul>
<li>OK</li>
<li>OK, new version already installed</li>
@ -140,53 +133,53 @@ be one of the following texts:</p>
<li>Patch data is invalid or corrupt</li>
<li>No suitable patches were found</li>
</ul>
<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 can use the freely available Personal edition), 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>
<p>Check <a href="example.nsi">example.nsi</a> for an example.</p>
<h3>Multiple patches in one file</h3>
<p>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>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>
<h2>Source code</h2>
<h3>NSIS plug-in (C++)</h3>
<p>The source of the NSIS plug-in that applies patches can be found in the Source\Plugin
folder.</p>
<h3>Patch Generator (Delphi)</h3>
<p>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>
<h3>User interface (Delphi)</h3>
<p>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 <a href=
"http://www.delphi-gems.com">VirtualTreeView</a> component by Mike Lischke.</p>
<h2>Version history</h2>
<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>
<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
<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>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 />
<h2>Credits</h2>
<p>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
<h2>License</h2>
<pre>
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
@ -203,13 +196,10 @@ 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.
</pre>
</div></td>
</tr>
</table>
</td></tr>
</pre></div>
</td>
</tr>
</table>
</div>
</body>
</html>
</html>