<?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=Set_Taskbar_button_progress</id>
	<title>Set Taskbar button progress - 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=Set_Taskbar_button_progress"/>
	<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=Set_Taskbar_button_progress&amp;action=history"/>
	<updated>2026-04-07T08:26:13Z</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=Set_Taskbar_button_progress&amp;diff=18608&amp;oldid=prev</id>
		<title>ZeBoxx: /* The Script Code / Header */</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=Set_Taskbar_button_progress&amp;diff=18608&amp;oldid=prev"/>
		<updated>2010-06-14T03:19:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;The Script Code / Header&lt;/span&gt;&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 03:19, 14 June 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-l107&quot;&gt;Line 107:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 107:&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;         *i .s)&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;         *i .s)&amp;quot;&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;       Pop $ITaskbarList3&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;       Pop $ITaskbarList3&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;	&lt;/del&gt;${Else}&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;    &lt;/ins&gt;${Else}&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;	  &lt;/del&gt;StrCpy $ITaskbarList3 0&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;      &lt;/ins&gt;StrCpy $ITaskbarList3 0&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;	&lt;/del&gt;${EndIf}&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;    &lt;/ins&gt;${EndIf}&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;   !endif&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;   !endif&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;!macroend&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;!macroend&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key n22049_wiki-wiki_:diff::1.12:old-18606:rev-18608 --&gt;
&lt;/table&gt;</summary>
		<author><name>ZeBoxx</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=Set_Taskbar_button_progress&amp;diff=18606&amp;oldid=prev</id>
		<title>ZeBoxx: /* Description */</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=Set_Taskbar_button_progress&amp;diff=18606&amp;oldid=prev"/>
		<updated>2010-06-13T22:06:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Description&lt;/span&gt;&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 22:06, 13 June 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-l8&quot;&gt;Line 8:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 8:&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;Instead, it is intended for pages where taskbar progress indication is desired&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;Instead, it is intended for pages where taskbar progress indication is desired&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;without use of a dialog progressbar, and for functionality not offered by the&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;without use of a dialog progressbar, and for functionality not offered by the&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;TaskbarProgres &lt;/del&gt;plug-in at this time.&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;TaskbarProgress &lt;/ins&gt;plug-in at this time.&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;This header is scripting-friendly and does not require initialization, Windows version detection, or clean-up.&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;This header is scripting-friendly and does not require initialization, Windows version detection, or clean-up.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key n22049_wiki-wiki_:diff::1.12:old-18604:rev-18606 --&gt;
&lt;/table&gt;</summary>
		<author><name>ZeBoxx</name></author>
	</entry>
	<entry>
		<id>https://nsis.sourceforge.io/mediawiki/index.php?title=Set_Taskbar_button_progress&amp;diff=18604&amp;oldid=prev</id>
		<title>ZeBoxx: Created page with &#039;== Description == Provides control over the progress indicator available through [http://social.msdn.microsoft.com/Search/en-us?query=ITaskBarList3 ITaskBarList3], available from…&#039;</title>
		<link rel="alternate" type="text/html" href="https://nsis.sourceforge.io/mediawiki/index.php?title=Set_Taskbar_button_progress&amp;diff=18604&amp;oldid=prev"/>
		<updated>2010-06-13T22:01:01Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;== Description == Provides control over the progress indicator available through [http://social.msdn.microsoft.com/Search/en-us?query=ITaskBarList3 ITaskBarList3], available from…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Description ==&lt;br /&gt;
Provides control over the progress indicator available through [http://social.msdn.microsoft.com/Search/en-us?query=ITaskBarList3 ITaskBarList3], available from Windows 7.&lt;br /&gt;
&lt;br /&gt;
This header is not intended as a replacement for the [[TaskbarProgress plug-in]].&lt;br /&gt;
&lt;br /&gt;
The TaskbarProgress plug-in can automatically handle progress display on dialogs with a progressbar, most typically the InstFiles page.&lt;br /&gt;
&lt;br /&gt;
Instead, it is intended for pages where taskbar progress indication is desired&lt;br /&gt;
without use of a dialog progressbar, and for functionality not offered by the&lt;br /&gt;
TaskbarProgres plug-in at this time.&lt;br /&gt;
&lt;br /&gt;
This header is scripting-friendly and does not require initialization, Windows version detection, or clean-up.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Usage of this header has been made to be as simple as possible.&lt;br /&gt;
* Include this header in your sript.&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;!include &amp;quot;TBProgress.nsh&amp;quot;&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
* Call the desired command.  For example, for 50% PROGRESS:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;${TBProgress} 50&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
The commands themselves ensure that the ITaskBarList3 interface has been created and is valid for use - so you can use these commands regardless of Windows platform, and without having to worry about initialization and whether or not your installer is running silently.&lt;br /&gt;
&lt;br /&gt;
There is one caveat: You should not use these commands -before- a taskbar button conceivably can be displayed.  I.e. do not use these commands in .onInit.  .onGUIInit is the earliest moment that these commands may be used.&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
The following commands are available:&lt;br /&gt;
&lt;br /&gt;
=== ${TBProgress} Value ===&lt;br /&gt;
Shorthand to setting the current progress as Value percentage.&lt;br /&gt;
&lt;br /&gt;
* You should call this command whenever a process with known progress takes place within your installer.&lt;br /&gt;
* Overrides &amp;#039;&amp;#039;&amp;#039;${TBProgress_State} Indeterminate&amp;#039;&amp;#039;&amp;#039; and sets &amp;#039;&amp;#039;&amp;#039;${TBProgress_State} Normal&amp;#039;&amp;#039;&amp;#039; by design of ITaskBarList3.&lt;br /&gt;
* Can be used under &amp;#039;&amp;#039;&amp;#039;${TBProgress_State Paused&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;${TBProgress_State} Error&amp;#039;&amp;#039;&amp;#039; states, although this is not recommended as it will confuse end-users.&lt;br /&gt;
&lt;br /&gt;
=== ${TBProgress_Progress} Value MaxValue ===&lt;br /&gt;
Sets the current progress to Value as a portion of MaxValue&lt;br /&gt;
* This command is provided in case you need exact control over the progress value, allowing you to set a custom maximum value.&lt;br /&gt;
&lt;br /&gt;
=== ${TBProgress_State} NoProgress ===&lt;br /&gt;
Returns the taskbar button to a normal state (no progressbar).&lt;br /&gt;
&lt;br /&gt;
* You should call this command whenever you are done showing progress.&lt;br /&gt;
* You are not required to call this command before exiting the installer.&lt;br /&gt;
&lt;br /&gt;
=== ${TBProgress_State} Normal ===&lt;br /&gt;
Sets the taskbar button to a normal (green) progressbar state.&lt;br /&gt;
&lt;br /&gt;
* You may call this command to end a &amp;#039;&amp;#039;&amp;#039;${TBProgress_State} Paused&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;${TBProgress_State} Error&amp;#039;&amp;#039;&amp;#039; command state and return to a regular state.&lt;br /&gt;
&lt;br /&gt;
=== ${TBProgress_State} Paused ===&lt;br /&gt;
Sets the taskbar button to a paused (yellow) progressbar state.&lt;br /&gt;
&lt;br /&gt;
* You should call this command whenever progress is paused due to an event that requires user input.&lt;br /&gt;
* You should call &amp;#039;&amp;#039;&amp;#039;${TBProgress_State} Normal&amp;#039;&amp;#039;&amp;#039; once the event has passed and progress will continue.&lt;br /&gt;
* You should call &amp;#039;&amp;#039;&amp;#039;${TBProgress_State} NoProgress&amp;#039;&amp;#039;&amp;#039; once the event has passed and progress will NOT continue.&lt;br /&gt;
&lt;br /&gt;
=== ${TBProgress_State} Error ===&lt;br /&gt;
Sets the taskbar button to an error (red) progressbar state.&lt;br /&gt;
&lt;br /&gt;
* You should call this command whenever progress has halted without hope for continuation.&lt;br /&gt;
* You should call &amp;#039;&amp;#039;&amp;#039;${TBProgress_State} NoProgress&amp;#039;&amp;#039;&amp;#039; once this indication is no longer required and the process for which you were indicating progress has been halted.&lt;br /&gt;
* Although you may continue progress within this state, or revert to a &amp;#039;&amp;#039;&amp;#039;${TBProgress_State} Normal&amp;#039;&amp;#039;&amp;#039; state, this is not recommended as it will confuse end-users.&lt;br /&gt;
&lt;br /&gt;
=== ${TBProgress_State} Indeterminate ===&lt;br /&gt;
Sets the taskbar button to an indeterminate (green marquee) progressbar state.&lt;br /&gt;
&lt;br /&gt;
* You should call this command whenever a process with UNKNOWN progress takes place within your installer which must complete in order for your installer to continue.  For example, if you are running a secondary installer from your own installer, and cannot get its exact progress, use this command to show the user that the installer is performing work.&lt;br /&gt;
&lt;br /&gt;
=== ${TBProgress_Init} ===&lt;br /&gt;
Initializes the ITaskBarList3 interface, which is stored in the &amp;#039;&amp;#039;$ITaskBarList3&amp;#039;&amp;#039; variable.&lt;br /&gt;
&lt;br /&gt;
* This command is provided for programmers who wish to work directly with the ITaskBarList3 COM interface.&lt;br /&gt;
* You are not required to call this command in order to use the other commands - they all call this command internally and its code is only evaluated if not already done so.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The Script Code / Header ==&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
!include &amp;quot;LogicLib.nsh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
!ifndef CLSCTX_INPROC_SERVER&lt;br /&gt;
    !define CLSCTX_INPROC_SERVER  1&lt;br /&gt;
!endif&lt;br /&gt;
&lt;br /&gt;
!define CLSID_ITaskbarList    {56fdf344-fd6d-11d0-958a-006097c9a090}&lt;br /&gt;
&lt;br /&gt;
!define IID_ITaskbarList3     {ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf}&lt;br /&gt;
!define ITaskbarList3-&amp;gt;SetProgressState      $ITaskbarList3-&amp;gt;10&lt;br /&gt;
!define ITaskbarList3-&amp;gt;SetProgressValue      $ITaskbarList3-&amp;gt;9&lt;br /&gt;
&lt;br /&gt;
!define TBPF_NOPROGRESS       0x00000000 ; Normal state / no progress bar&lt;br /&gt;
!define TBPF_INDETERMINATE    0x00000001 ; Marquee style progress bar&lt;br /&gt;
!define TBPF_NORMAL           0x00000002 ; Standard progress bar&lt;br /&gt;
!define TBPF_ERROR            0x00000004 ; Red taskbar button to indicate an error occurred&lt;br /&gt;
!define TBPF_PAUSED           0x00000008 ; Yellow taskbar button to indicate user attention&lt;br /&gt;
                                         ; (input) is required to resume progress&lt;br /&gt;
&lt;br /&gt;
Var ITaskbarList3&lt;br /&gt;
&lt;br /&gt;
!macro TBProgress_Init&lt;br /&gt;
  !ifndef TBProgressInitialized&lt;br /&gt;
    !define TBProgressInitialized&lt;br /&gt;
    ${Unless} ${Silent}&lt;br /&gt;
      System::Call &amp;quot;ole32::CoCreateInstance( \&lt;br /&gt;
        g &amp;#039;${CLSID_ITaskbarList}&amp;#039;, \&lt;br /&gt;
        i 0, \&lt;br /&gt;
        i ${CLSCTX_INPROC_SERVER}, \&lt;br /&gt;
        g &amp;#039;${IID_ITaskbarList3}&amp;#039;, \&lt;br /&gt;
        *i .s)&amp;quot;&lt;br /&gt;
      Pop $ITaskbarList3&lt;br /&gt;
	${Else}&lt;br /&gt;
	  StrCpy $ITaskbarList3 0&lt;br /&gt;
	${EndIf}&lt;br /&gt;
  !endif&lt;br /&gt;
!macroend&lt;br /&gt;
!define TBProgress_Init `!insertmacro TBProgress_Init`&lt;br /&gt;
&lt;br /&gt;
!macro TBProgress_Progress Val Max&lt;br /&gt;
  ${TBProgress_Init}&lt;br /&gt;
  ${If} $ITaskbarList3 &amp;lt;&amp;gt; 0&lt;br /&gt;
      System::Call &amp;quot;${ITaskbarList3-&amp;gt;SetProgressValue}(i$HWNDPARENT, l${Val}, l${Max})&amp;quot;&lt;br /&gt;
  ${EndIf}&lt;br /&gt;
!macroend&lt;br /&gt;
!define TBProgress_Progress `!insertmacro TBProgress_Progress`&lt;br /&gt;
&lt;br /&gt;
!macro TBProgress Val&lt;br /&gt;
  ${TBProgress_Progress} ${Val} 100&lt;br /&gt;
!macroend&lt;br /&gt;
!define TBProgress `!insertmacro TBProgress`&lt;br /&gt;
&lt;br /&gt;
!macro TBProgress_State State&lt;br /&gt;
  ${TBProgress_Init}&lt;br /&gt;
  ${If} $ITaskbarList3 &amp;lt;&amp;gt; 0&lt;br /&gt;
      System::Call &amp;quot;${ITaskbarList3-&amp;gt;SetProgressState}(i$HWNDPARENT, i${TBPF_${State}})&amp;quot;&lt;br /&gt;
  ${EndIf}&lt;br /&gt;
!macroend&lt;br /&gt;
!define TBProgress_State `!insertmacro TBProgress_State`&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
Read the MSDN [http://msdn.microsoft.com/en-us/library/aa511446.aspx#progressbars guidelines on proper (taskbar) progress usage].&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
:It may be tempting to use a loop to flash a taskbar button yellow. However, this is&lt;br /&gt;
:# highly annoying for end-users&lt;br /&gt;
:# is not the correct command. ( See FlashWindowEx on MSDN instead )&lt;br /&gt;
&lt;br /&gt;
Another example:&lt;br /&gt;
:It may be tempting to show overall installer progress as x/N pages.  Don&amp;#039;t.&lt;br /&gt;
&lt;br /&gt;
When using the TBProgress or TBProgress_Progress commands, consider [[Change caption of installer at runtime|changing the caption of the installer]] to indicate the progress value as a percentage.&lt;br /&gt;
&lt;br /&gt;
When using the TBProgress_Indeterminate state, consider also using the [[SetCursor plug-in]] to set a WAIT cursor ONLY IF appropriate! (e.g. if you use a command which may significantly affect the system&amp;#039;s responsiveness)&lt;br /&gt;
&lt;br /&gt;
When using the TBProgress_Error state, consider using the [[NotifyIcon plug-in]] to alert the user to the error via the notification area of the taskbar.&lt;br /&gt;
&lt;br /&gt;
You &amp;#039;&amp;#039;may&amp;#039;&amp;#039; use TBProgress_Error to indicate that the user cannot continue installation, even if you are not indicating any progress.  For example: if your installer cannot continue due to any missing prerequisites, you may set a red taskbar button using:&lt;br /&gt;
&amp;lt;highlight-nsis&amp;gt;&lt;br /&gt;
${TBProgress_State} Error ; Set error state (red progressbar)&lt;br /&gt;
${TBProgress} 100 ; Set progress to 100% to cover progressbar button&lt;br /&gt;
&amp;lt;/highlight-nsis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If all you need is to show InstFiles progress, please do use the [[TaskbarProgress plug-in]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Code Examples]]&lt;/div&gt;</summary>
		<author><name>ZeBoxx</name></author>
	</entry>
</feed>