<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://nsis.sourceforge.io/mediawiki/index.php?action=history&amp;feed=atom&amp;title=AddRemove_Programs_IsInstalled_Test</id>
	<title>AddRemove Programs IsInstalled Test - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://nsis.sourceforge.io/mediawiki/index.php?action=history&amp;feed=atom&amp;title=AddRemove_Programs_IsInstalled_Test"/>
	<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=AddRemove_Programs_IsInstalled_Test&amp;action=history"/>
	<updated>2026-04-30T13:20:34Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=AddRemove_Programs_IsInstalled_Test&amp;diff=18005&amp;oldid=prev</id>
		<title>Zinthose: /* ARP_IsInstalled.nsh */  Fixed bug</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=AddRemove_Programs_IsInstalled_Test&amp;diff=18005&amp;oldid=prev"/>
		<updated>2010-01-12T23:04:02Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;ARP_IsInstalled.nsh: &lt;/span&gt;  Fixed bug&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;â† Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:04, 12 January 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l113&quot;&gt;Line 113:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 113:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                 StrCpy $_TEMP_VAR_RegExp    `${_b}`&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                 StrCpy $_TEMP_VAR_RegExp    `${_b}`&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;!define &lt;/del&gt;!insertmacro _IncreaseCounter&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;                 !insertmacro _IncreaseCounter&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;              ## Start ARP Loop&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;              ## Start ARP Loop&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key n22049_wiki-wiki_:diff::1.12:old-18004:rev-18005 --&gt;
&lt;/table&gt;</summary>
		<author><name>Zinthose</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=AddRemove_Programs_IsInstalled_Test&amp;diff=18004&amp;oldid=prev</id>
		<title>Zinthose: /* NTProfiles.nsh */  Section renamed to proper file name &quot;ARP_IsInstalled.nsh&quot;</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=AddRemove_Programs_IsInstalled_Test&amp;diff=18004&amp;oldid=prev"/>
		<updated>2010-01-12T04:01:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;NTProfiles.nsh: &lt;/span&gt;  Section renamed to proper file name &amp;quot;ARP_IsInstalled.nsh&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;â† Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 04:01, 12 January 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l38&quot;&gt;Line 38:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 38:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/highlight-nsis&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/highlight-nsis&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;NTProfiles&lt;/del&gt;.nsh ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ARP_IsInstalled&lt;/ins&gt;.nsh ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;highlight-nsis&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;highlight-nsis&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!warning &amp;quot;ARP_IsInstalled is an experiment and likely broken... make sure you test it thoroughly before using in a production environment!&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;!warning &amp;quot;ARP_IsInstalled is an experiment and likely broken... make sure you test it thoroughly before using in a production environment!&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key n22049_wiki-wiki_:diff::1.12:old-18003:rev-18004 --&gt;
&lt;/table&gt;</summary>
		<author><name>Zinthose</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=AddRemove_Programs_IsInstalled_Test&amp;diff=18003&amp;oldid=prev</id>
		<title>Zinthose: Assigned to Category</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=AddRemove_Programs_IsInstalled_Test&amp;diff=18003&amp;oldid=prev"/>
		<updated>2010-01-12T00:35:00Z</updated>

		<summary type="html">&lt;p&gt;Assigned to Category&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;â† Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:35, 12 January 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l161&quot;&gt;Line 161:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 161:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Apologies ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Apologies ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The code is a bit of a mess, and I&amp;#039;m still a n00b  ;o)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The code is a bit of a mess, and I&amp;#039;m still a n00b  ;o)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;!-- &lt;/del&gt;[[Category:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Disk, Path &amp;amp; File &lt;/del&gt;Functions]] &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;--&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Flow Control &lt;/ins&gt;Functions]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key n22049_wiki-wiki_:diff::1.12:old-18002:rev-18003 --&gt;
&lt;/table&gt;</summary>
		<author><name>Zinthose</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=AddRemove_Programs_IsInstalled_Test&amp;diff=18002&amp;oldid=prev</id>
		<title>Zinthose: Initial Release</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=AddRemove_Programs_IsInstalled_Test&amp;diff=18002&amp;oldid=prev"/>
		<updated>2010-01-12T00:21:15Z</updated>

		<summary type="html">&lt;p&gt;Initial Release&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{PageAuthor|Zinthose}}&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
Header/Include to extent the LogicLib to perform a simple search for installed applications based on the Display Name.  &lt;br /&gt;
&lt;br /&gt;
NSISpcre plug-in is supported for regular expression pattern matching but is not required for simple explicit text matching.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Default configuration is to attempt to load the NSISpcre plug-in but fail over to explicit pattern matching when the plug-in is not available.&lt;br /&gt;
&lt;br /&gt;
Upon a successful match, the ${ARPRegPath} variable is populated with the registry path to the identified entry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
## Precompiler Flags&lt;br /&gt;
;    !define ARP_IsInstalled_NoRegExp    #   Disable Regular Expression Support&lt;br /&gt;
;    !define ARP_IsInstalled_RegExpReq   #   Require Regular Expression Support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
!include ARP_IsInstalled.nsh&lt;br /&gt;
&lt;br /&gt;
OutFile ARPTest.exe&lt;br /&gt;
ShowInstDetails show&lt;br /&gt;
&lt;br /&gt;
Section Main&lt;br /&gt;
&lt;br /&gt;
    ## If you need to check the 64bit registry region then use:&lt;br /&gt;
    ;   SetRegView 64&lt;br /&gt;
&lt;br /&gt;
    ## To switch back to the 32bit registry branch use:&lt;br /&gt;
    ;   SetRegView 32&lt;br /&gt;
&lt;br /&gt;
    ${If} ${IsInstalledARP} &amp;quot;(?:Microsoft)? .NET Framework 3.5 SP1&amp;quot;&lt;br /&gt;
        DetailPrint &amp;quot;Found It: ${ARPRegPath}&amp;quot;&lt;br /&gt;
    ${Else}&lt;br /&gt;
        DetailPrint &amp;quot;Darn... Not found!&amp;quot;&lt;br /&gt;
    ${EndIf}&lt;br /&gt;
SectionEnd&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NTProfiles.nsh ==&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
!warning &amp;quot;ARP_IsInstalled is an experiment and likely broken... make sure you test it thoroughly before using in a production environment!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
!verbose push&lt;br /&gt;
!verbose 3&lt;br /&gt;
!include LogicLib.nsh&lt;br /&gt;
!verbose ${LOGICLIB_VERBOSITY}&lt;br /&gt;
&lt;br /&gt;
!ifndef __ARP_IsInstalled__&lt;br /&gt;
!define __ARP_IsInstalled__&lt;br /&gt;
&lt;br /&gt;
## PreCompiler Checks and Prerequisite Checks&lt;br /&gt;
    !ifdef ARP_IsInstalled_NoRegExp &amp;amp; ARP_IsInstalled_RegExpReq&lt;br /&gt;
        !error &amp;quot;It is impossible to both require and disable Regular Expression support!&amp;quot;&lt;br /&gt;
    !endif&lt;br /&gt;
&lt;br /&gt;
    !ifndef ARP_IsInstalled_NoRegExp&lt;br /&gt;
        !ifndef PCRELIB_INCLUDED&lt;br /&gt;
            !ifdef ARP_IsInstalled_RegExpReq&lt;br /&gt;
                !include NSISpcre.nsh&lt;br /&gt;
            !else&lt;br /&gt;
                !include /nonfatal NSISpcre.nsh&lt;br /&gt;
                !ifndef PCRELIB_INCLUDED&lt;br /&gt;
                    !warning &amp;quot;-- NSISpcre Plug-in Required for Regular Expression Support.&amp;quot;&lt;br /&gt;
                    !warning &amp;quot;-- Switching to explicit matching mode.&amp;quot;&lt;br /&gt;
                !endif&lt;br /&gt;
            !endif&lt;br /&gt;
            !ifdef PCRELIB_INCLUDED&lt;br /&gt;
                !ifmacrodef REMatches&lt;br /&gt;
                    !insertmacro REMatches&lt;br /&gt;
                !endif&lt;br /&gt;
            !else&lt;br /&gt;
                !define ARP_IsInstalled_NoRegExp&lt;br /&gt;
            !endif&lt;br /&gt;
        !endif&lt;br /&gt;
    !else&lt;br /&gt;
        !warning &amp;quot;Regular Expression Pattern Matching is disabled! Using explicit matching mode.&amp;quot;&lt;br /&gt;
    !endif&lt;br /&gt;
&lt;br /&gt;
## Temporary Variable Creator&lt;br /&gt;
    !ifmacrondef _TEMP_VAR&lt;br /&gt;
        !macro _TEMP_VAR _VAR&lt;br /&gt;
            !ifndef _TEMP_VAR_${_VAR}&lt;br /&gt;
                !define _TEMP_VAR_${_VAR}&lt;br /&gt;
                Var /GLOBAL _TEMP_VAR_${_VAR}  ; Temporary variable to aid the more elaborate logic tests&lt;br /&gt;
            !endif&lt;br /&gt;
        !macroend&lt;br /&gt;
    !endif&lt;br /&gt;
    &lt;br /&gt;
## Example:&lt;br /&gt;
##      ${If} ${IsInstalledARP} `(?:Microsoft )?Office`&lt;br /&gt;
    !ifmacrondef _IsInstalledARP&lt;br /&gt;
        !macro _IsInstalledARP _a _b _t _f&lt;br /&gt;
            !verbose push&lt;br /&gt;
            !verbose ${LOGICLIB_VERBOSITY}&lt;br /&gt;
            &lt;br /&gt;
            ## Ensure Temporary Variable are Defined&lt;br /&gt;
                !define _TMP_RegPath `SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall`&lt;br /&gt;
                !insertmacro _LOGICLIB_TEMP&lt;br /&gt;
                !insertmacro _TEMP_VAR RegExp&lt;br /&gt;
                !insertmacro _TEMP_VAR RegKey&lt;br /&gt;
                !insertmacro _TEMP_VAR RegEnum&lt;br /&gt;
                &lt;br /&gt;
            ## Special Variable to store found Registry Path&lt;br /&gt;
                !insertmacro _TEMP_VAR ARP_RegPath&lt;br /&gt;
                !ifndef ARPRegPath&lt;br /&gt;
                    !define ARPRegPath $_TEMP_VAR_ARP_RegPath&lt;br /&gt;
                !endif&lt;br /&gt;
                &lt;br /&gt;
            ## Define Variables&lt;br /&gt;
                StrCpy $_TEMP_VAR_RegEnum   0&lt;br /&gt;
                StrCpy $_TEMP_VAR_RegKey    `${_TMP_RegPath}\`&lt;br /&gt;
                StrCpy $_TEMP_VAR_RegExp    `${_b}`&lt;br /&gt;
&lt;br /&gt;
                !define !insertmacro _IncreaseCounter&lt;br /&gt;
&lt;br /&gt;
             ## Start ARP Loop&lt;br /&gt;
             &lt;br /&gt;
                ## Create MAcro Safe Label For start of Do Loop &lt;br /&gt;
                    _LogicLib_Label_DO_${LOGICLIB_COUNTER}:&lt;br /&gt;
                    &lt;br /&gt;
                ## Clear the ${ARPRegPath} Value&lt;br /&gt;
                    StrCpy $_TEMP_VAR_ARP_RegPath &amp;quot;&amp;quot;&lt;br /&gt;
                    &lt;br /&gt;
                ## Enumerate through the Add &amp;amp; Remove Programs Registry Branch to search for the supplied Regular Expression Pattern&lt;br /&gt;
                    EnumRegKey $_TEMP_VAR_RegKey HKLM `${_TMP_RegPath}` $_TEMP_VAR_RegEnum&lt;br /&gt;
                    &lt;br /&gt;
                ## If the Enumerated value is empty then we are at the end of the branch, exit loop &amp;amp; LogicLib Query&lt;br /&gt;
                    StrCmp $_TEMP_VAR_RegKey &amp;quot;&amp;quot; `${_f}`&lt;br /&gt;
                    &lt;br /&gt;
                ## Set the ${ARPRegPath} Value Just in case we have a match&lt;br /&gt;
                    StrCpy $_TEMP_VAR_ARP_RegPath `${_TMP_RegPath}\$_TEMP_VAR_RegKey`&lt;br /&gt;
                    &lt;br /&gt;
                ## Get the Displayname for Our Expression matching&lt;br /&gt;
                    ReadRegStr $_LOGICLIB_TEMP HKLM $_TEMP_VAR_ARP_RegPath &amp;quot;DisplayName&amp;quot;&lt;br /&gt;
                &lt;br /&gt;
                ## Increment the Enumeration counter for the next leaf on the branch&lt;br /&gt;
                    IntOp $_TEMP_VAR_RegEnum $_TEMP_VAR_RegEnum + 1&lt;br /&gt;
                    &lt;br /&gt;
                !ifndef ARP_IsInstalled_NoRegExp&lt;br /&gt;
                    ## LogicLib/NSISpcre Regularexpression query, if success then exit loop/LogicLib Query, Else continue loop&lt;br /&gt;
                        !insertmacro _=~ $_LOGICLIB_TEMP $_TEMP_VAR_RegExp `${_t}` _LogicLib_Label_DO_${LOGICLIB_COUNTER}&lt;br /&gt;
                !else&lt;br /&gt;
                    ## RegEx Free DisplayName check&lt;br /&gt;
                        !insertmacro _== $_LOGICLIB_TEMP $_TEMP_VAR_RegExp `${_t}` _LogicLib_Label_DO_${LOGICLIB_COUNTER}&lt;br /&gt;
                !endif&lt;br /&gt;
                    &lt;br /&gt;
            ## End ARP Loop&lt;br /&gt;
            &lt;br /&gt;
            !undef _TMP_RegPath&lt;br /&gt;
            !verbose pop&lt;br /&gt;
        !macroend&lt;br /&gt;
        !ifndef IsInstalledARP&lt;br /&gt;
            !define IsInstalledARP `&amp;quot;&amp;quot; IsInstalledARP`&lt;br /&gt;
        !endif&lt;br /&gt;
    !endif&lt;br /&gt;
!endif&lt;br /&gt;
!verbose pop&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Apologies ==&lt;br /&gt;
The code is a bit of a mess, and I&amp;#039;m still a n00b  ;o)&lt;br /&gt;
&amp;lt;!-- [[Category:Disk, Path &amp;amp; File Functions]] --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zinthose</name></author>
	</entry>
</feed>