<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://nsis.sourceforge.io/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PerditionC</id>
	<title>NSIS Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://nsis.sourceforge.io/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PerditionC"/>
	<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/Special:Contributions/PerditionC"/>
	<updated>2026-04-23T20:43:17Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=DialogsEx_plug-in&amp;diff=18151</id>
		<title>DialogsEx plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=DialogsEx_plug-in&amp;diff=18151"/>
		<updated>2010-02-23T15:08:41Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Links */  Unicode NSIS compatible version (and mirror)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|Joel}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[http://nsis.sourceforge.net/Joel_plugin_src Main]&lt;br /&gt;
&lt;br /&gt;
[http://www.fdos.org/win32/nsis/plugins/others/joel/ mirror] DialogsEx for NSIS &amp;amp; Unicode NSIS&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.&lt;br /&gt;
&lt;br /&gt;
This plug-in is an extension for the [[Dialogs plug-in]] by the same author which has more options than the previous version of the plug-in. It contains 7 types of dialog boxes:&lt;br /&gt;
&lt;br /&gt;
* Open file dialog box.&lt;br /&gt;
* Save file dialog box.&lt;br /&gt;
* Classic folder browse dialog box.&lt;br /&gt;
* Modern folder browse dialog box.&lt;br /&gt;
* InputTextBox (only for text).&lt;br /&gt;
* InputPwdBox (text + password).&lt;br /&gt;
* InputRegBox (User with serial).&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=MoreInfo_plug-in&amp;diff=18124</id>
		<title>MoreInfo plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=MoreInfo_plug-in&amp;diff=18124"/>
		<updated>2010-02-18T08:11:06Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* OS User Language Information DLL Function */  update to match source/tested behaviour&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|onad}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;attach&amp;gt;MoreInfo.zip&amp;lt;/attach&amp;gt; (w/ Delphi source)&lt;br /&gt;
&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/others/MoreInfo.1.0.1.2.zip MoreInfo.1.0.1.2.zip] (35KB) (NSIS &amp;amp; Unicode NSIS versions, translated into C source)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://forums.winamp.com/showthread.php?postid=1692707#post1692707 MoreInfo Forums Thread]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
This plugin correctly retrieves version information from files and the Windows OS user interface language.&lt;br /&gt;
&lt;br /&gt;
This is a better inplementation than [[FileInfo plugin]], with more accurate results.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
=== File Information DLL Functions ===&lt;br /&gt;
&lt;br /&gt;
==== Default File Properties ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;MoreInfo::Get&amp;lt;File Property&amp;gt; &amp;lt;Filename&amp;gt;&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These functions return the values of default file properties to the stack.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;File Property&amp;gt;&lt;br /&gt;
:One of the default file properties from the list below: (ie: ProductName)&lt;br /&gt;
:*Comments&lt;br /&gt;
:*PrivateBuild&lt;br /&gt;
:*SpecialBuild&lt;br /&gt;
:*ProductName&lt;br /&gt;
:*ProductVersion&lt;br /&gt;
:*CompanyName&lt;br /&gt;
:*FileVersion&lt;br /&gt;
:*FileDescription&lt;br /&gt;
:*LegalCopyright&lt;br /&gt;
:*LegalTrademarks&lt;br /&gt;
:*OriginalFileName&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;Filename&amp;gt;&lt;br /&gt;
:Valid filename where the information is taken from. (ie: &amp;quot;C:\Windows\MyFile.dll&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==== User Defined File Properties ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;MoreInfo::GetUserDefined &amp;lt;Filename&amp;gt; &amp;lt;PropertyName&amp;gt;&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This function returns an user defined file property value to the stack.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;Filename&amp;gt;&lt;br /&gt;
:Valid filename where the information is taken from. (ie: &amp;quot;C:\Windows\MyFile.dll&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;PropertyName&amp;gt;&lt;br /&gt;
:Valid name of an user defined property you want to obtain a value from. (ie: &amp;quot;Language&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;Variable&amp;gt;&lt;br /&gt;
:The variable where to output the return value. (ie: &amp;quot;$0&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== OS User Language Information DLL Function ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;MoreInfo::GetOSUserinterfaceLanguage&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This function sets $LANGUAGE to the user interface language; it does not push any value to the stack.&lt;br /&gt;
&lt;br /&gt;
=== Return Value Syntax ===&lt;br /&gt;
&lt;br /&gt;
*If the property was found: its value will be returned (ie: &amp;quot;My Company&amp;quot;);&lt;br /&gt;
*If the property was not found: it will be &amp;quot;&amp;quot;;&lt;br /&gt;
*Otherwise, the value returned will start with &amp;quot;Error:&amp;quot;, followed by an error message (ie: &amp;quot;Error:Unable to allocate memory.&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
== How the language will be determined ==&lt;br /&gt;
&lt;br /&gt;
When the installer starts up it goes through these steps to select the interface language:&lt;br /&gt;
&lt;br /&gt;
#Get user&#039;s default Windows OS GUI language;&lt;br /&gt;
#Find a perfect match for the language;&lt;br /&gt;
#If there is no perfect match, find a primary language match;&lt;br /&gt;
#If there is no match, use the first language defined in the script (make sure your first language is a common one like English);&lt;br /&gt;
#If the langauge variable $LANGUAGE has changed during .onInit, NSIS goes through steps 2 to 4 again, as in the case of this plugin.&lt;br /&gt;
&lt;br /&gt;
As you can see the outcome of a chosen language is never un-expected.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
There are two examples inside the .zip file.&lt;br /&gt;
&lt;br /&gt;
1) SimpleDemo&lt;br /&gt;
Shows of the basic functionality of MoreInfo&lt;br /&gt;
&lt;br /&gt;
2) CustomLanguageDemo&lt;br /&gt;
Fully shows the power of getting the OS GUI language. I the demo a good example of how custompage localization works and could be implemented.&lt;br /&gt;
&lt;br /&gt;
== Info about LCID&#039;s ==&lt;br /&gt;
&lt;br /&gt;
The LCID, or &amp;quot;locale identifer,&amp;quot; is a 32-bit data type into which are packed several different values that help to identify a particular geographical region. One of these internal values is the &amp;quot;primary language ID&amp;quot; which identifies the basic language of the region or locale, such as English, Spanish, or Turkish.&lt;br /&gt;
&lt;br /&gt;
For conversion from LCID to NSIS Language define we use the following table. The table lists some common LCIDs as well as well as some less common ones that are valid for NSIS even through Windows does not recognize them by default. Note that this is this probably not a complete list of all possible LCIDs. Feel free to improve&lt;br /&gt;
the list below.&lt;br /&gt;
&lt;br /&gt;
Some Valid LCIDs. (Note: $ in front means the value is in Hexidecimal notation)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Afrikaans || $0436&lt;br /&gt;
|-&lt;br /&gt;
| Albanian || $041c&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Algeria) || $1401&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Bahrain) || $3c01&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Egypt) || $0c01&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Iraq) || $0801&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Jordan) || $2c01&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Kuwait) || $3401&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Lebanon) || $3001&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Libya) || $1001&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Morocco) || $1801&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Oman) || $2001&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Qatar) || $4001&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Saudi Arabia) || $0401&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Syria) || $2801&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Tunisia) || $1c01&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (U.A.E.) || $3801&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Yemen) || $2401&lt;br /&gt;
|-&lt;br /&gt;
| Basque || $042d&lt;br /&gt;
|-&lt;br /&gt;
| Belarusian || $0423&lt;br /&gt;
|-&lt;br /&gt;
| Bulgarian || $0402&lt;br /&gt;
|-&lt;br /&gt;
| Catalan || $0403&lt;br /&gt;
|-&lt;br /&gt;
| Chinese (Hong Kong SAR) || $0c04&lt;br /&gt;
|-&lt;br /&gt;
| Chinese (PRC) || $0804&lt;br /&gt;
|-&lt;br /&gt;
| Chinese (Singapore) || $1004&lt;br /&gt;
|-&lt;br /&gt;
| Chinese (Taiwan) || $0404&lt;br /&gt;
|-&lt;br /&gt;
| Croatian || $041a&lt;br /&gt;
|-&lt;br /&gt;
| Czech || $0405&lt;br /&gt;
|-&lt;br /&gt;
| Danish || $0406&lt;br /&gt;
|-&lt;br /&gt;
| Dutch (Belgian) || $0813&lt;br /&gt;
|-&lt;br /&gt;
| Dutch (Standard) || $0413&lt;br /&gt;
|-&lt;br /&gt;
| English (Australian) || $0c09&lt;br /&gt;
|-&lt;br /&gt;
| English (Belize) || $2809&lt;br /&gt;
|-&lt;br /&gt;
| English (Canadian) || $1009&lt;br /&gt;
|-&lt;br /&gt;
| English (Caribbean) || $2409&lt;br /&gt;
|-&lt;br /&gt;
| English (Ireland) || $1809&lt;br /&gt;
|-&lt;br /&gt;
| English (Jamaica) || $2009&lt;br /&gt;
|-&lt;br /&gt;
| English (New Zealand) || $1409&lt;br /&gt;
|-&lt;br /&gt;
| English (South Africa) || $1c09&lt;br /&gt;
|-&lt;br /&gt;
| English (Trinidad) || $2c09&lt;br /&gt;
|-&lt;br /&gt;
| English (United Kingdom) || $0809&lt;br /&gt;
|-&lt;br /&gt;
| English (United States) || $0409&lt;br /&gt;
|-&lt;br /&gt;
| Estonian || $0425&lt;br /&gt;
|-&lt;br /&gt;
| Faeroese || $0438&lt;br /&gt;
|-&lt;br /&gt;
| Farsi || $0429&lt;br /&gt;
|-&lt;br /&gt;
| Finnish || $040b&lt;br /&gt;
|-&lt;br /&gt;
| French (Belgian) || $080c&lt;br /&gt;
|-&lt;br /&gt;
| French (Canadian) || $0c0c&lt;br /&gt;
|-&lt;br /&gt;
| French (Luxembourg) || $140c&lt;br /&gt;
|-&lt;br /&gt;
| French (Standard) || $040c&lt;br /&gt;
|-&lt;br /&gt;
| French (Swiss) || $100c&lt;br /&gt;
|-&lt;br /&gt;
| German (Austrian) || $0c07&lt;br /&gt;
|-&lt;br /&gt;
| German (Liechtenstein) || $1407&lt;br /&gt;
|-&lt;br /&gt;
| German (Luxembourg) || $1007&lt;br /&gt;
|-&lt;br /&gt;
| German (Standard) || $0407&lt;br /&gt;
|-&lt;br /&gt;
| German (Swiss) || $0807&lt;br /&gt;
|-&lt;br /&gt;
| Greek || $0408&lt;br /&gt;
|-&lt;br /&gt;
| Hebrew || $040d&lt;br /&gt;
|-&lt;br /&gt;
| Hungarian || $040e&lt;br /&gt;
|-&lt;br /&gt;
| Icelandic || $040f&lt;br /&gt;
|-&lt;br /&gt;
| Indonesian || $0421&lt;br /&gt;
|-&lt;br /&gt;
| Italian (Standard) || $0410&lt;br /&gt;
|-&lt;br /&gt;
| Italian (Swiss) || $0810&lt;br /&gt;
|-&lt;br /&gt;
| Japanese || $0411&lt;br /&gt;
|-&lt;br /&gt;
| Korean || $0412&lt;br /&gt;
|-&lt;br /&gt;
| Korean (Johab) || $0812&lt;br /&gt;
|-&lt;br /&gt;
| Latvian || $0426&lt;br /&gt;
|-&lt;br /&gt;
| Lithuanian || $0427&lt;br /&gt;
|-&lt;br /&gt;
| Malay (Malaysian) || $043e&lt;br /&gt;
|-&lt;br /&gt;
| Malay (Brunei) || $083e&lt;br /&gt;
|-&lt;br /&gt;
| Norwegian (Bokmal) || $0414&lt;br /&gt;
|-&lt;br /&gt;
| Norwegian (Nynorsk) || $0814&lt;br /&gt;
|-&lt;br /&gt;
| Polish || $0415&lt;br /&gt;
|-&lt;br /&gt;
| Portuguese (Brazil) || $0416&lt;br /&gt;
|-&lt;br /&gt;
| Portuguese (Portugal) || $0816&lt;br /&gt;
|-&lt;br /&gt;
| Romanian || $0418&lt;br /&gt;
|-&lt;br /&gt;
| Russian || $0419&lt;br /&gt;
|-&lt;br /&gt;
| Serbian (Cyrillic) || $0c1a&lt;br /&gt;
|-&lt;br /&gt;
| Serbian (Latin) || $081a&lt;br /&gt;
|-&lt;br /&gt;
| Slovak || $041b&lt;br /&gt;
|-&lt;br /&gt;
| Slovenian || $0424&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Argentina) || $2c0a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Bolivia) || $400a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Chile) || $340a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Colombia) || $240a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Costa Rica) || $140a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Dominican Republic) || $1c0a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Ecuador) || $300a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (El Salvador) || $440a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Guatemala) || $100a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Honduras) || $480a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Mexican) || $080a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Modern Sort) || $0c0a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Nicaragua) || $4c0a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Panama) || $180a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Paraguay) || $3c0a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Peru) || $280a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Puerto Rico) || $500a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Traditional Sort) || $040a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Uruguay) || $380a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Venezuela) || $200a&lt;br /&gt;
|-&lt;br /&gt;
| Swahili || $0441&lt;br /&gt;
|-&lt;br /&gt;
| Swedish || $041d&lt;br /&gt;
|-&lt;br /&gt;
| Swedish (Finland) || $081d&lt;br /&gt;
|-&lt;br /&gt;
| Thai || $041e&lt;br /&gt;
|-&lt;br /&gt;
| Turkish || $041f&lt;br /&gt;
|-&lt;br /&gt;
| Ukrainian || $0422&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Several CD/DVD methods and properties return locale identifier (LCID) values that identify which languages are available on the soundtracks or subtitles. To make use of this information, your application will need to extract the primary language ID from the returned LCID. To do this,&lt;br /&gt;
perform a bitwise AND operation on the value of iLCID and $3FF. (The primary language ID is contained in the least significant 10 bits of the LCID.) The following code snippet shows how to do this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;highlight-delphi&amp;gt;iPrimaryLang = iLCID &amp;amp; $3FF;&amp;lt;/highlight-delphi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To obtain an human-readable string from the primary language ID, call GetLangFromLangID as shown in this example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;highlight-delphi&amp;gt;sLanguage = DVD.GetLangFromLangID(iPrimaryLang);&amp;lt;/highlight-delphi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See the Microsoftï¿½ Platform SDK for more information on LCIDs and language identifiers. The following list shows the primary language IDs for the LCIDs in the table above.&lt;br /&gt;
 &lt;br /&gt;
Some Valid Primary Language IDs:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Afrikaans || $36&lt;br /&gt;
|-&lt;br /&gt;
| Albanian || $1c&lt;br /&gt;
|-&lt;br /&gt;
| Arabic || $01&lt;br /&gt;
|-&lt;br /&gt;
| Basque || $2d&lt;br /&gt;
|-&lt;br /&gt;
| Belarusian || $23&lt;br /&gt;
|-&lt;br /&gt;
| Bulgarian || $02&lt;br /&gt;
|-&lt;br /&gt;
| Catalan || $03&lt;br /&gt;
|-&lt;br /&gt;
| Chinese || $04&lt;br /&gt;
|-&lt;br /&gt;
| Croatian || $1a&lt;br /&gt;
|-&lt;br /&gt;
| Czech || $05&lt;br /&gt;
|-&lt;br /&gt;
| Danish || $06&lt;br /&gt;
|-&lt;br /&gt;
| Dutch || $13&lt;br /&gt;
|-&lt;br /&gt;
| English || $09&lt;br /&gt;
|-&lt;br /&gt;
| Estonian || $25&lt;br /&gt;
|-&lt;br /&gt;
| Faeroese || $38&lt;br /&gt;
|-&lt;br /&gt;
| Farsi || $29&lt;br /&gt;
|-&lt;br /&gt;
| Finnish || $0b&lt;br /&gt;
|-&lt;br /&gt;
| French || $0c&lt;br /&gt;
|-&lt;br /&gt;
| German || $07&lt;br /&gt;
|-&lt;br /&gt;
| Greek || $08&lt;br /&gt;
|-&lt;br /&gt;
| Hebrew || $0d&lt;br /&gt;
|-&lt;br /&gt;
| Hungarian || $0e&lt;br /&gt;
|-&lt;br /&gt;
| Icelandic || $0f&lt;br /&gt;
|-&lt;br /&gt;
| Indonesian || $21&lt;br /&gt;
|-&lt;br /&gt;
| Italian || $10&lt;br /&gt;
|-&lt;br /&gt;
| Japanese || $11&lt;br /&gt;
|-&lt;br /&gt;
| Korean || $12&lt;br /&gt;
|-&lt;br /&gt;
| Latvian || $26&lt;br /&gt;
|-&lt;br /&gt;
| Lithuanian || $27&lt;br /&gt;
|-&lt;br /&gt;
| Malay || $3e&lt;br /&gt;
|-&lt;br /&gt;
| Norwegian || $14&lt;br /&gt;
|-&lt;br /&gt;
| Polish || $15&lt;br /&gt;
|-&lt;br /&gt;
| Portuguese || $16&lt;br /&gt;
|-&lt;br /&gt;
| Romanian || $18&lt;br /&gt;
|-&lt;br /&gt;
| Russian || $19&lt;br /&gt;
|-&lt;br /&gt;
| Serbian || $1a&lt;br /&gt;
|-&lt;br /&gt;
| Slovak || $1b&lt;br /&gt;
|-&lt;br /&gt;
| Slovenian || $24&lt;br /&gt;
|-&lt;br /&gt;
| Spanish || $0a&lt;br /&gt;
|-&lt;br /&gt;
| Swahili || $41&lt;br /&gt;
|-&lt;br /&gt;
| Swedish || $1d&lt;br /&gt;
|-&lt;br /&gt;
| Thai || $1e&lt;br /&gt;
|-&lt;br /&gt;
| Turkish || $1f&lt;br /&gt;
|-&lt;br /&gt;
| Ukrainian || $22&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
== Source ==&lt;br /&gt;
&lt;br /&gt;
Freeware, can be used anywhere by anyone, or whatever license Nullsoft has bound their wrapper with, most of the rest came from the top of my head. See the source for possible more information.&lt;br /&gt;
&lt;br /&gt;
Built with Borland Delphi v7.1.1&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.borland.com/delphi/&lt;br /&gt;
&lt;br /&gt;
Success with building customer friendly installations!&lt;br /&gt;
&lt;br /&gt;
E. Onad&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=MoreInfo_plug-in&amp;diff=18123</id>
		<title>MoreInfo plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=MoreInfo_plug-in&amp;diff=18123"/>
		<updated>2010-02-18T08:07:12Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Links */ Unicode NSIS version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|onad}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;attach&amp;gt;MoreInfo.zip&amp;lt;/attach&amp;gt; (w/ Delphi source)&lt;br /&gt;
&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/others/MoreInfo.1.0.1.2.zip MoreInfo.1.0.1.2.zip] (35KB) (NSIS &amp;amp; Unicode NSIS versions, translated into C source)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://forums.winamp.com/showthread.php?postid=1692707#post1692707 MoreInfo Forums Thread]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
This plugin correctly retrieves version information from files and the Windows OS user interface language.&lt;br /&gt;
&lt;br /&gt;
This is a better inplementation than [[FileInfo plugin]], with more accurate results.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
=== File Information DLL Functions ===&lt;br /&gt;
&lt;br /&gt;
==== Default File Properties ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;MoreInfo::Get&amp;lt;File Property&amp;gt; &amp;lt;Filename&amp;gt;&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These functions return the values of default file properties to the stack.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;File Property&amp;gt;&lt;br /&gt;
:One of the default file properties from the list below: (ie: ProductName)&lt;br /&gt;
:*Comments&lt;br /&gt;
:*PrivateBuild&lt;br /&gt;
:*SpecialBuild&lt;br /&gt;
:*ProductName&lt;br /&gt;
:*ProductVersion&lt;br /&gt;
:*CompanyName&lt;br /&gt;
:*FileVersion&lt;br /&gt;
:*FileDescription&lt;br /&gt;
:*LegalCopyright&lt;br /&gt;
:*LegalTrademarks&lt;br /&gt;
:*OriginalFileName&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;Filename&amp;gt;&lt;br /&gt;
:Valid filename where the information is taken from. (ie: &amp;quot;C:\Windows\MyFile.dll&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==== User Defined File Properties ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;MoreInfo::GetUserDefined &amp;lt;Filename&amp;gt; &amp;lt;PropertyName&amp;gt;&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This function returns an user defined file property value to the stack.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;Filename&amp;gt;&lt;br /&gt;
:Valid filename where the information is taken from. (ie: &amp;quot;C:\Windows\MyFile.dll&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;PropertyName&amp;gt;&lt;br /&gt;
:Valid name of an user defined property you want to obtain a value from. (ie: &amp;quot;Language&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;Variable&amp;gt;&lt;br /&gt;
:The variable where to output the return value. (ie: &amp;quot;$0&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== OS User Language Information DLL Function ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;MoreInfo::GetOSUserinterfaceLanguage&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This function retrives the user interface language to the stack.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;Variable&amp;gt;&lt;br /&gt;
:The variable where to output the return value. (ie: &amp;quot;$0&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
=== Return Value Syntax ===&lt;br /&gt;
&lt;br /&gt;
*If the property was found: its value will be returned (ie: &amp;quot;My Company&amp;quot;);&lt;br /&gt;
*If the property was not found: it will be &amp;quot;&amp;quot;;&lt;br /&gt;
*Otherwise, the value returned will start with &amp;quot;Error:&amp;quot;, followed by an error message (ie: &amp;quot;Error:Unable to allocate memory.&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
== How the language will be determined ==&lt;br /&gt;
&lt;br /&gt;
When the installer starts up it goes through these steps to select the interface language:&lt;br /&gt;
&lt;br /&gt;
#Get user&#039;s default Windows OS GUI language;&lt;br /&gt;
#Find a perfect match for the language;&lt;br /&gt;
#If there is no perfect match, find a primary language match;&lt;br /&gt;
#If there is no match, use the first language defined in the script (make sure your first language is a common one like English);&lt;br /&gt;
#If the langauge variable $LANGUAGE has changed during .onInit, NSIS goes through steps 2 to 4 again, as in the case of this plugin.&lt;br /&gt;
&lt;br /&gt;
As you can see the outcome of a chosen language is never un-expected.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
There are two examples inside the .zip file.&lt;br /&gt;
&lt;br /&gt;
1) SimpleDemo&lt;br /&gt;
Shows of the basic functionality of MoreInfo&lt;br /&gt;
&lt;br /&gt;
2) CustomLanguageDemo&lt;br /&gt;
Fully shows the power of getting the OS GUI language. I the demo a good example of how custompage localization works and could be implemented.&lt;br /&gt;
&lt;br /&gt;
== Info about LCID&#039;s ==&lt;br /&gt;
&lt;br /&gt;
The LCID, or &amp;quot;locale identifer,&amp;quot; is a 32-bit data type into which are packed several different values that help to identify a particular geographical region. One of these internal values is the &amp;quot;primary language ID&amp;quot; which identifies the basic language of the region or locale, such as English, Spanish, or Turkish.&lt;br /&gt;
&lt;br /&gt;
For conversion from LCID to NSIS Language define we use the following table. The table lists some common LCIDs as well as well as some less common ones that are valid for NSIS even through Windows does not recognize them by default. Note that this is this probably not a complete list of all possible LCIDs. Feel free to improve&lt;br /&gt;
the list below.&lt;br /&gt;
&lt;br /&gt;
Some Valid LCIDs. (Note: $ in front means the value is in Hexidecimal notation)&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Afrikaans || $0436&lt;br /&gt;
|-&lt;br /&gt;
| Albanian || $041c&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Algeria) || $1401&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Bahrain) || $3c01&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Egypt) || $0c01&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Iraq) || $0801&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Jordan) || $2c01&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Kuwait) || $3401&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Lebanon) || $3001&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Libya) || $1001&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Morocco) || $1801&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Oman) || $2001&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Qatar) || $4001&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Saudi Arabia) || $0401&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Syria) || $2801&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Tunisia) || $1c01&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (U.A.E.) || $3801&lt;br /&gt;
|-&lt;br /&gt;
| Arabic (Yemen) || $2401&lt;br /&gt;
|-&lt;br /&gt;
| Basque || $042d&lt;br /&gt;
|-&lt;br /&gt;
| Belarusian || $0423&lt;br /&gt;
|-&lt;br /&gt;
| Bulgarian || $0402&lt;br /&gt;
|-&lt;br /&gt;
| Catalan || $0403&lt;br /&gt;
|-&lt;br /&gt;
| Chinese (Hong Kong SAR) || $0c04&lt;br /&gt;
|-&lt;br /&gt;
| Chinese (PRC) || $0804&lt;br /&gt;
|-&lt;br /&gt;
| Chinese (Singapore) || $1004&lt;br /&gt;
|-&lt;br /&gt;
| Chinese (Taiwan) || $0404&lt;br /&gt;
|-&lt;br /&gt;
| Croatian || $041a&lt;br /&gt;
|-&lt;br /&gt;
| Czech || $0405&lt;br /&gt;
|-&lt;br /&gt;
| Danish || $0406&lt;br /&gt;
|-&lt;br /&gt;
| Dutch (Belgian) || $0813&lt;br /&gt;
|-&lt;br /&gt;
| Dutch (Standard) || $0413&lt;br /&gt;
|-&lt;br /&gt;
| English (Australian) || $0c09&lt;br /&gt;
|-&lt;br /&gt;
| English (Belize) || $2809&lt;br /&gt;
|-&lt;br /&gt;
| English (Canadian) || $1009&lt;br /&gt;
|-&lt;br /&gt;
| English (Caribbean) || $2409&lt;br /&gt;
|-&lt;br /&gt;
| English (Ireland) || $1809&lt;br /&gt;
|-&lt;br /&gt;
| English (Jamaica) || $2009&lt;br /&gt;
|-&lt;br /&gt;
| English (New Zealand) || $1409&lt;br /&gt;
|-&lt;br /&gt;
| English (South Africa) || $1c09&lt;br /&gt;
|-&lt;br /&gt;
| English (Trinidad) || $2c09&lt;br /&gt;
|-&lt;br /&gt;
| English (United Kingdom) || $0809&lt;br /&gt;
|-&lt;br /&gt;
| English (United States) || $0409&lt;br /&gt;
|-&lt;br /&gt;
| Estonian || $0425&lt;br /&gt;
|-&lt;br /&gt;
| Faeroese || $0438&lt;br /&gt;
|-&lt;br /&gt;
| Farsi || $0429&lt;br /&gt;
|-&lt;br /&gt;
| Finnish || $040b&lt;br /&gt;
|-&lt;br /&gt;
| French (Belgian) || $080c&lt;br /&gt;
|-&lt;br /&gt;
| French (Canadian) || $0c0c&lt;br /&gt;
|-&lt;br /&gt;
| French (Luxembourg) || $140c&lt;br /&gt;
|-&lt;br /&gt;
| French (Standard) || $040c&lt;br /&gt;
|-&lt;br /&gt;
| French (Swiss) || $100c&lt;br /&gt;
|-&lt;br /&gt;
| German (Austrian) || $0c07&lt;br /&gt;
|-&lt;br /&gt;
| German (Liechtenstein) || $1407&lt;br /&gt;
|-&lt;br /&gt;
| German (Luxembourg) || $1007&lt;br /&gt;
|-&lt;br /&gt;
| German (Standard) || $0407&lt;br /&gt;
|-&lt;br /&gt;
| German (Swiss) || $0807&lt;br /&gt;
|-&lt;br /&gt;
| Greek || $0408&lt;br /&gt;
|-&lt;br /&gt;
| Hebrew || $040d&lt;br /&gt;
|-&lt;br /&gt;
| Hungarian || $040e&lt;br /&gt;
|-&lt;br /&gt;
| Icelandic || $040f&lt;br /&gt;
|-&lt;br /&gt;
| Indonesian || $0421&lt;br /&gt;
|-&lt;br /&gt;
| Italian (Standard) || $0410&lt;br /&gt;
|-&lt;br /&gt;
| Italian (Swiss) || $0810&lt;br /&gt;
|-&lt;br /&gt;
| Japanese || $0411&lt;br /&gt;
|-&lt;br /&gt;
| Korean || $0412&lt;br /&gt;
|-&lt;br /&gt;
| Korean (Johab) || $0812&lt;br /&gt;
|-&lt;br /&gt;
| Latvian || $0426&lt;br /&gt;
|-&lt;br /&gt;
| Lithuanian || $0427&lt;br /&gt;
|-&lt;br /&gt;
| Malay (Malaysian) || $043e&lt;br /&gt;
|-&lt;br /&gt;
| Malay (Brunei) || $083e&lt;br /&gt;
|-&lt;br /&gt;
| Norwegian (Bokmal) || $0414&lt;br /&gt;
|-&lt;br /&gt;
| Norwegian (Nynorsk) || $0814&lt;br /&gt;
|-&lt;br /&gt;
| Polish || $0415&lt;br /&gt;
|-&lt;br /&gt;
| Portuguese (Brazil) || $0416&lt;br /&gt;
|-&lt;br /&gt;
| Portuguese (Portugal) || $0816&lt;br /&gt;
|-&lt;br /&gt;
| Romanian || $0418&lt;br /&gt;
|-&lt;br /&gt;
| Russian || $0419&lt;br /&gt;
|-&lt;br /&gt;
| Serbian (Cyrillic) || $0c1a&lt;br /&gt;
|-&lt;br /&gt;
| Serbian (Latin) || $081a&lt;br /&gt;
|-&lt;br /&gt;
| Slovak || $041b&lt;br /&gt;
|-&lt;br /&gt;
| Slovenian || $0424&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Argentina) || $2c0a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Bolivia) || $400a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Chile) || $340a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Colombia) || $240a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Costa Rica) || $140a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Dominican Republic) || $1c0a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Ecuador) || $300a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (El Salvador) || $440a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Guatemala) || $100a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Honduras) || $480a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Mexican) || $080a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Modern Sort) || $0c0a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Nicaragua) || $4c0a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Panama) || $180a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Paraguay) || $3c0a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Peru) || $280a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Puerto Rico) || $500a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Traditional Sort) || $040a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Uruguay) || $380a&lt;br /&gt;
|-&lt;br /&gt;
| Spanish (Venezuela) || $200a&lt;br /&gt;
|-&lt;br /&gt;
| Swahili || $0441&lt;br /&gt;
|-&lt;br /&gt;
| Swedish || $041d&lt;br /&gt;
|-&lt;br /&gt;
| Swedish (Finland) || $081d&lt;br /&gt;
|-&lt;br /&gt;
| Thai || $041e&lt;br /&gt;
|-&lt;br /&gt;
| Turkish || $041f&lt;br /&gt;
|-&lt;br /&gt;
| Ukrainian || $0422&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Several CD/DVD methods and properties return locale identifier (LCID) values that identify which languages are available on the soundtracks or subtitles. To make use of this information, your application will need to extract the primary language ID from the returned LCID. To do this,&lt;br /&gt;
perform a bitwise AND operation on the value of iLCID and $3FF. (The primary language ID is contained in the least significant 10 bits of the LCID.) The following code snippet shows how to do this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;highlight-delphi&amp;gt;iPrimaryLang = iLCID &amp;amp; $3FF;&amp;lt;/highlight-delphi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To obtain an human-readable string from the primary language ID, call GetLangFromLangID as shown in this example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;highlight-delphi&amp;gt;sLanguage = DVD.GetLangFromLangID(iPrimaryLang);&amp;lt;/highlight-delphi&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See the Microsoftï¿½ Platform SDK for more information on LCIDs and language identifiers. The following list shows the primary language IDs for the LCIDs in the table above.&lt;br /&gt;
 &lt;br /&gt;
Some Valid Primary Language IDs:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Afrikaans || $36&lt;br /&gt;
|-&lt;br /&gt;
| Albanian || $1c&lt;br /&gt;
|-&lt;br /&gt;
| Arabic || $01&lt;br /&gt;
|-&lt;br /&gt;
| Basque || $2d&lt;br /&gt;
|-&lt;br /&gt;
| Belarusian || $23&lt;br /&gt;
|-&lt;br /&gt;
| Bulgarian || $02&lt;br /&gt;
|-&lt;br /&gt;
| Catalan || $03&lt;br /&gt;
|-&lt;br /&gt;
| Chinese || $04&lt;br /&gt;
|-&lt;br /&gt;
| Croatian || $1a&lt;br /&gt;
|-&lt;br /&gt;
| Czech || $05&lt;br /&gt;
|-&lt;br /&gt;
| Danish || $06&lt;br /&gt;
|-&lt;br /&gt;
| Dutch || $13&lt;br /&gt;
|-&lt;br /&gt;
| English || $09&lt;br /&gt;
|-&lt;br /&gt;
| Estonian || $25&lt;br /&gt;
|-&lt;br /&gt;
| Faeroese || $38&lt;br /&gt;
|-&lt;br /&gt;
| Farsi || $29&lt;br /&gt;
|-&lt;br /&gt;
| Finnish || $0b&lt;br /&gt;
|-&lt;br /&gt;
| French || $0c&lt;br /&gt;
|-&lt;br /&gt;
| German || $07&lt;br /&gt;
|-&lt;br /&gt;
| Greek || $08&lt;br /&gt;
|-&lt;br /&gt;
| Hebrew || $0d&lt;br /&gt;
|-&lt;br /&gt;
| Hungarian || $0e&lt;br /&gt;
|-&lt;br /&gt;
| Icelandic || $0f&lt;br /&gt;
|-&lt;br /&gt;
| Indonesian || $21&lt;br /&gt;
|-&lt;br /&gt;
| Italian || $10&lt;br /&gt;
|-&lt;br /&gt;
| Japanese || $11&lt;br /&gt;
|-&lt;br /&gt;
| Korean || $12&lt;br /&gt;
|-&lt;br /&gt;
| Latvian || $26&lt;br /&gt;
|-&lt;br /&gt;
| Lithuanian || $27&lt;br /&gt;
|-&lt;br /&gt;
| Malay || $3e&lt;br /&gt;
|-&lt;br /&gt;
| Norwegian || $14&lt;br /&gt;
|-&lt;br /&gt;
| Polish || $15&lt;br /&gt;
|-&lt;br /&gt;
| Portuguese || $16&lt;br /&gt;
|-&lt;br /&gt;
| Romanian || $18&lt;br /&gt;
|-&lt;br /&gt;
| Russian || $19&lt;br /&gt;
|-&lt;br /&gt;
| Serbian || $1a&lt;br /&gt;
|-&lt;br /&gt;
| Slovak || $1b&lt;br /&gt;
|-&lt;br /&gt;
| Slovenian || $24&lt;br /&gt;
|-&lt;br /&gt;
| Spanish || $0a&lt;br /&gt;
|-&lt;br /&gt;
| Swahili || $41&lt;br /&gt;
|-&lt;br /&gt;
| Swedish || $1d&lt;br /&gt;
|-&lt;br /&gt;
| Thai || $1e&lt;br /&gt;
|-&lt;br /&gt;
| Turkish || $1f&lt;br /&gt;
|-&lt;br /&gt;
| Ukrainian || $22&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
== Source ==&lt;br /&gt;
&lt;br /&gt;
Freeware, can be used anywhere by anyone, or whatever license Nullsoft has bound their wrapper with, most of the rest came from the top of my head. See the source for possible more information.&lt;br /&gt;
&lt;br /&gt;
Built with Borland Delphi v7.1.1&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.borland.com/delphi/&lt;br /&gt;
&lt;br /&gt;
Success with building customer friendly installations!&lt;br /&gt;
&lt;br /&gt;
E. Onad&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=AbiWord&amp;diff=18073</id>
		<title>AbiWord</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=AbiWord&amp;diff=18073"/>
		<updated>2010-02-01T02:57:54Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Links */ updated link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
See [http://svn.abisource.com/abiword-msvc2008/trunk/Setup/NSISv2/ AbiWord.nsi] at [http://www.abisource.com abisource.com] for the installer used by AbiWord (version 2.x) when using the NSIS 2 branch.  It is still a work in progress so I have only posted the link instead of the actual source.  The installer requires NSIS version 2.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
While I do not claim it is the best example, it does demonstrate the use of the MODERN UI using multilingual capabilities (NOTE: some installer specific translations do not have corresponding NSIS translations), command line parsing support to effect behaviour, several sections and subsections (including initial add/modify/remove support), macros, and the use of several plugins including [[NSISdl]] and [[UnTGZ]]. I have tried to keep each snippet (most from or based on work in these archive pages) within its own file for easier reuse.&lt;br /&gt;
&lt;br /&gt;
The older AbiWord installer based on last NSIS v1 release is also available (AbiWord.nsi one directory down), but it is no longer maintained.&lt;br /&gt;
&lt;br /&gt;
[[Category:Real World Installers]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=Linker_plug-in&amp;diff=18072</id>
		<title>Linker plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=Linker_plug-in&amp;diff=18072"/>
		<updated>2010-02-01T00:32:58Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Download */ add Unicode NSIS version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ {{PageAuthor|kichik}}&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;attach&amp;gt;Linker.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.fdos.org/win32/nsis/plugins/others/Linker.1.1.zip Linker.1.1.zip] (25KB) NSIS &amp;amp; Unicode NSIS versions&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
This plug-in transforms a label into a clickable link. It can be used to add links to non-custom pages, such as the license and the components page. Usage is very simple and requires just a HWND.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;FindWindow $0 &amp;quot;#32770&amp;quot; &amp;quot;&amp;quot; $HWNDPARENT&lt;br /&gt;
GetDlgItem $0 $0 1006&lt;br /&gt;
Linker::link /NOUNLOAD $0 &amp;quot;http://www.google.com/&amp;quot;&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
&lt;br /&gt;
The code responsible for the actual linking was taken from [http://catch22.net/tuts/urlctrl.asp catch22] and was created by James Brown &amp;amp; Ralph Bittmann. This plug-in is nothing but a wrapper for their code.&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=CRCCheck_plug-in&amp;diff=18066</id>
		<title>CRCCheck plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=CRCCheck_plug-in&amp;diff=18066"/>
		<updated>2010-01-28T11:49:28Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Links */  Unicode NSIS compatible version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|SpiderVenom}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&amp;lt;attach&amp;gt;CRCCheck.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.fdos.org/win32/nsis/plugins/others/CRCCheck.1.4.zip CRCCheck.1.4.zip] NSIS &amp;amp; Unicode NSIS versions&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.3.&lt;br /&gt;
&lt;br /&gt;
A small (3KB) plugin that generates a standard ZIP CRC32 for any file you pass it:&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
CRCCheck::GenCRC &amp;quot;$SYSDIR\explorer.exe&amp;quot;&lt;br /&gt;
Pop $R1&lt;br /&gt;
MessageBox MB_OK $R1&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;This gives you a CRC for the windows explorer executable. If a CRC can not be generated, you get &amp;quot;0&amp;quot; in $R1. Specific error reporting will come soon.&lt;br /&gt;
&lt;br /&gt;
Written in VC++ 7, it reuses the CRC code from VPatch, with a few tweaks.&lt;br /&gt;
&lt;br /&gt;
Just extract CRCCheck.zip to your NSIS dir (with folder names), and everything will go in the right place. Check \Contrib\CRCCheck\Readme.txt for more info.&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=MD5_plugin&amp;diff=18047</id>
		<title>MD5 plugin</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=MD5_plugin&amp;diff=18047"/>
		<updated>2010-01-23T20:42:40Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: Update to support Unicode NSIS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Md5dll.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/md5dll/md5dll.0.5.zip Md5dll.0.5.zip] (21 KB) (Mirror #1)&lt;br /&gt;
&lt;br /&gt;
[http://www.fdos.org/win32/nsis/plugins/md5dll/ Older Versions of MD5 plugin]&lt;br /&gt;
&lt;br /&gt;
[http://forums.winamp.com/showthread.php?threadid=117789 Original NSIS Forums Thread (for older versions)]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
Generates a [[wikipedia:MD5|md5]] value from either a string or contents of specified file.&lt;br /&gt;
&lt;br /&gt;
Original:  MD5 Plugin DLL by Matthew &amp;quot;IGx89&amp;quot; Lieder, derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm&lt;br /&gt;
&lt;br /&gt;
== Sample Usage ==&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
OutFile &amp;quot;md5test.exe&amp;quot;&lt;br /&gt;
Section &amp;quot;&amp;quot;&lt;br /&gt;
  #generate MD5sum of string&lt;br /&gt;
  md5dll::GetMD5String &amp;quot;md5me&amp;quot;&lt;br /&gt;
  Pop $0&lt;br /&gt;
  DetailPrint &amp;quot;md5: [$0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # generate MD5sum of file&lt;br /&gt;
  md5dll::GetMD5File &amp;quot;${NSISDIR}\makensis.exe&amp;quot;&lt;br /&gt;
  Pop $0&lt;br /&gt;
  DetailPrint &amp;quot;md5: [$0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  #generate random MD5sum&lt;br /&gt;
  md5dll::GetMD5Random&lt;br /&gt;
  Pop $0&lt;br /&gt;
  DetailPrint &amp;quot;md5: [$0]&amp;quot;&lt;br /&gt;
SectionEnd&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Versions History ==&lt;br /&gt;
;0.5&lt;br /&gt;
:KJD (2010):&lt;br /&gt;
:*Unicode NSIS support: functionally identical to 0.4&lt;br /&gt;
:*Warning: passed strings and filenames must still be convertable to current code page (ASCII).&lt;br /&gt;
;0.4&lt;br /&gt;
:KJD (2005):&lt;br /&gt;
:*Added dual name to exports for backwards compatibility.&lt;br /&gt;
;0.3&lt;br /&gt;
:Shengalts Aleksander aka Instructor (2005):&lt;br /&gt;
:*New command: &amp;quot;GetMD5Random&amp;quot;.&lt;br /&gt;
:*Changed names: &amp;quot;GetFileMD5&amp;quot; -&amp;gt; &amp;quot;GetMD5File&amp;quot;, &amp;quot;GetMD5&amp;quot; -&amp;gt; &amp;quot;GetMD5String&amp;quot;.&lt;br /&gt;
:*Fixed: string length error.&lt;br /&gt;
;0.2&lt;br /&gt;
:Davy Durham (2004):&lt;br /&gt;
:*MD5.cpp fix (correct for loop used to replace memset, exceeded bounds).&lt;br /&gt;
;0.1&lt;br /&gt;
:KJD (2004):&lt;br /&gt;
:*Modified to reduce size and use exdll.h (reduced to about 6KB uncompressed, by removing CRTL dependency).&lt;br /&gt;
;Original&lt;br /&gt;
:Matthew &amp;quot;IGx89&amp;quot; Lieder:&lt;br /&gt;
:*Original plugin Author.&lt;br /&gt;
:Sunjammer (12th May 2002):&lt;br /&gt;
:*Original usage notes and example script.&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=File:Md5dll.zip&amp;diff=18046</id>
		<title>File:Md5dll.zip</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=File:Md5dll.zip&amp;diff=18046"/>
		<updated>2010-01-23T20:36:08Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: uploaded a new version of &amp;quot;File:Md5dll.zip&amp;quot;:&amp;amp;#32;(version 0.5)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=18021</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=18021"/>
		<updated>2010-01-16T21:24:09Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: update to 1.0.18&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.18.zip Untgz.1.0.18.zip] (261 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Older Untgz plugin with bz2 support, requires MSVCRT.DLL&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.10.zip Untgz.1.0.10.zip] (158 KB) Older Untgz plugin with only gzip &amp;amp; LZMA support&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Older releases may be found at http://www.fdos.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.18&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;(Basic support for longer than 100 char filenames added to 1.0.16, but does not yet support unicode or all methods of using long names.)&#039;&#039;  Limited support for hard links.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), lzma compression (*.tlz / *.tar.lzma), and bzip2 compression (*.tbz / *.tar.bz2).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For problems, corrections, etc. send email to PerditionC __at gmail.com (or jeremyd --at-- fdos.org)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-h&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -h is specified will return error if fails to create hard link&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-h&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -h is specified will return error if fails to create hard link&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j and -h are specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used prior to tar file name (tarball.tgz), however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;The -z&amp;lt;type&amp;gt; option may be specified to explicitly indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib,&lt;br /&gt;
: -zgz    alias for -z&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression&lt;br /&gt;
: -zauto  determines type based on content &amp;amp; extension this is the default if -z&amp;lt;type&amp;gt; option is omitted  &#039;&#039;&#039;NOTE:&#039;&#039;&#039; prior to version 1.0.15 -z was the default so .tlz &amp;amp; .tbz required -zlzma &amp;amp; -zbz2 respectively if those compression methods used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicated directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths, hard links, long names) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Version 1.0.15 automatically determine compression type if not explicity indicated.&lt;br /&gt;
&lt;br /&gt;
Version 1.0.16 is an update to 1.0.15 that supports the prefix in the tar header for file names longer than 100 characters.  Compiled with MSVC6.&lt;br /&gt;
&lt;br /&gt;
Version 1.0.17 adds support for Unicode NSIS; does NOT yet support Unicode file names.  No functional changes from 1.0.16 for standard NSIS.&lt;br /&gt;
&lt;br /&gt;
Version 1.0.18 has initial support for hard links.  Will issue a warning if a hard link is found and unable to create.  The option -h may be used to force failure if unable to create a hard link.  Only works on NT5 or higher on NTFS; will fail to create hard link on all earlier versions of Windows, if file system is FAT or non NTFS, or if accessing NTFS file system via a share (mapped drive).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Compression]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=18019</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=18019"/>
		<updated>2010-01-15T16:54:49Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Links */ updated to 1.0.17 - supports Unicode NSIS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.17.zip Untgz.1.0.17.zip] (259 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Older Untgz plugin with bz2 support, requires MSVCRT.DLL&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.10.zip Untgz.1.0.10.zip] (158 KB) Older Untgz plugin with only gzip &amp;amp; LZMA support&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Older releases may be found at http://www.fdos.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.17&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;(Basic support for longer than 100 char filenames added to 1.0.16, but does not yet support unicode or all methods of using long names.)&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), lzma compression (*.tlz / *.tar.lzma), and bzip2 compression (*.tbz / *.tar.bz2).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For problems, corrections, etc. send email to PerditionC __at gmail.com (or jeremyd --at-- fdos.org)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used prior to tar file name (tarball.tgz), however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;The -z&amp;lt;type&amp;gt; option may be specified to explicitly indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib,&lt;br /&gt;
: -zgz    alias for -z&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression&lt;br /&gt;
: -zauto  determines type based on content &amp;amp; extension this is the default if -z&amp;lt;type&amp;gt; option is omitted  &#039;&#039;&#039;NOTE:&#039;&#039;&#039; prior to version 1.0.15 -z was the default so .tlz &amp;amp; .tbz required -zlzma &amp;amp; -zbz2 respectively if those compression methods used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
Version 1.0.12 finally implements -k keep option, also adds -u update option (same as keep, but will overwrite a file if older than one in archive), and now aborts extraction with error when it fails to extract a file (such as file readonly or open -- previously is just silently skipped the file and returned success).&lt;br /&gt;
&lt;br /&gt;
Version 1.0.13 integrated BZip2 (v1.0.3) support using miniclib (this version now supports none, gzip, bzip2, or lzma compressed TAR files).  Updated to lzma sdk 4.43.  (Note: missing call to FindClose(h); when -u is used and file not overwritten.)&lt;br /&gt;
&lt;br /&gt;
Version 1.0.14 fix minor resource leak, missing FindClose call if -u and file skipped.  Releases now built with VC8 (MS VC Express 2005 + MS Windows Platform SDK) (prior releases built with MSVC6).&lt;br /&gt;
&lt;br /&gt;
Version 1.0.15 automatically determine compression type if not explicity indicated.&lt;br /&gt;
&lt;br /&gt;
Version 1.0.16 is an update to 1.0.15 that supports the prefix in the tar header for file names longer than 100 characters.  Compiled with MSVC6.&lt;br /&gt;
&lt;br /&gt;
Version 1.0.17 adds support for Unicode NSIS; does NOT yet support Unicode file names.  No functional changes from 1.0.16 for standard NSIS.&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Compression]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=File:Untgz.zip&amp;diff=18018</id>
		<title>File:Untgz.zip</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=File:Untgz.zip&amp;diff=18018"/>
		<updated>2010-01-15T16:51:48Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: uploaded a new version of &amp;quot;File:Untgz.zip&amp;quot;:&amp;amp;#32;Update to 1.0.17.  Add support for Unicode NSIS.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=18017</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=18017"/>
		<updated>2010-01-15T16:42:07Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.17.zip Untgz.1.0.17.zip] (260 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Older Untgz plugin with bz2 support, requires MSVCRT.DLL&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.10.zip Untgz.1.0.10.zip] (158 KB) Older Untgz plugin with only gzip &amp;amp; LZMA support&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Older releases may be found at http://www.fdos.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.17&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;(Basic support for longer than 100 char filenames added to 1.0.16, but does not yet support unicode or all methods of using long names.)&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), lzma compression (*.tlz / *.tar.lzma), and bzip2 compression (*.tbz / *.tar.bz2).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For problems, corrections, etc. send email to PerditionC __at gmail.com (or jeremyd --at-- fdos.org)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used prior to tar file name (tarball.tgz), however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;The -z&amp;lt;type&amp;gt; option may be specified to explicitly indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib,&lt;br /&gt;
: -zgz    alias for -z&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression&lt;br /&gt;
: -zauto  determines type based on content &amp;amp; extension this is the default if -z&amp;lt;type&amp;gt; option is omitted  &#039;&#039;&#039;NOTE:&#039;&#039;&#039; prior to version 1.0.15 -z was the default so .tlz &amp;amp; .tbz required -zlzma &amp;amp; -zbz2 respectively if those compression methods used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
Version 1.0.12 finally implements -k keep option, also adds -u update option (same as keep, but will overwrite a file if older than one in archive), and now aborts extraction with error when it fails to extract a file (such as file readonly or open -- previously is just silently skipped the file and returned success).&lt;br /&gt;
&lt;br /&gt;
Version 1.0.13 integrated BZip2 (v1.0.3) support using miniclib (this version now supports none, gzip, bzip2, or lzma compressed TAR files).  Updated to lzma sdk 4.43.  (Note: missing call to FindClose(h); when -u is used and file not overwritten.)&lt;br /&gt;
&lt;br /&gt;
Version 1.0.14 fix minor resource leak, missing FindClose call if -u and file skipped.  Releases now built with VC8 (MS VC Express 2005 + MS Windows Platform SDK) (prior releases built with MSVC6).&lt;br /&gt;
&lt;br /&gt;
Version 1.0.15 automatically determine compression type if not explicity indicated.&lt;br /&gt;
&lt;br /&gt;
Version 1.0.16 is an update to 1.0.15 that supports the prefix in the tar header for file names longer than 100 characters.  Compiled with MSVC6.&lt;br /&gt;
&lt;br /&gt;
Version 1.0.17 adds support for Unicode NSIS; does NOT yet support Unicode file names.  No functional changes from 1.0.16 for standard NSIS.&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Compression]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=18016</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=18016"/>
		<updated>2010-01-15T16:36:20Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.17.zip Untgz.1.0.17.zip] (260 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Older Untgz plugin with bz2 support, requires MSVCRT.DLL&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.10.zip Untgz.1.0.10.zip] (158 KB) Older Untgz plugin with only gzip &amp;amp; LZMA support&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Older releases may be found at http://www.fdos.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.17&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;(Basic support for longer than 100 char filenames added to 1.0.16, but does not yet support unicode or all methods of using long names.)&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), lzma compression (*.tlz / *.tar.lzma), and bzip2 compression (*.tbz / *.tar.bz2).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For problems, corrections, etc. send email to PerditionC __at gmail.com (or jeremyd --at-- fdos.org)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used prior to tar file name (tarball.tgz), however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;The -z&amp;lt;type&amp;gt; option may be specified to explicitly indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib,&lt;br /&gt;
: -zgz    alias for -z&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression&lt;br /&gt;
: -zauto  determines type based on content &amp;amp; extension this is the default if -z&amp;lt;type&amp;gt; option is omitted  &#039;&#039;&#039;NOTE:&#039;&#039;&#039; prior to version 1.0.15 -z was the default so .tlz &amp;amp; .tbz required -zlzma &amp;amp; -zbz2 respectively if those compression methods used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
Version 1.0.12 finally implements -k keep option, also adds -u update option (same as keep, but will overwrite a file if older than one in archive), and now aborts extraction with error when it fails to extract a file (such as file readonly or open -- previously is just silently skipped the file and returned success).&lt;br /&gt;
&lt;br /&gt;
Version 1.0.13 integrated BZip2 (v1.0.3) support using miniclib (this version now supports none, gzip, bzip2, or lzma compressed TAR files).  Updated to lzma sdk 4.43.  (Note: missing call to FindClose(h); when -u is used and file not overwritten.)&lt;br /&gt;
&lt;br /&gt;
Version 1.0.14 fix minor resource leak, missing FindClose call if -u and file skipped.  Releases now built with VC8 (MS VC Express 2005 + MS Windows Platform SDK) (prior releases built with MSVC6).&lt;br /&gt;
&lt;br /&gt;
Version 1.0.15 automatically determine compression type if not explicity indicated.&lt;br /&gt;
&lt;br /&gt;
Version 1.0.16 is an update to 1.0.15 that supports the prefix in the tar header for file names longer than 100 characters.  Compiled with MSVC6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Compression]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=18015</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=18015"/>
		<updated>2010-01-15T16:35:07Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.17.zip Untgz.1.0.17.zip] (260 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Older Untgz plugin with bz2 support, requires MSVCRT.DLL&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.10.zip Untgz.1.0.10.zip] (158 KB) Older Untgz plugin with only gzip &amp;amp; LZMA support&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Older releases may be found at http://www.fdos.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.15&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;(Basic support for longer than 100 char filenames added to 1.0.16, but does not yet support unicode or all methods of using long names.)&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), lzma compression (*.tlz / *.tar.lzma), and bzip2 compression (*.tbz / *.tar.bz2).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For problems, corrections, etc. send email to PerditionC __at gmail.com (or jeremyd --at-- fdos.org)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used prior to tar file name (tarball.tgz), however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;The -z&amp;lt;type&amp;gt; option may be specified to explicitly indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib,&lt;br /&gt;
: -zgz    alias for -z&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression&lt;br /&gt;
: -zauto  determines type based on content &amp;amp; extension this is the default if -z&amp;lt;type&amp;gt; option is omitted  &#039;&#039;&#039;NOTE:&#039;&#039;&#039; prior to version 1.0.15 -z was the default so .tlz &amp;amp; .tbz required -zlzma &amp;amp; -zbz2 respectively if those compression methods used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
Version 1.0.12 finally implements -k keep option, also adds -u update option (same as keep, but will overwrite a file if older than one in archive), and now aborts extraction with error when it fails to extract a file (such as file readonly or open -- previously is just silently skipped the file and returned success).&lt;br /&gt;
&lt;br /&gt;
Version 1.0.13 integrated BZip2 (v1.0.3) support using miniclib (this version now supports none, gzip, bzip2, or lzma compressed TAR files).  Updated to lzma sdk 4.43.  (Note: missing call to FindClose(h); when -u is used and file not overwritten.)&lt;br /&gt;
&lt;br /&gt;
Version 1.0.14 fix minor resource leak, missing FindClose call if -u and file skipped.  Releases now built with VC8 (MS VC Express 2005 + MS Windows Platform SDK) (prior releases built with MSVC6).&lt;br /&gt;
&lt;br /&gt;
Version 1.0.15 automatically determine compression type if not explicity indicated.&lt;br /&gt;
&lt;br /&gt;
Version 1.0.16 is an update to 1.0.15 that supports the prefix in the tar header for file names longer than 100 characters.  Compiled with MSVC6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;br /&gt;
[[Category:Compression]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=Talk:UnTGZ_plug-in&amp;diff=14121</id>
		<title>Talk:UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=Talk:UnTGZ_plug-in&amp;diff=14121"/>
		<updated>2007-11-10T17:52:16Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;My antivirus, Kaspersky thinks this is a trojan.  Anyone else getting issues like this?&lt;br /&gt;
&lt;br /&gt;
It should be a false positive; I&#039;m running Norton Antivirus and have a firewall + try to keep Windows patched, so my system is hopefully clean -- the full source is there if you want to compile yourself and verify [the free MS compiler toolkit should work to build it].  Which version?  Jeremy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
darklogic mirrors appear to be down `[[User:71.163.165.64|71.163.165.64]] 10:11, 12 May 2007 (PDT)&lt;br /&gt;
Domain name registration lapsed, now at fdos.org&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14120</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14120"/>
		<updated>2007-11-10T17:50:15Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.15.zip Untgz.1.0.15.zip] (225 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Older Untgz plugin with bz2 support, requires MSVCRT.DLL&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.10.zip Untgz.1.0.10.zip] (158 KB) Older Untgz plugin with only gzip &amp;amp; LZMA support&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Older releases may be found at http://www.fdos.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.15&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), lzma compression (*.tlz / *.tar.lzma), and bzip2 compression (*.tbz / *.tar.bz2).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For problems, corrections, etc. send email to PerditionC __at gmail.com (or jeremyd --at-- fdos.org)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used prior to tar file name (tarball.tgz), however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;The -z&amp;lt;type&amp;gt; option may be specified to explicitly indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib,&lt;br /&gt;
: -zgz    alias for -z&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression&lt;br /&gt;
: -zauto  determines type based on content &amp;amp; extension this is the default if -z&amp;lt;type&amp;gt; option is omitted  &#039;&#039;&#039;NOTE:&#039;&#039;&#039; prior to version 1.0.15 -z was the default so .tlz &amp;amp; .tbz required -zlzma &amp;amp; -zbz2 respectively if those compression methods used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
Version 1.0.12 finally implements -k keep option, also adds -u update option (same as keep, but will overwrite a file if older than one in archive), and now aborts extraction with error when it fails to extract a file (such as file readonly or open -- previously is just silently skipped the file and returned success).&lt;br /&gt;
&lt;br /&gt;
Version 1.0.13 integrated BZip2 (v1.0.3) support using miniclib (this version now supports none, gzip, bzip2, or lzma compressed TAR files).  Updated to lzma sdk 4.43.  (Note: missing call to FindClose(h); when -u is used and file not overwritten.)&lt;br /&gt;
&lt;br /&gt;
Version 1.0.14 fix minor resource leak, missing FindClose call if -u and file skipped.  Releases now built with VC8 (MS VC Express 2005 + MS Windows Platform SDK) (prior releases built with MSVC6).&lt;br /&gt;
&lt;br /&gt;
Version 1.0.15 automatically determine compression type if not explicity indicated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14119</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14119"/>
		<updated>2007-11-10T17:44:47Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Description */  ver 1.0.15&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.15.zip Untgz.1.0.15.zip] (225 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Older Untgz plugin with bz2 support, requires MSVCRT.DLL&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.10.zip Untgz.1.0.10.zip] (158 KB) Older Untgz plugin with only gzip &amp;amp; LZMA support&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Older releases may be found at http://www.fdos.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.15&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), lzma compression (*.tlz / *.tar.lzma), and bzip2 compression (*.tbz / *.tar.bz2).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For problems, corrections, etc. send email to PerditionC __at gmail.com (or jeremyd --at-- fdos.org)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used prior to tar file name (tarball.tgz), however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;The -z&amp;lt;type&amp;gt; option may be specified to explicitly indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib,&lt;br /&gt;
: -zgz    alias for -z&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression&lt;br /&gt;
: -zauto  determines type based on content &amp;amp; extension this is the default if -z&amp;lt;type&amp;gt; option is omitted  &#039;&#039;&#039;NOTE:&#039;&#039;&#039; prior to version 1.0.15 -z was the default so .tlz &amp;amp; .tbz required -zlzma &amp;amp; -zbz2 respectively if those compression methods used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
Version 1.0.12 finally implements -k keep option, also adds -u update option (same as keep, but will overwrite a file if older than one in archive), and now aborts extraction with error when it fails to extract a file (such as file readonly or open -- previously is just silently skipped the file and returned success).&lt;br /&gt;
&lt;br /&gt;
Version 1.0.13 integrated BZip2 (v1.0.3) support using miniclib (this version now supports none, gzip, bzip2, or lzma compressed TAR files).  Updated to lzma sdk 4.43.  (Note: missing call to FindClose(h); when -u is used and file not overwritten.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14118</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14118"/>
		<updated>2007-11-10T17:44:09Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Usage */  update to reflect -z&amp;lt;type&amp;gt; option no longer required&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.15.zip Untgz.1.0.15.zip] (225 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Older Untgz plugin with bz2 support, requires MSVCRT.DLL&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.10.zip Untgz.1.0.10.zip] (158 KB) Older Untgz plugin with only gzip &amp;amp; LZMA support&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Older releases may be found at http://www.fdos.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.13&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), lzma compression (*.tlz / *.tar.lzma), and bzip2 compression (*.tbz / *.tar.bz2).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For problems, corrections, etc. send email to PerditionC __at gmail.com (or jeremyd --at-- fdos.org)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used prior to tar file name (tarball.tgz), however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;The -z&amp;lt;type&amp;gt; option may be specified to explicitly indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib,&lt;br /&gt;
: -zgz    alias for -z&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression&lt;br /&gt;
: -zauto  determines type based on content &amp;amp; extension this is the default if -z&amp;lt;type&amp;gt; option is omitted  &#039;&#039;&#039;NOTE:&#039;&#039;&#039; prior to version 1.0.15 -z was the default so .tlz &amp;amp; .tbz required -zlzma &amp;amp; -zbz2 respectively if those compression methods used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
Version 1.0.12 finally implements -k keep option, also adds -u update option (same as keep, but will overwrite a file if older than one in archive), and now aborts extraction with error when it fails to extract a file (such as file readonly or open -- previously is just silently skipped the file and returned success).&lt;br /&gt;
&lt;br /&gt;
Version 1.0.13 integrated BZip2 (v1.0.3) support using miniclib (this version now supports none, gzip, bzip2, or lzma compressed TAR files).  Updated to lzma sdk 4.43.  (Note: missing call to FindClose(h); when -u is used and file not overwritten.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14117</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14117"/>
		<updated>2007-11-10T16:34:49Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Links */  update to 1.0.15 version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.15.zip Untgz.1.0.15.zip] (225 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Older Untgz plugin with bz2 support, requires MSVCRT.DLL&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.10.zip Untgz.1.0.10.zip] (158 KB) Older Untgz plugin with only gzip &amp;amp; LZMA support&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Older releases may be found at http://www.fdos.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.13&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), lzma compression (*.tlz / *.tar.lzma), and bzip2 compression (*.tbz / *.tar.bz2).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For problems, corrections, etc. send email to PerditionC __at gmail.com (or jeremyd --at-- fdos.org)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used prior to tar file name (tarball.tgz), however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;If the tarball uses a compression other than gz, then the &#039;&#039;&#039;-z&#039;&#039;&amp;lt;type&amp;gt;&#039;&#039;&#039;&#039;&#039; option must be specified to indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib, this is the default if -z&amp;lt;type&amp;gt; option is omitted&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
Version 1.0.12 finally implements -k keep option, also adds -u update option (same as keep, but will overwrite a file if older than one in archive), and now aborts extraction with error when it fails to extract a file (such as file readonly or open -- previously is just silently skipped the file and returned success).&lt;br /&gt;
&lt;br /&gt;
Version 1.0.13 integrated BZip2 (v1.0.3) support using miniclib (this version now supports none, gzip, bzip2, or lzma compressed TAR files).  Updated to lzma sdk 4.43.  (Note: missing call to FindClose(h); when -u is used and file not overwritten.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=MD5_plugin&amp;diff=14059</id>
		<title>MD5 plugin</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=MD5_plugin&amp;diff=14059"/>
		<updated>2007-11-03T22:56:43Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Md5dll.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/md5dll/md5dll.0.4.zip Md5dll.0.4.zip] (13 KB) (Mirror #1)&lt;br /&gt;
&lt;br /&gt;
[http://www.fdos.org/win32/nsis/plugins/md5dll/ Older Versions of MD5 plugin]&lt;br /&gt;
&lt;br /&gt;
[http://forums.winamp.com/showthread.php?threadid=117789 Original NSIS Forums Thread (for older versions)]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
Generates a [[wikipedia:MD5|md5]] value from either a string or contents of specified file.&lt;br /&gt;
&lt;br /&gt;
Original:  MD5 Plugin DLL by Matthew &amp;quot;IGx89&amp;quot; Lieder, derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm&lt;br /&gt;
&lt;br /&gt;
== Sample Usage ==&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
OutFile &amp;quot;md5test.exe&amp;quot;&lt;br /&gt;
Section &amp;quot;&amp;quot;&lt;br /&gt;
  #generate MD5sum of string&lt;br /&gt;
  md5dll::GetMD5String &amp;quot;md5me&amp;quot;&lt;br /&gt;
  Pop $0&lt;br /&gt;
  DetailPrint &amp;quot;md5: [$0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # generate MD5sum of file&lt;br /&gt;
  md5dll::GetMD5File &amp;quot;${NSISDIR}\makensis.exe&amp;quot;&lt;br /&gt;
  Pop $0&lt;br /&gt;
  DetailPrint &amp;quot;md5: [$0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  #generate random MD5sum&lt;br /&gt;
  md5dll::GetMD5Random&lt;br /&gt;
  Pop $0&lt;br /&gt;
  DetailPrint &amp;quot;md5: [$0]&amp;quot;&lt;br /&gt;
SectionEnd&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Versions History ==&lt;br /&gt;
;0.4&lt;br /&gt;
:KJD (2005):&lt;br /&gt;
:*Added dual name to exports for backwards compatibility.&lt;br /&gt;
;0.3&lt;br /&gt;
:Shengalts Aleksander aka Instructor (2005):&lt;br /&gt;
:*New command: &amp;quot;GetMD5Random&amp;quot;.&lt;br /&gt;
:*Changed names: &amp;quot;GetFileMD5&amp;quot; -&amp;gt; &amp;quot;GetMD5File&amp;quot;, &amp;quot;GetMD5&amp;quot; -&amp;gt; &amp;quot;GetMD5String&amp;quot;.&lt;br /&gt;
:*Fixed: string length error.&lt;br /&gt;
;0.2&lt;br /&gt;
:Davy Durham (2004):&lt;br /&gt;
:*MD5.cpp fix (correct for loop used to replace memset, exceeded bounds).&lt;br /&gt;
;0.1&lt;br /&gt;
:KJD (2004):&lt;br /&gt;
:*Modified to reduce size and use exdll.h (reduced to about 6KB uncompressed, by removing CRTL dependency).&lt;br /&gt;
;Original&lt;br /&gt;
:Matthew &amp;quot;IGx89&amp;quot; Lieder:&lt;br /&gt;
:*Original plugin Author.&lt;br /&gt;
:Sunjammer (12th May 2002):&lt;br /&gt;
:*Original usage notes and example script.&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14055</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14055"/>
		<updated>2007-11-03T20:01:23Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Links */  reflect proper size, maybe refreshed attached info?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.13.zip Untgz.1.0.13.zip] (251 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Older Untgz plugin with bz2 support, requires MSVCRT.DLL&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.10.zip Untgz.1.0.10.zip] (158 KB) Older Untgz plugin with only gzip &amp;amp; LZMA support&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Older releases may be found at http://www.fdos.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.13&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), lzma compression (*.tlz / *.tar.lzma), and bzip2 compression (*.tbz / *.tar.bz2).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For problems, corrections, etc. send email to PerditionC __at gmail.com (or jeremyd --at-- fdos.org)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used prior to tar file name (tarball.tgz), however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;If the tarball uses a compression other than gz, then the &#039;&#039;&#039;-z&#039;&#039;&amp;lt;type&amp;gt;&#039;&#039;&#039;&#039;&#039; option must be specified to indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib, this is the default if -z&amp;lt;type&amp;gt; option is omitted&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
Version 1.0.12 finally implements -k keep option, also adds -u update option (same as keep, but will overwrite a file if older than one in archive), and now aborts extraction with error when it fails to extract a file (such as file readonly or open -- previously is just silently skipped the file and returned success).&lt;br /&gt;
&lt;br /&gt;
Version 1.0.13 integrated BZip2 (v1.0.3) support using miniclib (this version now supports none, gzip, bzip2, or lzma compressed TAR files).  Updated to lzma sdk 4.43.  (Note: missing call to FindClose(h); when -u is used and file not overwritten.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14054</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14054"/>
		<updated>2007-11-03T19:59:21Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Untgz.zip|thumb|Description]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.13.zip Untgz.1.0.13.zip] (232 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Older Untgz plugin with bz2 support, requires MSVCRT.DLL&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.10.zip Untgz.1.0.10.zip] (158 KB) Older Untgz plugin with only gzip &amp;amp; LZMA support&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Older releases may be found at http://www.fdos.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.13&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), lzma compression (*.tlz / *.tar.lzma), and bzip2 compression (*.tbz / *.tar.bz2).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For problems, corrections, etc. send email to PerditionC __at gmail.com (or jeremyd --at-- fdos.org)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used prior to tar file name (tarball.tgz), however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;If the tarball uses a compression other than gz, then the &#039;&#039;&#039;-z&#039;&#039;&amp;lt;type&amp;gt;&#039;&#039;&#039;&#039;&#039; option must be specified to indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib, this is the default if -z&amp;lt;type&amp;gt; option is omitted&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
Version 1.0.12 finally implements -k keep option, also adds -u update option (same as keep, but will overwrite a file if older than one in archive), and now aborts extraction with error when it fails to extract a file (such as file readonly or open -- previously is just silently skipped the file and returned success).&lt;br /&gt;
&lt;br /&gt;
Version 1.0.13 integrated BZip2 (v1.0.3) support using miniclib (this version now supports none, gzip, bzip2, or lzma compressed TAR files).  Updated to lzma sdk 4.43.  (Note: missing call to FindClose(h); when -u is used and file not overwritten.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14053</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14053"/>
		<updated>2007-11-03T19:46:38Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.13.zip Untgz.1.0.13.zip] (232 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Older Untgz plugin with bz2 support, requires MSVCRT.DLL&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.10.zip Untgz.1.0.10.zip] (158 KB) Older Untgz plugin with only gzip &amp;amp; LZMA support&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Older releases may be found at http://www.fdos.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.13&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), lzma compression (*.tlz / *.tar.lzma), and bzip2 compression (*.tbz / *.tar.bz2).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For problems, corrections, etc. send email to PerditionC __at gmail.com (or jeremyd --at-- fdos.org)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used prior to tar file name (tarball.tgz), however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;If the tarball uses a compression other than gz, then the &#039;&#039;&#039;-z&#039;&#039;&amp;lt;type&amp;gt;&#039;&#039;&#039;&#039;&#039; option must be specified to indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib, this is the default if -z&amp;lt;type&amp;gt; option is omitted&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
Version 1.0.12 finally implements -k keep option, also adds -u update option (same as keep, but will overwrite a file if older than one in archive), and now aborts extraction with error when it fails to extract a file (such as file readonly or open -- previously is just silently skipped the file and returned success).&lt;br /&gt;
&lt;br /&gt;
Version 1.0.13 integrated BZip2 (v1.0.3) support using miniclib (this version now supports none, gzip, bzip2, or lzma compressed TAR files).  Updated to lzma sdk 4.43.  (Note: missing call to FindClose(h); when -u is used and file not overwritten.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14052</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14052"/>
		<updated>2007-11-03T19:45:44Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Usage */  update is implemented&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.13.zip Untgz.1.0.13.zip] (232 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Older Untgz plugin with bz2 support, requires MSVCRT.DLL&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.10.zip Untgz.1.0.10.zip] (158 KB) Older Untgz plugin with only gzip &amp;amp; LZMA support&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Older releases may be found at http://www.fdos.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.13&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), lzma compression (*.tlz / *.tar.lzma), and bzip2 compression (*.tbz / *.tar.bz2).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For problems, corrections, etc. send email to PerditionC __at gmail.com (or jeremyd --at-- fdos.org)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: if -u is specified will only overwrite nonexisting or older files (update)&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used prior to tar file name (tarball.tgz), however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;If the tarball uses a compression other than gz, then the &#039;&#039;&#039;-z&#039;&#039;&amp;lt;type&amp;gt;&#039;&#039;&#039;&#039;&#039; option must be specified to indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib, this is the default if -z&amp;lt;type&amp;gt; option is omitted&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
Version 1.0.12 finally implements -k keep option, also adds -u update option (same as keep, but will overwrite a file if older than one in archive), and now aborts extraction with error when it fails to extract a file (such as file readonly or open -- previously is just silently skipped the file and returned success).&lt;br /&gt;
&lt;br /&gt;
Version 1.0.13 integrated BZip2 (v1.0.3) support using miniclib (this version now supports none, gzip, bzip2, or lzma compressed TAR files).  Updated to lzma sdk 4.43.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14051</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14051"/>
		<updated>2007-11-03T19:31:42Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Notes */  add info about latest version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.13.zip Untgz.1.0.13.zip] (232 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Older Untgz plugin with bz2 support, requires MSVCRT.DLL&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.10.zip Untgz.1.0.10.zip] (158 KB) Older Untgz plugin with only gzip &amp;amp; LZMA support&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Older releases may be found at http://www.fdos.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.13&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), lzma compression (*.tlz / *.tar.lzma), and bzip2 compression (*.tbz / *.tar.bz2).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For problems, corrections, etc. send email to PerditionC __at gmail.com (or jeremyd --at-- fdos.org)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: &#039;&#039;if -u is specified will only overwrite nonexisting or older files (update)&#039;&#039;, INPROGRESS&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: &#039;&#039;if -u is specified will only overwrite nonexisting or older files (update)&#039;&#039;, INPROGRESS&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used prior to tar file name (tarball.tgz), however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;If the tarball uses a compression other than gz, then the &#039;&#039;&#039;-z&#039;&#039;&amp;lt;type&amp;gt;&#039;&#039;&#039;&#039;&#039; option must be specified to indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib, this is the default if -z&amp;lt;type&amp;gt; option is omitted&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
Version 1.0.12 finally implements -k keep option, also adds -u update option (same as keep, but will overwrite a file if older than one in archive), and now aborts extraction with error when it fails to extract a file (such as file readonly or open -- previously is just silently skipped the file and returned success).&lt;br /&gt;
&lt;br /&gt;
Version 1.0.13 integrated BZip2 (v1.0.3) support using miniclib (this version now supports none, gzip, bzip2, or lzma compressed TAR files).  Updated to lzma sdk 4.43.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14050</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14050"/>
		<updated>2007-11-03T19:28:04Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Description */  found v1.0.13 so correct version info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.13.zip Untgz.1.0.13.zip] (232 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Older Untgz plugin with bz2 support, requires MSVCRT.DLL&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.10.zip Untgz.1.0.10.zip] (158 KB) Older Untgz plugin with only gzip &amp;amp; LZMA support&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Older releases may be found at http://www.fdos.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.13&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), lzma compression (*.tlz / *.tar.lzma), and bzip2 compression (*.tbz / *.tar.bz2).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For problems, corrections, etc. send email to PerditionC __at gmail.com (or jeremyd --at-- fdos.org)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: &#039;&#039;if -u is specified will only overwrite nonexisting or older files (update)&#039;&#039;, INPROGRESS&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: &#039;&#039;if -u is specified will only overwrite nonexisting or older files (update)&#039;&#039;, INPROGRESS&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used prior to tar file name (tarball.tgz), however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;If the tarball uses a compression other than gz, then the &#039;&#039;&#039;-z&#039;&#039;&amp;lt;type&amp;gt;&#039;&#039;&#039;&#039;&#039; option must be specified to indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib, this is the default if -z&amp;lt;type&amp;gt; option is omitted&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
Version 1.0.12 finally implements -k keep option, also adds -u update option (same as keep, but will overwrite a file if older than one in archive), and now aborts extraction with error when it fails to extract a file (such as file readonly or open -- previously is just silently skipped the file and returned success).&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14049</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=14049"/>
		<updated>2007-11-03T19:27:01Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Links */  update url of mirror (my site)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.13.zip Untgz.1.0.13.zip] (232 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Older Untgz plugin with bz2 support, requires MSVCRT.DLL&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.fdos.org/win32/nsis/plugins/untgz.1.0.10.zip Untgz.1.0.10.zip] (158 KB) Older Untgz plugin with only gzip &amp;amp; LZMA support&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Older releases may be found at http://www.fdos.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.10&lt;br /&gt;
(Latest is 1.0.13, but I&#039;ve since lost versions 1.0.12 and 1.0.13)&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), lzma compression (*.tlz / *.tar.lzma), and bzip2 compression (*.tbz / *.tar.bz2).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For problems, corrections, etc. send email to PerditionC __at gmail.com (or jeremyd --at-- fdos.org)&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: &#039;&#039;if -u is specified will only overwrite nonexisting or older files (update)&#039;&#039;, INPROGRESS&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: &#039;&#039;if -u is specified will only overwrite nonexisting or older files (update)&#039;&#039;, INPROGRESS&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used prior to tar file name (tarball.tgz), however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;If the tarball uses a compression other than gz, then the &#039;&#039;&#039;-z&#039;&#039;&amp;lt;type&amp;gt;&#039;&#039;&#039;&#039;&#039; option must be specified to indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib, this is the default if -z&amp;lt;type&amp;gt; option is omitted&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
Version 1.0.12 finally implements -k keep option, also adds -u update option (same as keep, but will overwrite a file if older than one in archive), and now aborts extraction with error when it fails to extract a file (such as file readonly or open -- previously is just silently skipped the file and returned success).&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=Plugin_Tester_(or_Wrapper)&amp;diff=11522</id>
		<title>Plugin Tester (or Wrapper)</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=Plugin_Tester_(or_Wrapper)&amp;diff=11522"/>
		<updated>2006-11-22T18:00:57Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&amp;lt;attach&amp;gt;PlgnTester.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/plgnTester.0.01.zip PlgnTester.0.01.zip] (30 KB) (Mirror #1)&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
plgntester - NSIS Plugin Tester v0.01&lt;br /&gt;
&lt;br /&gt;
This is a command line program that can be used to&lt;br /&gt;
invoke a NSIS plugin. It supports passing any string&lt;br /&gt;
variable on the stack, setting any of the standard&lt;br /&gt;
variables (user defined variables are unsupported),&lt;br /&gt;
and can invoke any specified function in given plugin.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
 plgnTester.exe [options] plugin function {/VAR # str} [args]&lt;br /&gt;
&lt;br /&gt;
Currently the only options available determine the output.&lt;br /&gt;
/silent limits output to that displayed by the plugin&lt;br /&gt;
/nogui prevents the mock NSIS installation listview dialog&lt;br /&gt;
/debug displays the contents of the stack and registers &lt;br /&gt;
before and after the plugin function is invoked.&lt;br /&gt;
&lt;br /&gt;
Plugin is the name of the plugin (or dll) to load, passed&lt;br /&gt;
asis to LoadLibrary, so one can omit the .dll and normal&lt;br /&gt;
path search should be done, but if in the NSIS plugin&lt;br /&gt;
directory, you will need to explicitly provide its path.&lt;br /&gt;
An error message is returned if failed to load.&lt;br /&gt;
&lt;br /&gt;
Function is the name of the exported function to invoke.&lt;br /&gt;
It should be exactly as exported, which should match &lt;br /&gt;
the name used in a NSIS script.  An error message is&lt;br /&gt;
returned if function is not found or other error obtaining&lt;br /&gt;
its procedure address.&lt;br /&gt;
&lt;br /&gt;
Any number (as permitted by the command line) of /VAR # str&lt;br /&gt;
sequences can be included (and in any location on cmd line).&lt;br /&gt;
/VAR marks the start of setting a variable.  &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; is 0-24,&amp;lt;br&amp;gt;&lt;br /&gt;
where 0-9 correspond to NSIS variables $0-$9,&amp;lt;br&amp;gt;&lt;br /&gt;
and 10-19 correspond to NSIS variables $R0-$R9.&amp;lt;br&amp;gt;&lt;br /&gt;
20-24 are $CMDLINE, $INSTDIR, $OUTDIR, $EXEDIR, $LANGUAGE&lt;br /&gt;
&lt;br /&gt;
The remaining arguments (if any) are the strings pushed onto&lt;br /&gt;
the stack and passed to the plugin.  Strings are pushed on &lt;br /&gt;
the stack in opposite order from command line.  That is, &lt;br /&gt;
pass arguments on the command line in same order as if you&lt;br /&gt;
were invoking the plugin from a NSIS script (calling order,&lt;br /&gt;
which should match order plugin pops them).&lt;br /&gt;
&lt;br /&gt;
This is primarily meant as a debugging tool, so should be&lt;br /&gt;
modified if necessary to the plugin being tested, but&lt;br /&gt;
should work as it is for some. When using a debugger, one&lt;br /&gt;
should compile it with debugging information and the&lt;br /&gt;
plugin with debug information, then one can step through&lt;br /&gt;
them both and/or set break points. Only the input stack&lt;br /&gt;
and variables and then output stack and variables are&lt;br /&gt;
shown.  When /nogui option is specified, NULL is passed&lt;br /&gt;
for the HWND as no window is created.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
Please send bug reports, suggestions, etc. to jeremyd --at--&lt;br /&gt;
fdos.org.&lt;br /&gt;
&lt;br /&gt;
[[Category:Related Software]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=Plugin_Tester_(or_Wrapper)&amp;diff=11521</id>
		<title>Plugin Tester (or Wrapper)</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=Plugin_Tester_(or_Wrapper)&amp;diff=11521"/>
		<updated>2006-11-22T17:57:09Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&amp;lt;attach&amp;gt;PlgnTester.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/plgnTester.0.01.zip PlgnTester.0.01.zip] (30 KB) (Mirror #1)&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
plgntester - NSIS Plugin Tester v0.01&lt;br /&gt;
&lt;br /&gt;
This is a command line program that can be used to&lt;br /&gt;
invoke a NSIS plugin. It supports passing any string&lt;br /&gt;
variable on the stack, setting any of the standard&lt;br /&gt;
variables (user defined variables are unsupported),&lt;br /&gt;
and can invoke any specified function in given plugin.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
 testwrap.exe plugin function {/VAR # str} [args]&lt;br /&gt;
&lt;br /&gt;
Plugin is the name of the plugin (or dll) to load, passed&lt;br /&gt;
asis to LoadLibrary, so one can omit the .dll and normal&lt;br /&gt;
path search should be done, but if in the NSIS plugin&lt;br /&gt;
directory, you will need to explicitly provide its path.&lt;br /&gt;
An error message is returned if failed to load.&lt;br /&gt;
&lt;br /&gt;
Function is the name of the exported function to invoke.&lt;br /&gt;
It should be exactly as exported, which should match &lt;br /&gt;
the name used in a NSIS script.  An error message is&lt;br /&gt;
returned if function is not found or other error obtaining&lt;br /&gt;
its procedure address.&lt;br /&gt;
&lt;br /&gt;
Any number (as permitted by the command line) of /VAR # str&lt;br /&gt;
sequences can be included (and in any location on cmd line).&lt;br /&gt;
/VAR marks the start of setting a variable.  &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; is 0-24,&amp;lt;br&amp;gt;&lt;br /&gt;
where 0-9 correspond to NSIS variables $0-$9,&amp;lt;br&amp;gt;&lt;br /&gt;
and 10-19 correspond to NSIS variables $R0-$R9.&amp;lt;br&amp;gt;&lt;br /&gt;
20-24 are $CMDLINE, $INSTDIR, $OUTDIR, $EXEDIR, $LANGUAGE&lt;br /&gt;
&lt;br /&gt;
The remaining arguments (if any) are the strings pushed onto&lt;br /&gt;
the stack and passed to the plugin.  Strings are pushed on &lt;br /&gt;
the stack in opposite order from command line.  That is, &lt;br /&gt;
pass arguments on the command line in same order as if you&lt;br /&gt;
were invoking the plugin from a NSIS script (calling order,&lt;br /&gt;
which should match order plugin pops them).&lt;br /&gt;
&lt;br /&gt;
This is primarily meant as a debugging tool, so should be&lt;br /&gt;
modified if necessary to the plugin being tested, but&lt;br /&gt;
should work as it is for some. When using a debugger, one&lt;br /&gt;
should compile it with debugging information and the&lt;br /&gt;
plugin with debug information, then one can step through&lt;br /&gt;
them both and/or set break points. Only the input stack&lt;br /&gt;
and variables and then output stack and variables are&lt;br /&gt;
shown.  Present version passes NULL for the HWND as no&lt;br /&gt;
window is created, though if requested, a future version may&lt;br /&gt;
add the necessary window.  Future versions may also&lt;br /&gt;
add a /QUIET or /VERBOSE option allowing this to more&lt;br /&gt;
easily be used as a wrapper.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
Please send bug reports, suggestions, etc. to jeremyd --at--&lt;br /&gt;
fdos.org.&lt;br /&gt;
&lt;br /&gt;
[[Category:Related Software]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=File:PlgnTester.zip&amp;diff=11520</id>
		<title>File:PlgnTester.zip</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=File:PlgnTester.zip&amp;diff=11520"/>
		<updated>2006-11-22T17:52:30Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: NSIS Plugin Tester (Wrapper), allows executing functions exported from NSIS plugins without building a script and compiling it.  Version 0.01 includes portions from NSIS exehead so can optionally display listbox for output to more accurately reflect plugi&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NSIS Plugin Tester (Wrapper), allows executing functions exported from NSIS plugins without building a script and compiling it.  Version 0.01 includes portions from NSIS exehead so can optionally display listbox for output to more accurately reflect plugin behaviour when used with a NSIS script.  Primarily meant as a debugging tool, can be compiled with DEBUG information to allow easy stepping into a plugin&#039;s functions within a debugger.&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=Plugin_Tester_(or_Wrapper)&amp;diff=11519</id>
		<title>Plugin Tester (or Wrapper)</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=Plugin_Tester_(or_Wrapper)&amp;diff=11519"/>
		<updated>2006-11-22T17:48:05Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&amp;lt;attach&amp;gt;PlgnTester.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/plgnTester.0.01.zip PlgnTester.0.01.zip] (30 KB) (Mirror #1)&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
plgntester - NSIS Plugin Tester v0.00&lt;br /&gt;
&lt;br /&gt;
This is a command line program that can be used to&lt;br /&gt;
invoke a NSIS plugin. It supports passing any string&lt;br /&gt;
variable on the stack, setting any of the standard&lt;br /&gt;
variables (user defined variables are unsupported),&lt;br /&gt;
and can invoke any specified function in given plugin.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
 testwrap.exe plugin function {/VAR # str} [args]&lt;br /&gt;
&lt;br /&gt;
Plugin is the name of the plugin (or dll) to load, passed&lt;br /&gt;
asis to LoadLibrary, so one can omit the .dll and normal&lt;br /&gt;
path search should be done, but if in the NSIS plugin&lt;br /&gt;
directory, you will need to explicitly provide its path.&lt;br /&gt;
An error message is returned if failed to load.&lt;br /&gt;
&lt;br /&gt;
Function is the name of the exported function to invoke.&lt;br /&gt;
It should be exactly as exported, which should match &lt;br /&gt;
the name used in a NSIS script.  An error message is&lt;br /&gt;
returned if function is not found or other error obtaining&lt;br /&gt;
its procedure address.&lt;br /&gt;
&lt;br /&gt;
Any number (as permitted by the command line) of /VAR # str&lt;br /&gt;
sequences can be included (and in any location on cmd line).&lt;br /&gt;
/VAR marks the start of setting a variable.  &amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; is 0-24,&amp;lt;br&amp;gt;&lt;br /&gt;
where 0-9 correspond to NSIS variables $0-$9,&amp;lt;br&amp;gt;&lt;br /&gt;
and 10-19 correspond to NSIS variables $R0-$R9.&amp;lt;br&amp;gt;&lt;br /&gt;
20-24 are $CMDLINE, $INSTDIR, $OUTDIR, $EXEDIR, $LANGUAGE&lt;br /&gt;
&lt;br /&gt;
The remaining arguments (if any) are the strings pushed onto&lt;br /&gt;
the stack and passed to the plugin.  Strings are pushed on &lt;br /&gt;
the stack in opposite order from command line.  That is, &lt;br /&gt;
pass arguments on the command line in same order as if you&lt;br /&gt;
were invoking the plugin from a NSIS script (calling order,&lt;br /&gt;
which should match order plugin pops them).&lt;br /&gt;
&lt;br /&gt;
This is primarily meant as a debugging tool, so should be&lt;br /&gt;
modified if necessary to the plugin being tested, but&lt;br /&gt;
should work as it is for some. When using a debugger, one&lt;br /&gt;
should compile it with debugging information and the&lt;br /&gt;
plugin with debug information, then one can step through&lt;br /&gt;
them both and/or set break points. Only the input stack&lt;br /&gt;
and variables and then output stack and variables are&lt;br /&gt;
shown.  Present version passes NULL for the HWND as no&lt;br /&gt;
window is created, though if requested, a future version may&lt;br /&gt;
add the necessary window.  Future versions may also&lt;br /&gt;
add a /QUIET or /VERBOSE option allowing this to more&lt;br /&gt;
easily be used as a wrapper.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
Please send bug reports, suggestions, etc. to jeremyd --at--&lt;br /&gt;
fdos.org.&lt;br /&gt;
&lt;br /&gt;
[[Category:Related Software]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=11510</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=11510"/>
		<updated>2006-11-18T16:48:37Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/untgz.1.0.13.zip Untgz.1.0.13.zip] (232 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Older releases may be found at http://www.darklogic.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Older Untgz plugin with bz2 support, requires MSVCRT.DLL&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.13&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), lzma compression (*.tlz / *.tar.lzma), and bzip2 compression (*.tbz / *.tar.bz2).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For problems, corrections, etc. send email to jeremyd --at-- fdos.org&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: &#039;&#039;if -u is specified will only overwrite nonexisting or older files (update)&#039;&#039;, INPROGRESS&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: &#039;&#039;if -u is specified will only overwrite nonexisting or older files (update)&#039;&#039;, INPROGRESS&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used prior to tar file name (tarball.tgz), however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;If the tarball uses a compression other than gz, then the &#039;&#039;&#039;-z&#039;&#039;&amp;lt;type&amp;gt;&#039;&#039;&#039;&#039;&#039; option must be specified to indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib, this is the default if -z&amp;lt;type&amp;gt; option is omitted&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
Version 1.0.12 finally implements -k keep option, also adds -u update option (same as keep, but will overwrite a file if older than one in archive), and now aborts extraction with error when it fails to extract a file (such as file readonly or open -- previously is just silently skipped the file and returned success).&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=11509</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=11509"/>
		<updated>2006-11-18T16:47:58Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/untgz.1.0.13.zip Untgz.1.0.13.zip] (232 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Older releases may be found at http://www.darklogic.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Older Untgz plugin with bz2 support, requires MSVCRT.DLL&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.13&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), lzma compression (*.tlz / *.tar.lzma), and bzip2 compression (*.tbz / *.tar.bz2).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For problems, corrections, etc. send email to jeremyd --at-- fdos.org&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: &#039;&#039;if -u is specified will only overwrite nonexisting or older files (update)&#039;&#039;, INPROGRESS&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: &#039;&#039;if -u is specified will only overwrite nonexisting or older files (update)&#039;&#039;, INPROGRESS&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used prior to tar file name (tarball.tgz), however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;If the tarball uses a compression other than gz, then the &#039;&#039;&#039;-z&#039;&#039;&amp;lt;type&amp;gt;&#039;&#039;&#039;&#039;&#039; option must be specified to indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib, this is the default if -z&amp;lt;type&amp;gt; option is omitted&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression, NOT YET IMPLEMENTED&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
Version 1.0.12 finally implements -k keep option, also adds -u update option (same as keep, but will overwrite a file if older than one in archive), and now aborts extraction with error when it fails to extract a file (such as file readonly or open -- previously is just silently skipped the file and returned success).&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=11508</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=11508"/>
		<updated>2006-11-18T16:45:02Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Untgz plugin with bz2 support&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/untgz.1.0.11.zip Untgz.1.0.11.zip] (158 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/untgz.1.0.12pre.zip Untgz.1.0.12pre.zip] (197 KB)&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.13&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), lzma compression (*.tlz / *.tar.lzma), and bzip2 compression (*.tbz / *.tar.bz2).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For problems, corrections, etc. send email to jeremyd --at-- fdos.org&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: &#039;&#039;if -u is specified will only overwrite nonexisting or older files (update)&#039;&#039;, INPROGRESS&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: &#039;&#039;if -u is specified will only overwrite nonexisting or older files (update)&#039;&#039;, INPROGRESS&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used prior to tar file name (tarball.tgz), however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;If the tarball uses a compression other than gz, then the &#039;&#039;&#039;-z&#039;&#039;&amp;lt;type&amp;gt;&#039;&#039;&#039;&#039;&#039; option must be specified to indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib, this is the default if -z&amp;lt;type&amp;gt; option is omitted&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression, NOT YET IMPLEMENTED&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
Version 1.0.12 finally implements -k keep option, also adds -u update option (same as keep, but will overwrite a file if older than one in archive), and now aborts extraction with error when it fails to extract a file (such as file readonly or open -- previously is just silently skipped the file and returned success).&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=11487</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=11487"/>
		<updated>2006-11-13T23:46:46Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Untgz plugin with bz2 support&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/untgz.1.0.11.zip Untgz.1.0.11.zip] (158 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/untgz.1.0.12pre.zip Untgz.1.0.12pre.zip] (197 KB)&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.12&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), and lzma compression (*.tlz / *.tar.lzma).&lt;br /&gt;
&lt;br /&gt;
Original may be found at http://www.darklogic.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
For problems, corrections, etc. send email to jeremyd --at-- fdos.org&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: &#039;&#039;if -u is specified will only overwrite nonexisting or older files (update)&#039;&#039;, INPROGRESS&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: &#039;&#039;if -u is specified will only overwrite nonexisting or older files (update)&#039;&#039;, INPROGRESS&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used prior to tar file name (tarball.tgz), however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;If the tarball uses a compression other than gz, then the &#039;&#039;&#039;-z&#039;&#039;&amp;lt;type&amp;gt;&#039;&#039;&#039;&#039;&#039; option must be specified to indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib, this is the default if -z&amp;lt;type&amp;gt; option is omitted&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression, NOT YET IMPLEMENTED&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
Version 1.0.12 finally implements -k keep option, also adds -u update option (same as keep, but will overwrite a file if older than one in archive), and now aborts extraction with error when it fails to extract a file (such as file readonly or open -- previously is just silently skipped the file and returned success).&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=11486</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=11486"/>
		<updated>2006-11-13T23:44:07Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Untgz plugin with bz2 support&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/untgz.1.0.11.zip Untgz.1.0.11.zip] (158 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/untgz.1.0.12pre.zip Untgz.1.0.12pre.zip] (197 KB)&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.12&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), and lzma compression (*.tlz / *.tar.lzma).&lt;br /&gt;
&lt;br /&gt;
Original may be found at http://www.darklogic.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
For problems, corrections, etc. send email to jeremyd --at-- fdos.org&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: &#039;&#039;if -u is specified will only overwrite nonexisting or older files (update)&#039;&#039;, INPROGRESS&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: if -k is specified will not overwrite existing files (keep)&lt;br /&gt;
: &#039;&#039;if -u is specified will only overwrite nonexisting or older files (update)&#039;&#039;, INPROGRESS&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used prior to tar file name (tarball.tgz), however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;If the tarball uses a compression other than gz, then the &#039;&#039;&#039;-z&#039;&#039;&amp;lt;type&amp;gt;&#039;&#039;&#039;&#039;&#039; option must be specified to indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib, this is the default if -z&amp;lt;type&amp;gt; option is omitted&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression, NOT YET IMPLEMENTED&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=11485</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=11485"/>
		<updated>2006-11-13T23:40:59Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Untgz plugin with bz2 support&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/untgz.1.0.11.zip Untgz.1.0.11.zip] (158 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/untgz.1.0.12pre.zip Untgz.1.0.12pre.zip] (197 KB)&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.12&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), and lzma compression (*.tlz / *.tar.lzma).&lt;br /&gt;
&lt;br /&gt;
Original may be found at http://www.darklogic.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
For problems, corrections, etc. send email to jeremyd --at-- fdos.org&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: &#039;&#039;if -k is specified will not overwrite existing files (keep)&#039;&#039;, NOT YET IMPLEMENTED&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: &#039;&#039;if -k is specified will not overwrite existing files (keep)&#039;&#039;, NOT YET IMPLEMENTED&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used, however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;If the tarball uses a compression other than gz, then the &#039;&#039;&#039;-z&#039;&#039;&amp;lt;type&amp;gt;&#039;&#039;&#039;&#039;&#039; option must be specified to indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib, this is the default if -z&amp;lt;type&amp;gt; option is omitted&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression, NOT YET IMPLEMENTED&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=11484</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=11484"/>
		<updated>2006-11-13T23:40:21Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Untgz plugin with bz2 support&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/untgz.1.0.11.zip Untgz.1.0.11.zip] (158 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/untgz.1.0.12pre.zip Untgz.1.0.12pre.zip] (197 KB)&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.11&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), and lzma compression (*.tlz / *.tar.lzma).&lt;br /&gt;
&lt;br /&gt;
Original may be found at http://www.darklogic.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
For problems, corrections, etc. send email to jeremyd --at-- fdos.org&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: &#039;&#039;if -k is specified will not overwrite existing files (keep)&#039;&#039;, NOT YET IMPLEMENTED&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: &#039;&#039;if -k is specified will not overwrite existing files (keep)&#039;&#039;, NOT YET IMPLEMENTED&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used, however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;If the tarball uses a compression other than gz, then the &#039;&#039;&#039;-z&#039;&#039;&amp;lt;type&amp;gt;&#039;&#039;&#039;&#039;&#039; option must be specified to indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib, this is the default if -z&amp;lt;type&amp;gt; option is omitted&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression, NOT YET IMPLEMENTED&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=11483</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=11483"/>
		<updated>2006-11-13T23:39:54Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untbgz.zip&amp;lt;/attach&amp;gt; Untgz plugin with bz2 support&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/untgz.1.0.11.zip Untgz.1.0.11.zip] (158 KB) (Mirror #1)&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/untgz.1.0.12pre.zip Untgz.1.0.12pre.zip] (197 KB)&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.11&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), and lzma compression (*.tlz / *.tar.lzma).&lt;br /&gt;
&lt;br /&gt;
Original may be found at http://www.darklogic.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
For problems, corrections, etc. send email to jeremyd --at-- fdos.org&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: &#039;&#039;if -k is specified will not overwrite existing files (keep)&#039;&#039;, NOT YET IMPLEMENTED&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: &#039;&#039;if -k is specified will not overwrite existing files (keep)&#039;&#039;, NOT YET IMPLEMENTED&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used, however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;If the tarball uses a compression other than gz, then the &#039;&#039;&#039;-z&#039;&#039;&amp;lt;type&amp;gt;&#039;&#039;&#039;&#039;&#039; option must be specified to indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib, this is the default if -z&amp;lt;type&amp;gt; option is omitted&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be omitted (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression, NOT YET IMPLEMENTED&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
Version 1.0.11 adds support for compiling with MSVC 8 (Express 2005 + SDK).  Unless you wish to recompile with VC8 there no need to update from 1.0.10&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=MD5_plugin&amp;diff=11438</id>
		<title>MD5 plugin</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=MD5_plugin&amp;diff=11438"/>
		<updated>2006-11-04T14:11:59Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: link to wikipedia description of what an MD5 hash is&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Md5dll.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/md5dll/md5dll.0.4.zip Md5dll.0.4.zip] (13 KB) (Mirror #1)&lt;br /&gt;
&lt;br /&gt;
[http://www.darklogic.org/win32/nsis/plugins/md5dll/ Older Versions of MD5 plugin]&lt;br /&gt;
&lt;br /&gt;
[http://forums.winamp.com/showthread.php?threadid=117789 Original NSIS Forums Thread (for older versions)]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
Generates a [http://en.wikipedia.org/wiki/Md5 md5] value from either a string or contents of specified file.&lt;br /&gt;
&lt;br /&gt;
Original:  MD5 Plugin DLL by Matthew &amp;quot;IGx89&amp;quot; Lieder, derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm&lt;br /&gt;
&lt;br /&gt;
== Sample Usage ==&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
OutFile &amp;quot;md5test.exe&amp;quot;&lt;br /&gt;
Section &amp;quot;&amp;quot;&lt;br /&gt;
  #generate MD5sum of string&lt;br /&gt;
  md5dll::GetMD5String &amp;quot;md5me&amp;quot;&lt;br /&gt;
  Pop $0&lt;br /&gt;
  DetailPrint &amp;quot;md5: [$0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # generate MD5sum of file&lt;br /&gt;
  md5dll::GetMD5File &amp;quot;${NSISDIR}\makensis.exe&amp;quot;&lt;br /&gt;
  Pop $0&lt;br /&gt;
  DetailPrint &amp;quot;md5: [$0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  #generate random MD5sum&lt;br /&gt;
  md5dll::GetMD5Random&lt;br /&gt;
  Pop $0&lt;br /&gt;
  DetailPrint &amp;quot;md5: [$0]&amp;quot;&lt;br /&gt;
SectionEnd&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Versions History ==&lt;br /&gt;
;0.4&lt;br /&gt;
:KJD (2005):&lt;br /&gt;
:*Added dual name to exports for backwards compatibility.&lt;br /&gt;
;0.3&lt;br /&gt;
:Shengalts Aleksander aka Instructor (2005):&lt;br /&gt;
:*New command: &amp;quot;GetMD5Random&amp;quot;.&lt;br /&gt;
:*Changed names: &amp;quot;GetFileMD5&amp;quot; -&amp;gt; &amp;quot;GetMD5File&amp;quot;, &amp;quot;GetMD5&amp;quot; -&amp;gt; &amp;quot;GetMD5String&amp;quot;.&lt;br /&gt;
:*Fixed: string length error.&lt;br /&gt;
;0.2&lt;br /&gt;
:Davy Durham (2004):&lt;br /&gt;
:*MD5.cpp fix (correct for loop used to replace memset, exceeded bounds).&lt;br /&gt;
;0.1&lt;br /&gt;
:KJD (2004):&lt;br /&gt;
:*Modified to reduce size and use exdll.h (reduced to about 6KB uncompressed, by removing CRTL dependency).&lt;br /&gt;
;Original&lt;br /&gt;
:Matthew &amp;quot;IGx89&amp;quot; Lieder:&lt;br /&gt;
:*Original plugin Author.&lt;br /&gt;
:Sunjammer (12th May 2002):&lt;br /&gt;
:*Original usage notes and example script.&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=MD5_plugin&amp;diff=11436</id>
		<title>MD5 plugin</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=MD5_plugin&amp;diff=11436"/>
		<updated>2006-11-03T20:20:13Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: fix links to older versions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Md5dll.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/md5dll/md5dll.0.4.zip Md5dll.0.4.zip] (13 KB) (Mirror #1)&lt;br /&gt;
&lt;br /&gt;
[http://www.darklogic.org/win32/nsis/plugins/md5dll/ Older Versions of MD5 plugin]&lt;br /&gt;
&lt;br /&gt;
[http://forums.winamp.com/showthread.php?threadid=117789 Original NSIS Forums Thread (for older versions)]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
Generates a md5 value from either a string or contents of specified file.&lt;br /&gt;
&lt;br /&gt;
Original:  MD5 Plugin DLL by Matthew &amp;quot;IGx89&amp;quot; Lieder, derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm&lt;br /&gt;
&lt;br /&gt;
== Sample Usage ==&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
OutFile &amp;quot;md5test.exe&amp;quot;&lt;br /&gt;
Section &amp;quot;&amp;quot;&lt;br /&gt;
  #generate MD5sum of string&lt;br /&gt;
  md5dll::GetMD5String &amp;quot;md5me&amp;quot;&lt;br /&gt;
  Pop $0&lt;br /&gt;
  DetailPrint &amp;quot;md5: [$0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # generate MD5sum of file&lt;br /&gt;
  md5dll::GetMD5File &amp;quot;${NSISDIR}\makensis.exe&amp;quot;&lt;br /&gt;
  Pop $0&lt;br /&gt;
  DetailPrint &amp;quot;md5: [$0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  #generate random MD5sum&lt;br /&gt;
  md5dll::GetMD5Random&lt;br /&gt;
  Pop $0&lt;br /&gt;
  DetailPrint &amp;quot;md5: [$0]&amp;quot;&lt;br /&gt;
SectionEnd&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Versions History ==&lt;br /&gt;
;0.4&lt;br /&gt;
:KJD (2005):&lt;br /&gt;
:*Added dual name to exports for backwards compatibility.&lt;br /&gt;
;0.3&lt;br /&gt;
:Shengalts Aleksander aka Instructor (2005):&lt;br /&gt;
:*New command: &amp;quot;GetMD5Random&amp;quot;.&lt;br /&gt;
:*Changed names: &amp;quot;GetFileMD5&amp;quot; -&amp;gt; &amp;quot;GetMD5File&amp;quot;, &amp;quot;GetMD5&amp;quot; -&amp;gt; &amp;quot;GetMD5String&amp;quot;.&lt;br /&gt;
:*Fixed: string length error.&lt;br /&gt;
;0.2&lt;br /&gt;
:Davy Durham (2004):&lt;br /&gt;
:*MD5.cpp fix (correct for loop used to replace memset, exceeded bounds).&lt;br /&gt;
;0.1&lt;br /&gt;
:KJD (2004):&lt;br /&gt;
:*Modified to reduce size and use exdll.h (reduced to about 6KB uncompressed, by removing CRTL dependency).&lt;br /&gt;
;Original&lt;br /&gt;
:Matthew &amp;quot;IGx89&amp;quot; Lieder:&lt;br /&gt;
:*Original plugin Author.&lt;br /&gt;
:Sunjammer (12th May 2002):&lt;br /&gt;
:*Original usage notes and example script.&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=Talk:UnTGZ_plug-in&amp;diff=6886</id>
		<title>Talk:UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=Talk:UnTGZ_plug-in&amp;diff=6886"/>
		<updated>2005-07-14T23:15:29Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;My antivirus, Kaspersky thinks this is a trojan.  Anyone else getting issues like this?&lt;br /&gt;
&lt;br /&gt;
It should be a false positive; I&#039;m running Norton Antivirus and have a firewall + try to keep Windows patched, so my system is hopefully clean -- the full source is there if you want to compile yourself and verify [the free MS compiler toolkit should work to build it].  Which version?  Jeremy&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=Nsisunz_plug-in&amp;diff=4521</id>
		<title>Nsisunz plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=Nsisunz_plug-in&amp;diff=4521"/>
		<updated>2005-07-13T14:01:48Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Download */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|saivert}}&lt;br /&gt;
=== NxS Unzip plug-in ===&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
[[Image:Zip.gif]] [http://saivert.inthegray.com/download.php?get=Li91cGxvYWRzL25zaXMvbnNpc3Vuei43eg== nsisunz.7z] (86.15 Kb)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/nsisunz.7z nsisunz.7z] (86.15 Kb) (Mirror #2)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/nsisunz.zip nsisunz.alt.zip] (138 Kb) (reduced plugin size &#039;&#039;{40KB/22KB uncompressed/upx&#039;d}&#039;&#039; version - limited testing)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
nsisunz is a NSIS plugin which allows you to extract files from ZIP archives.&lt;br /&gt;
&lt;br /&gt;
nsisunz is great when you use another NSIS plug-in named NSISdl to download a ZIP file from the internet. Download a small installer which lets the user choose the components he/she want to install and the installer downloads it (QuickTime Setup does this).&lt;br /&gt;
&lt;br /&gt;
Note: nsisunz does not support password protected ZIP archives (encrypted).&lt;br /&gt;
To extract only a specific file from the archive use the &amp;quot;/file&amp;quot; option.&lt;br /&gt;
&lt;br /&gt;
== How to use ==&lt;br /&gt;
Setting it up&lt;br /&gt;
&lt;br /&gt;
To see a great example of how to use the plug-in, check out the included example script.&lt;br /&gt;
&lt;br /&gt;
You use the Unzip, UnzipToLog or the UnzipToStack function to extract files from a ZIP archive.&lt;br /&gt;
&lt;br /&gt;
In my opinion the best way to describe things is by showing an example, so here is one:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
InitPluginsDir&lt;br /&gt;
; Call plug-in. Push filename to ZIP first, and the dest. folder last.&lt;br /&gt;
nsisunz::UnzipToLog &amp;quot;$PLUGINSDIR\myzipfile.zip&amp;quot; &amp;quot;$INSTDIR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; Always check result on stack&lt;br /&gt;
Pop $0&lt;br /&gt;
StrCmp $0 &amp;quot;success&amp;quot; ok&lt;br /&gt;
  DetailPrint &amp;quot;$0&amp;quot; ;print error message to log&lt;br /&gt;
ok:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
; You can also use the &amp;quot;Unzip&amp;quot; function if you don&#039;t want to use the log.&lt;br /&gt;
; It is a lot quicker, and is preferred for large ZIP archives.&lt;br /&gt;
nsisunz::Unzip &amp;quot;$PLUGINSDIR\myzipfile.zip&amp;quot; &amp;quot;$INSTDIR&amp;quot;&lt;br /&gt;
The UnzipToStack function&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The UnzipToStack function can be used instead of the UnzipToLog function if you want the extraction to be a lot faster when extracting from very large ZIP archives and still want to see the files extracted. This is how you use it: &lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
nsisunz::UnzipToStack &amp;quot;$PLUGINSDIR\myzipfile.zip&amp;quot; &amp;quot;$INSTDIR&amp;quot;&lt;br /&gt;
Pop $0&lt;br /&gt;
StrCmp $0 &amp;quot;success&amp;quot; ok&lt;br /&gt;
  DetailPrint &amp;quot;$0&amp;quot; ;print error message to log&lt;br /&gt;
  Goto skiplist&lt;br /&gt;
ok:&lt;br /&gt;
&lt;br /&gt;
; Print out list of files extracted to log&lt;br /&gt;
next:&lt;br /&gt;
  Pop $0&lt;br /&gt;
  DetailPrint $0&lt;br /&gt;
StrCmp $0 &amp;quot;&amp;quot; 0 next ; pop strings until a blank one arrives&lt;br /&gt;
&lt;br /&gt;
skiplist:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
== Extracting specific files ==&lt;br /&gt;
&lt;br /&gt;
To extract only a specific file use the &amp;quot;/file&amp;quot; option like this: &lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
nsisunz::UnzipToLog /file &amp;quot;AnyPathInsideZIP/AFile.txt&amp;quot; &amp;quot;myzip.zip&amp;quot; &amp;quot;c:\myfiles&amp;quot;&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
The path is relative to the root of the ZIP archive so you don&#039;t have to prepend a slash (&amp;quot;/&amp;quot;). Furthermore the foldernames are extracted with the file so the example above creates a file named &amp;quot;c:\myfiles\AnyPathInsideZIP\AFile.txt&amp;quot;. To avoid this use &amp;quot;/noextractpath&amp;quot; like this: &lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
nsisunz::UnzipToLog /noextractpath /file \&lt;br /&gt;
  &amp;quot;AnyPathInsideZIP/AFile.txt&amp;quot; &amp;quot;myzip.zip&amp;quot; &amp;quot;c:\myfiles&amp;quot;&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
== Using nsisunz with NSISdl ==&lt;br /&gt;
&lt;br /&gt;
To use NSISdl with nsisunz to download and extract a ZIP archive, do something like this:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
InitPluginsDir&lt;br /&gt;
NSISdl::download http://www.domain.com/file &amp;quot;$PLUGINSDIR\localfile.zip&amp;quot;&lt;br /&gt;
Pop $R0 ;Get the return value&lt;br /&gt;
StrCmp $R0 &amp;quot;success&amp;quot; +3&lt;br /&gt;
  MessageBox MB_OK &amp;quot;Download failed: $R0&amp;quot;&lt;br /&gt;
  Quit&lt;br /&gt;
&lt;br /&gt;
nsisunz::UnzipToLog &amp;quot;$PLUGINSDIR\localfile.zip&amp;quot; &amp;quot;$INSTDIR&amp;quot;&lt;br /&gt;
Pop $R0&lt;br /&gt;
StrCmp $R0 &amp;quot;success&amp;quot; +2&lt;br /&gt;
  DetailPrint &amp;quot;$R0&amp;quot; ;print error message to log&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
== Options ==&lt;br /&gt;
&lt;br /&gt;
These are the optional parameters you can specify when calling nsisunz.&lt;br /&gt;
&lt;br /&gt;
  /noextractpath&lt;br /&gt;
  This option makes the plug-in extract all files to the destination directory&lt;br /&gt;
  without regard to paths stored in ZIP file. Is often used in conjunction&lt;br /&gt;
  with &amp;quot;/file&amp;quot; to extract a single file from anywhere in an archive to a&lt;br /&gt;
  destination directory.	&lt;br /&gt;
&lt;br /&gt;
  /file&lt;br /&gt;
  Extract a specific file. Filename must be specified as next parameter and must&lt;br /&gt;
  match a file in the ZIP including any subdirectories. If the file couldn&#039;t be&lt;br /&gt;
  found in the ZIP file, nsisunz pushes the string &amp;quot;File not found in ZIP&lt;br /&gt;
  file&amp;quot; on the stack.	&lt;br /&gt;
&lt;br /&gt;
  /text&lt;br /&gt;
  Sets the format of the text used in the log to the next param. &amp;quot;%f&amp;quot; is&lt;br /&gt;
  replaced with the filename, &amp;quot;%c&amp;quot; is replaced with the compressed size and&lt;br /&gt;
  &amp;quot;%u&amp;quot; is replaced with the uncompressed size.&lt;br /&gt;
&lt;br /&gt;
== Return value ==&lt;br /&gt;
&lt;br /&gt;
After you have called the DLL, nsisunz adds either &amp;quot;success&amp;quot; or a specific error message on the stack. This is the possible error messages:&lt;br /&gt;
Error opening ZIP file&lt;br /&gt;
Error opening output file(s)&lt;br /&gt;
Error writing output file(s)&lt;br /&gt;
Error extracting from ZIP file&lt;br /&gt;
File not found in ZIP file&lt;br /&gt;
&lt;br /&gt;
Usually, you don&#039;t need to check this value, but you still have to remove it from the stack (have a look at the example above).&lt;br /&gt;
Reserve files&lt;br /&gt;
&lt;br /&gt;
If you are using BZIP2 (solid) compression, it&#039;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.&lt;br /&gt;
&lt;br /&gt;
If there are File commands in your sections or functions above the init- or page functions, add ReserveFile commands above your sections and functions:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
ReserveFile &amp;quot;myzipfile.zip&amp;quot;&lt;br /&gt;
ReserveFile &amp;quot;${NSISDIR}\Plugins\nsisunz.dll&amp;quot;&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
&lt;br /&gt;
Use the &amp;quot;/text&amp;quot; parameter to localize the text used by nsisunz for the log output. &lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
; Localized strings for use with nsisunz&lt;br /&gt;
; The &amp;quot;%f&amp;quot; in the string is replaced with the filename on run-time.&lt;br /&gt;
; &amp;quot;%c&amp;quot; and &amp;quot;%u&amp;quot; is replaced with compressed size and&lt;br /&gt;
; uncompressed size respectively. See example script.&lt;br /&gt;
&lt;br /&gt;
LoadLanguageFile &amp;quot;${NSISDIR}\Contrib\Language files\english.nlf&amp;quot;&lt;br /&gt;
LoadLanguageFile &amp;quot;${NSISDIR}\Contrib\Language files\norwegian.nlf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
LangString nsisunz_text ${LANG_ENGLISH} &amp;quot;Extract: %f&amp;quot;&lt;br /&gt;
LangString nsisunz_text ${LANG_NORWEGIAN} &amp;quot;Pakk ut: %f&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Function .onInit&lt;br /&gt;
  nsisunz:: /text &amp;quot;&amp;quot; &amp;quot;$(nsisunz_text)&amp;quot;&lt;br /&gt;
FunctionEnd&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
The plug-in is compressed with UPX to make it smaller.&lt;br /&gt;
If you make changes to the source, re-compile and use UPX you may get this message:&lt;br /&gt;
upx: nsisunz.dll: CantPackException: file is possibly packed/protected (try --force)&lt;br /&gt;
I used the &amp;quot;--force&amp;quot; parameter as proposed, and without problems UPX reduced the size of nsisunz.dll from ~71 kb to 31,5 kb&lt;br /&gt;
The reason for why you get this message is that the source #include&#039;s &amp;quot;AggressiveOptimize.h&amp;quot; which makes the linker merge the code sections of the final executable. This makes UPX think it&#039;s already packed (which it kinda is). But by using the &amp;quot;--force&amp;quot; parameter, UPX may shrink it a lot more.&lt;br /&gt;
I hope people appreciate my struggles to keep the size of the plug-in small. If someone have any suggestions for making it even smaller I would like if someone sendt me an e-mail. &lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
nsisunz is written by Saivert.&lt;br /&gt;
Homepage: http://saivert.inthegray.com/&lt;br /&gt;
E-mail: saivert@gmail.com &lt;br /&gt;
Version history&lt;br /&gt;
DLL version 1.0 (12/4/2004) &lt;br /&gt;
First public release!&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
&lt;br /&gt;
Based on code in NSIS Zip2Exe&lt;br /&gt;
portions Copyright Â© 1999-2001 Miguel Garrido (mgarrido01@hotmail.com)&lt;br /&gt;
Uses ZLIB - Copyright Â© Mark Adler&lt;br /&gt;
ZIP format routines - Copyright Â© 1998 Gilles Vollant&lt;br /&gt;
Thanks to Tim Kosse for the LogMessage function, even though I could figure this out myself.&lt;br /&gt;
And thanks to Joost Verburg for the readme HTML page design.&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
&lt;br /&gt;
This software is provided &#039;as-is&#039;, without any express or implied&lt;br /&gt;
warranty. In no event will the authors be held liable for any damages&lt;br /&gt;
arising from the use of this software.&lt;br /&gt;
&lt;br /&gt;
Permission is granted to anyone to use this software for any purpose,&lt;br /&gt;
including commercial applications, and to alter it and redistribute&lt;br /&gt;
it freely, subject to the following restrictions:&lt;br /&gt;
&lt;br /&gt;
1. The origin of this software must not be misrepresented;&lt;br /&gt;
   you must not claim that you wrote the original software.&lt;br /&gt;
   If you use this software in a product, an acknowledgment in the&lt;br /&gt;
   product documentation would be appreciated but is not required.&lt;br /&gt;
2. Altered versions must be plainly marked as such,&lt;br /&gt;
   and must not be misrepresented as being the original software.&lt;br /&gt;
3. This notice may not be removed or altered from any distribution.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=4564</id>
		<title>UnTGZ plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=UnTGZ_plug-in&amp;diff=4564"/>
		<updated>2005-07-03T19:52:22Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Untgz.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/untgz.1.0.10.zip Untgz.1.0.10.zip] (158 KB) (Mirror #1)&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0.10.&lt;br /&gt;
&lt;br /&gt;
UnTGZ plugin is similar to ExtractDLL and ZipDLL plugins, except it allows one to extract the files from a tarball. Only simple tarballs are supported, those with filenames longer than 100 characters or including special files may not be supported well (please send me information including where to obtain a sample tarball if better support is required for one of these).&lt;br /&gt;
&lt;br /&gt;
Supports TAR files with no compression (*.tar), gzipped [zlib compatible] compression (*.tgz / *.tar.gz), and lzma compression (*.tlz / *.tar.lzma).&lt;br /&gt;
&lt;br /&gt;
Original may be found at http://www.darklogic.org/win32/nsis/plugins/.&amp;lt;br&amp;gt;&lt;br /&gt;
For problems, corrections, etc. send email to jeremyd --at-- fdos.org&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extract&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz&lt;br /&gt;
: extracts all files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: &#039;&#039;if -k is specified will not overwrite existing files (keep)&#039;&#039;, NOT YET IMPLEMENTED&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractV&#039;&#039;&#039; [&#039;&#039;-j&#039;&#039;] [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-k&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz [&#039;&#039;-i {iList}&#039;&#039;] [&#039;&#039;-x {xList}&#039;&#039;] &#039;&#039;&#039;--&#039;&#039;&#039;&lt;br /&gt;
: extracts files from tarball.tgz&lt;br /&gt;
: if -j is specified then ignore paths in tarball (junkpaths)&lt;br /&gt;
: if -d is specified will extract relative to basedir&lt;br /&gt;
: &#039;&#039;if -k is specified will not overwrite existing files (keep)&#039;&#039;, NOT YET IMPLEMENTED&lt;br /&gt;
: if -z is specified determines compression used, see below&lt;br /&gt;
: if -i is specified will only extract files whose filename matches&lt;br /&gt;
: if -x is specified will NOT extract files whose filename matches&lt;br /&gt;
: the -- is required and marks the end of the file lists&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;untgz&amp;lt;nowiki&amp;gt;::&amp;lt;/nowiki&amp;gt;extractFile&#039;&#039;&#039; [&#039;&#039;-d basedir&#039;&#039;] [&#039;&#039;-z&amp;lt;type&amp;gt;&#039;&#039;] tarball.tgz file&lt;br /&gt;
: extracts just the file specified&lt;br /&gt;
: path information is ignored, implictly -j is specified (may also be explicit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;For compatibility with tar command, the following option specifiers may be used, however, they are simply ignored.&lt;br /&gt;
: -x indicates action to perform is extraction (extract)&lt;br /&gt;
: -f archive-name indicates name of tarball (filename), note even when used, the filename must be last argument&lt;br /&gt;
&lt;br /&gt;
;If the tarball uses a compression other than gz, then the &#039;&#039;&#039;-z&#039;&#039;&amp;lt;type&amp;gt;&#039;&#039;&#039;&#039;&#039; option must be specified to indicate how tar file is compressed.&lt;br /&gt;
: -z      indicates gzip (.tgz/.tar.gz) compression, uses zlib, this is the default if -z&amp;lt;type&amp;gt; option is omitted&lt;br /&gt;
: -znone  indicates uncompressed tar file (.tar), may be ommited (internally same as -z)&lt;br /&gt;
: -zlzma  indicates lzma (.tlz/.tar.lzma) compression&lt;br /&gt;
: -zbz2   indicates bzip2 (.tbz/.tar.bz2) compression, NOT YET IMPLEMENTED&lt;br /&gt;
&lt;br /&gt;
;NOTES:&lt;br /&gt;
Without -j there is a security issue as no checking is done to paths, allowing untrusted tarballs to overwrite arbitrary files (e.g. /bin/*).  Also no checking is done to directory or file names.  In untar.c there is a hook so custom versions can modify/strip filepaths prior to opening.  The -d option is currently implemented by a chdir to indicatd directory prior to extraction; future versions may instead prepend to extracted path.&lt;br /&gt;
&lt;br /&gt;
== Example usage ==&lt;br /&gt;
This is a snippet from [[AbiWord]]&#039;s NSIS2 script:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;	doDictInst:&lt;br /&gt;
		; Unzip dictionary into dictionary subdirectory&lt;br /&gt;
		untgz::extract &amp;quot;-j&amp;quot; &amp;quot;-d&amp;quot; &amp;quot;$INSTDIR\dictionary&amp;quot; &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
		&lt;br /&gt;
		; Delete temporary files&lt;br /&gt;
		Delete &amp;quot;$TEMP\${DICT_FILENAME}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Finish:&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
Currently tested with NSIS 2.0x&lt;br /&gt;
&lt;br /&gt;
Based on ExDLL/ExDLL.h and Zlib&#039;s untgz, all dependencies included, simply extract to your contrib directory and build with MSVC 6 (or later) or copy included untgz.dll to the plugins subdirectory of your NSIS installation.&lt;br /&gt;
Some parts (such as extraction with paths) not as well tested.&lt;br /&gt;
See included README.TXT for more details.&lt;br /&gt;
&lt;br /&gt;
Note: 1.0.9 version fixes problems extracting files from some valid tarballs (updated zlib),&lt;br /&gt;
which while tested, some issues may still exist that I haven&#039;t seen;&lt;br /&gt;
please test (see also [[Plugin Tester (or Wrapper)|Plugin Tester]]) your tarballs with it and report to&lt;br /&gt;
me should any problems occur. Thanks.&lt;br /&gt;
&lt;br /&gt;
As of version 1.0.10, untgz plugin supports lzma compressed TAR files (adds about 5KB to plugin size, so can optionally be compiled out).  Create a normal uncompressed tar file (*.tar), then instead of gzipping (or bzipping/compress&#039;ing) use lzma from LZMA SDK (http://www.7zip.org/sdk.html).  E.g.  &#039;lzma e myarchive.tar myarchive.tlz&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=Nsisdbg_plug-in&amp;diff=4318</id>
		<title>Nsisdbg plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=Nsisdbg_plug-in&amp;diff=4318"/>
		<updated>2005-07-03T19:48:42Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|saivert}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[[File:Exe.gif]] [http://saivert.inthegray.com/download.php?get=Li91cGxvYWRzL25zaXMvbnNpcy1kZWJ1Z2dlci5leGU= nsis-debugger.exe] (275 KB)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/others/nsis-debugger.exe nsis-debugger.exe] (275 KB) (Mirror #2)&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
I have created a new debug tool for NSIS. It&#039;s called NSIS Debugger and&lt;br /&gt;
you can download it from my homepage (see above links section).&lt;br /&gt;
&lt;br /&gt;
NSIS Debugger is a NSIS plugin which allows you to debug&lt;br /&gt;
your NSIS installers. The plugin will create a dialog which will be displayed&lt;br /&gt;
alongside the NSIS window. The first thing you will get familiar with is the tabbed pages.&lt;br /&gt;
Use them to switch between variable list, stack view, debug log, config. and about page.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
Using the variable list which is on the first tab page&lt;br /&gt;
you can change all the variables, clear them, keep (save for later use) and restore them&lt;br /&gt;
(from a previous keep operation). To edit a variable simply use the in-place edit box by clicking a variable.&lt;br /&gt;
The stack view gives you a list of the strings pushed on the stack. You can pop them off it,&lt;br /&gt;
push more strings to it and clear the entire stack. You can edit a stack item simply by clicking it and use&lt;br /&gt;
the in-place editbox.&lt;br /&gt;
NSIS Debugger has a debug log which you can add entries to by calling a function&lt;br /&gt;
in your installer script.&lt;br /&gt;
&lt;br /&gt;
To install the plugin, simply copy it to the plugins folder under your NSIS folder.&lt;br /&gt;
&lt;br /&gt;
This version of NSIS Debugger has only been tested with NSIS 2.&lt;br /&gt;
It should work perfectly fine with older versions too.&lt;br /&gt;
&lt;br /&gt;
== How to use ==&lt;br /&gt;
&lt;br /&gt;
Initialization&lt;br /&gt;
The first thing you have to do to use the debugger is to&lt;br /&gt;
set up a couple of lines in the .onGUIInit callback function in the script.&lt;br /&gt;
You will also need to put a line in the .onGUIEnd callback function as well&lt;br /&gt;
(this is covered below).&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
Function .onGUIInit&lt;br /&gt;
&lt;br /&gt;
  InitPluginsDir&lt;br /&gt;
  ; Remember to include the &amp;quot;/NOUNLOAD&amp;quot; option.&lt;br /&gt;
  ; This is to keep the debugger running.&lt;br /&gt;
  nsisdbg::init /NOUNLOAD  &lt;br /&gt;
  ; To start the debugger hidden pass &amp;quot;hidded&amp;quot;&lt;br /&gt;
  ; to the stack like this:&lt;br /&gt;
  ;   nsisdbg::init /NOUNLOAD &amp;quot;hidden&amp;quot;&lt;br /&gt;
  ; You will be able to show it again by using the&lt;br /&gt;
  ; system menu of the installer. Read about this below.&lt;br /&gt;
&lt;br /&gt;
  ; old fashion way (pre-2.0)&lt;br /&gt;
  ;   GetTempFileName $9 ; $9 will globally be used in the script&lt;br /&gt;
  ;   File /oname=$9 ${NSISDIR}\Plugins\nsisdbg.dll&lt;br /&gt;
  ;   CallInstDLL $9 /NOUNLOAD init&lt;br /&gt;
&lt;br /&gt;
  ; optionally set a few option by calling setoption&lt;br /&gt;
  nsisdbg::setoption /NOUNLOAD &amp;quot;notifymsgs&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  ; read more about the setoption function below&lt;br /&gt;
FunctionEnd&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
== Use the debug log ==&lt;br /&gt;
Now as you have the debugger up and running, let&#039;s use the debug log feature.&lt;br /&gt;
Call sendtolog like in this example&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
  nsisdbg::sendtolog /NOUNLOAD &amp;quot;Value of $$1 is $1&amp;quot;&lt;br /&gt;
  ; Only push one string. Subsequent strings will be left on the stack.&lt;br /&gt;
&lt;br /&gt;
  ; old fashion way (pre-2.0)&lt;br /&gt;
  Push &amp;quot;Value of $$1 is $1&amp;quot;&lt;br /&gt;
  CallInstDLL $9 /NOUNLOAD sendtolog&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=Nsisdbg_plug-in&amp;diff=4313</id>
		<title>Nsisdbg plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=Nsisdbg_plug-in&amp;diff=4313"/>
		<updated>2005-07-03T19:47:38Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|saivert}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[[File:Exe.gif]] [http://saivert.inthegray.com/download.php?get=Li91cGxvYWRzL25zaXMvbnNpcy1kZWJ1Z2dlci5leGU= nsis-debugger.exe] (275 KB)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/others/nsis-debugger.exe nsis-debugger.exe] (275 KB) (Mirror #2)&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
I have created a new debug tool for NSIS. It&#039;s called NSIS Debugger and&lt;br /&gt;
you can download it from my homepage below.&lt;br /&gt;
&lt;br /&gt;
NSIS Debugger is a NSIS plugin which allows you to debug&lt;br /&gt;
your NSIS installers. The plugin will create a dialog which will be displayed&lt;br /&gt;
alongside the NSIS window. The first thing you will get familiar with is the tabbed pages.&lt;br /&gt;
Use them to switch between variable list, stack view, debug log, config. and about page.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
Using the variable list which is on the first tab page&lt;br /&gt;
you can change all the variables, clear them, keep (save for later use) and restore them&lt;br /&gt;
(from a previous keep operation). To edit a variable simply use the in-place edit box by clicking a variable.&lt;br /&gt;
The stack view gives you a list of the strings pushed on the stack. You can pop them off it,&lt;br /&gt;
push more strings to it and clear the entire stack. You can edit a stack item simply by clicking it and use&lt;br /&gt;
the in-place editbox.&lt;br /&gt;
NSIS Debugger has a debug log which you can add entries to by calling a function&lt;br /&gt;
in your installer script.&lt;br /&gt;
&lt;br /&gt;
To install the plugin, simply copy it to the plugins folder under your NSIS folder.&lt;br /&gt;
&lt;br /&gt;
This version of NSIS Debugger has only been tested with NSIS 2.&lt;br /&gt;
It should work perfectly fine with older versions too.&lt;br /&gt;
&lt;br /&gt;
== How to use ==&lt;br /&gt;
&lt;br /&gt;
Initialization&lt;br /&gt;
The first thing you have to do to use the debugger is to&lt;br /&gt;
set up a couple of lines in the .onGUIInit callback function in the script.&lt;br /&gt;
You will also need to put a line in the .onGUIEnd callback function as well&lt;br /&gt;
(this is covered below).&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
Function .onGUIInit&lt;br /&gt;
&lt;br /&gt;
  InitPluginsDir&lt;br /&gt;
  ; Remember to include the &amp;quot;/NOUNLOAD&amp;quot; option.&lt;br /&gt;
  ; This is to keep the debugger running.&lt;br /&gt;
  nsisdbg::init /NOUNLOAD  &lt;br /&gt;
  ; To start the debugger hidden pass &amp;quot;hidded&amp;quot;&lt;br /&gt;
  ; to the stack like this:&lt;br /&gt;
  ;   nsisdbg::init /NOUNLOAD &amp;quot;hidden&amp;quot;&lt;br /&gt;
  ; You will be able to show it again by using the&lt;br /&gt;
  ; system menu of the installer. Read about this below.&lt;br /&gt;
&lt;br /&gt;
  ; old fashion way (pre-2.0)&lt;br /&gt;
  ;   GetTempFileName $9 ; $9 will globally be used in the script&lt;br /&gt;
  ;   File /oname=$9 ${NSISDIR}\Plugins\nsisdbg.dll&lt;br /&gt;
  ;   CallInstDLL $9 /NOUNLOAD init&lt;br /&gt;
&lt;br /&gt;
  ; optionally set a few option by calling setoption&lt;br /&gt;
  nsisdbg::setoption /NOUNLOAD &amp;quot;notifymsgs&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  ; read more about the setoption function below&lt;br /&gt;
FunctionEnd&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
== Use the debug log ==&lt;br /&gt;
Now as you have the debugger up and running, let&#039;s use the debug log feature.&lt;br /&gt;
Call sendtolog like in this example&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
  nsisdbg::sendtolog /NOUNLOAD &amp;quot;Value of $$1 is $1&amp;quot;&lt;br /&gt;
  ; Only push one string. Subsequent strings will be left on the stack.&lt;br /&gt;
&lt;br /&gt;
  ; old fashion way (pre-2.0)&lt;br /&gt;
  Push &amp;quot;Value of $$1 is $1&amp;quot;&lt;br /&gt;
  CallInstDLL $9 /NOUNLOAD sendtolog&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=HelpButton_plug-in&amp;diff=6513</id>
		<title>HelpButton plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=HelpButton_plug-in&amp;diff=6513"/>
		<updated>2005-07-03T19:44:05Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|DrO}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[[Image:Zip.gif]] [http://forums.winamp.com/attachment.php?s=&amp;amp;postid=1143621 Helpbutton_v0_9.zip] (73 KB)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/others/helpbutton_v0_9.zip Helpbutton_v0_9.zip] (73 KB) (Mirror #2)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://forums.winamp.com/showthread.php?s=&amp;amp;threadid=149292 Forums Topic]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&#039;&#039;&#039;Version:&#039;&#039;&#039; 0.9&lt;br /&gt;
&lt;br /&gt;
Now you can have help support at the click of a button or a press of the key. This plugin will allow you to click on customisable button or to press the &#039;F1&#039; key to open a information window which you decide what it is that you will show.&lt;br /&gt;
&lt;br /&gt;
You can view plain text, rich text or html (support is basic at the moment) and you can use files to store the information in (ideal for rich text and html!).&lt;br /&gt;
&lt;br /&gt;
The current features are:&lt;br /&gt;
&lt;br /&gt;
*add a button onto a page where you want it to go (resizes to the text)&lt;br /&gt;
*define your own button text e.g. &amp;quot;Help&amp;quot; or &amp;quot;Readme...&amp;quot; or hide it if you want&lt;br /&gt;
*show text you set in the script or use a file&lt;br /&gt;
*support for plain text, rich text and not forgetting html files&lt;br /&gt;
*opens the information when pressing &#039;F1&#039;&lt;br /&gt;
*works on a per page method and it is possible to get a button shown after installation has happened :o)&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;::show&amp;lt;/nowiki&amp;gt; /NOUNLOAD (x, y) button_text window_title window_text [option1 option2]&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; /NOUNLOAD&lt;br /&gt;
: please note that &#039;&#039;&#039;THIS IS &amp;lt;u&amp;gt;NEEDED&amp;lt;/u&amp;gt;&#039;&#039;&#039; otherwise the installer is likely to crash or the button will not work or be correctly removed! (This is due to the way the button is implemented, a work around was possible but when run under NT4 the plugin would crash.)&lt;br /&gt;
&lt;br /&gt;
; (x, y)&lt;br /&gt;
: this sets the top left corner of the button with respect to the installer&#039;s top left corner&lt;br /&gt;
&lt;br /&gt;
; button_text&lt;br /&gt;
: this is the text that is displayed on the button with the button resizing to allow it to correctly appear. if no text is passed in then the button will be hidden&lt;br /&gt;
&lt;br /&gt;
; window_title&lt;br /&gt;
: this is what the information window will display&lt;br /&gt;
&lt;br /&gt;
; window_text&lt;br /&gt;
: this the text that the window will show which can be text in the script or using /file= or /html= can specify a file to be used (full path to the file)&lt;br /&gt;
&lt;br /&gt;
; &#039;&#039;&#039;option1&#039;&#039;&#039; and &#039;&#039;&#039;option2&#039;&#039;&#039;&lt;br /&gt;
: if using text files or text in the script then there are two optional settings currently available&lt;br /&gt;
&lt;br /&gt;
:; wrap&lt;br /&gt;
:: this will turn wordwrapping of the window on (default is &#039;&#039;&#039;off&#039;&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
:; font&lt;br /&gt;
:: if using plain text then this sets the font size to use (currently the installer&#039;s font is used for the window text) (default is the current installer font size)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;::end&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this takes no parameters and &#039;&#039;&#039;MUST&#039;&#039;&#039; be used once you have finished using the feature on your page or the best option is when the installer exits and is best to use .onGUIend (or the MUI eqivalent).&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t do this then it is unlikely that the installer will crash &amp;lt;u&amp;gt;but&amp;lt;/u&amp;gt; the dll will not be unloaded and so will stay on the hard drive which is not friendly to the person using the installer ;o)&lt;br /&gt;
&lt;br /&gt;
== TODO List ==&lt;br /&gt;
* better / tidier example of the code&lt;br /&gt;
* better control over the font to use with text files&lt;br /&gt;
* other suggestions :o)&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=RfshDktp_plug-in&amp;diff=4859</id>
		<title>RfshDktp plug-in</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=RfshDktp_plug-in&amp;diff=4859"/>
		<updated>2005-07-03T19:40:22Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|scully13}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&amp;lt;attach&amp;gt;Rfshdktp.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://home.swbell.net/andygib/rfshdktp.zip Rfshdktp.zip] (3 KB) (Mirror #1)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/others/rfshdktp.zip Rfshdktp.zip] (3 KB) (Mirror #2)&lt;br /&gt;
&lt;br /&gt;
The zip file contains the DLL, the VC++ 6.0 source code and an example NSIS script for using the DLL. The script has an example of when the desktop shortcuts get messed up and need refreshing.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The refresh desktop plugin does just what it says. A few people said they were able to do it using a SendMessage but that never seemed to work for what I needed it for. From time to time Windows seemed to have a bug when creating a desktop shortcut. It would cause an extra shortcut to show up on the desktop that wasn&#039;t valid. Hitting F5 or right-clicking and choosing Refresh always made it go away so I made this DLL to handle that.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
  ; call the DLL to refresh the desktop&lt;br /&gt;
  rfshdktp::refreshDesktop&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-scully13&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=MD5_plugin&amp;diff=5206</id>
		<title>MD5 plugin</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=MD5_plugin&amp;diff=5206"/>
		<updated>2005-07-03T17:58:30Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Sample Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
Download:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;attach&amp;gt;Md5dll.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/md5dll/md5dll.0.4.zip Md5dll.0.4.zip] (13 KB) (Mirror #1)&lt;br /&gt;
&lt;br /&gt;
[http://www.darklogic.org/win32/nsis/plugins/md5dll/ Older Versions of MD5 plugin]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
Generates a md5 value from either a string or contents of specified file.&lt;br /&gt;
&lt;br /&gt;
Original:  MD5 Plugin DLL by Matthew &amp;quot;IGx89&amp;quot; Lieder, derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm&lt;br /&gt;
&lt;br /&gt;
== Sample Usage ==&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
OutFile &amp;quot;md5test.exe&amp;quot;&lt;br /&gt;
Section &amp;quot;&amp;quot;&lt;br /&gt;
  #generate MD5sum of string&lt;br /&gt;
  md5dll::GetMD5String &amp;quot;md5me&amp;quot;&lt;br /&gt;
  Pop $0&lt;br /&gt;
  DetailPrint &amp;quot;md5: [$0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # generate MD5sum of file&lt;br /&gt;
  md5dll::GetMD5File &amp;quot;${NSISDIR}\makensis.exe&amp;quot;&lt;br /&gt;
  Pop $0&lt;br /&gt;
  DetailPrint &amp;quot;md5: [$0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  #generate random MD5sum&lt;br /&gt;
  md5dll::GetMD5Random&lt;br /&gt;
  Pop $0&lt;br /&gt;
  DetailPrint &amp;quot;md5: [$0]&amp;quot;&lt;br /&gt;
SectionEnd&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Versions History ==&lt;br /&gt;
;0.4&lt;br /&gt;
::KJD (2005):&lt;br /&gt;
::*Added dual name to exports for backwards compatibility.&lt;br /&gt;
;0.3&lt;br /&gt;
::Shengalts Aleksander aka Instructor (2005):&lt;br /&gt;
::*New command: &amp;quot;GetMD5Random&amp;quot;.&lt;br /&gt;
::*Changed names: &amp;quot;GetFileMD5&amp;quot; -&amp;gt; &amp;quot;GetMD5File&amp;quot;, &amp;quot;GetMD5&amp;quot; -&amp;gt; &amp;quot;GetMD5String&amp;quot;.&lt;br /&gt;
::*Fixed: string length error.&lt;br /&gt;
;0.2&lt;br /&gt;
::Davy Durham (2004):&lt;br /&gt;
::*MD5.cpp fix (correct for loop used to replace memset, exceeded bounds).&lt;br /&gt;
;0.1&lt;br /&gt;
::KJD (2004):&lt;br /&gt;
::*Modified to reduce size and use exdll.h (reduced to about 6KB uncompressed, by removing CRTL dependency).&lt;br /&gt;
;Original&lt;br /&gt;
::Matthew &amp;quot;IGx89&amp;quot; Lieder:&lt;br /&gt;
::*Original plugin Author.&lt;br /&gt;
::Sunjammer (12th May 2002):&lt;br /&gt;
::*Original usage notes and example script.&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=MD5_plugin&amp;diff=4302</id>
		<title>MD5 plugin</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=MD5_plugin&amp;diff=4302"/>
		<updated>2005-07-03T15:53:48Z</updated>

		<summary type="html">&lt;p&gt;PerditionC: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{PageAuthor|PerditionC}}&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&amp;lt;attach&amp;gt;Md5dll.0.3.zip&amp;lt;/attach&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Zip.gif]] [http://www.darklogic.org/win32/nsis/plugins/md5dll/md5dll.0.4.zip Md5dll.0.4.zip] (14 KB) (Mirror #1)&lt;br /&gt;
&lt;br /&gt;
[http://www.darklogic.org/win32/nsis/plugins/md5dll/ Older Versions of MD5 plugin]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
Generates a md5 value from either a string or contents of specified file.&lt;br /&gt;
&lt;br /&gt;
Original:  MD5 Plugin DLL by Matthew &amp;quot;IGx89&amp;quot; Lieder, derived from the RSA Data Security, Inc. MD5 Message-Digest Algorithm&lt;br /&gt;
&lt;br /&gt;
== Sample Usage ==&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
OutFile &amp;quot;md5test.exe&amp;quot;&lt;br /&gt;
Section &amp;quot;&amp;quot;&lt;br /&gt;
  md5dll::GetMD5String &amp;quot;md5me&amp;quot;&lt;br /&gt;
  Pop $0&lt;br /&gt;
  DetailPrint &amp;quot;md5: [$0]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  md5dll::GetMD5File &amp;quot;${NSISDIR}\makensis.exe&amp;quot;&lt;br /&gt;
  Pop $0&lt;br /&gt;
  DetailPrint &amp;quot;md5: [$0]&amp;quot;&lt;br /&gt;
SectionEnd&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugins]]&lt;/div&gt;</summary>
		<author><name>PerditionC</name></author>
	</entry>
</feed>