diff --git a/Docs/src/library.but b/Docs/src/library.but
index 97c61bf8..7d3b8e94 100644
--- a/Docs/src/library.but
+++ b/Docs/src/library.but
@@ -1,302 +1,277 @@
-\A{library} DLL/TLB Library Setup
-
-
-\H{library_intro} Introduction
-
-NSIS 2.01 features a new system for the installation and uninstallation of dynamic link libraries (DLL) and type libraries (TLB).
-Using this new system you can handle the complete setup with one single line of code:
-
-\b File copying
-
-\b File copying on reboot
-
-\b Version checks
-
-\b Registration and unregistration
-
-\b Registration and unregistration on reboot
-
-\b Shared DLL counting
-
-\b Windows File Protection checks
-
-The macros are stored in the header file Library.nsh, which should be included in scripts using this system:
-
-\c !include Library.nsh
-
-Note that the library macros are limited on non-Windows platforms. DLL version information is required when compiling on non-Windows platforms.
-
-
-\H{library_install} Library Installation
-
-\S1{} Introduction
-
-The InstallLib macro allows you to install a library. It sets the error flag if something went wrong during library setup.
-
-To ask the user for a reboot, if required, use the Modern UI with a Finish page or use \R{ifrebootflag}{IfRebootFlag} and make your own page or message box.
-
-\S1{} Parameters
-
-\c libtype shared install localfile destfile tempbasedir
-
-\\libtype\\
-
-The type of the library
-
-DLL - Dynamic link library (DLL)\\
-REGDLL - DLL that has to be registered\\
-TLB - Type library or DLL that contains a type LIBRARY\\
-REGDLLTLB - DLL that has to be registered and contains a type library\\
-
-
-\\shared\\
-
-Specify whether the library is shared with other applications
-
-NOTSHARED - The library is not shared\\
-$VARNAME - Variable that is empty when the application is installed for the first time,
- which is when the shared library count will be increased.\\
-
-\\install\\
-
-Specify the installation method
-
-REBOOT_PROTECTED
-
-\b Upgrade the library on reboot when in use (required for system files).
-
-\b Upgrade the library if the file is not protected by Windows File Protection.
-
-NOREBOOT_PROTECTED
-
-\b Warns the user when the library is in use. The user will have to close applications using the library.
-
-\b Upgrade the library if the file is not protected by Windows File Protection.
-
-REBOOT_NOTPROTECTED
-
-\b Upgrade the library on reboot when in use (required for system files).
-
-\b Upgrade the library without checking for Windows File Protection.
-
-NOREBOOT_NOTPROTECTED
-
-\b Warns the user when the library is in use. The user will have to close applications using the library.
-
-\b Upgrade the library without checking for Windows File Protection.
-
-\\localfile\\
-
-Location of the library on the compiler system
-
-\\destfile\\
-
-Location to store the library on the user's system
-
-\\tempbasedir\\
-
-Directory on the user's system to store a temporary file when the system has to be rebooted.
-
-For Windows 9x/ME support, this directory should be on the same volume as the destination file (destfile).
-The Windows temp directory could be located on any volume, so you cannot use this directory.
-
-\S1{} Options
-
-\R{define}{Define} any of the following before inserting the InstallLib macro to modify its behavior as specified.
-
-\S2{} LIBRARY_X64
-
-\b Installs a DLL built for Windows x64.
-
-\b \\Warning:\\ this resets file system redirection.
-
-\S2{} LIBRARY_SHELL_EXTENSION
-
-\b Define this before inserting InstallLib macro to call SHChangeNotify with SHCNE_ASSOCCHANGED after registration.
-
-\b Use this to refresh the shell when installing a shell extension or when changing file associations.
-
-\S2{} LIBRARY_COM
-
-\b Define this before inserting InstallLib macro to call CoFreeUnusedLibraries after registration.
-
-\b Use this for unloading all unnecessary libraries from memory when installing COM libraries.
-
-\S2{} LIBRARY_IGNORE_VERSION
-
-\b Define this before inserting InstallLib macro to ignore version information in the file and always install it, even if it already exists.
-
-\b Use this when an older or specific version is required.
-
-\b Not recommended for DLLs installed to $SYSDIR.
-
-\S1{} Notes
-
-\b If you want to support Windows 9x/ME, you can only use short filenames (8.3).
-
-\b \\Warning:\\ when deploying DLLs, always use redistributable files. Never copy files from your system directory.
-
-\S1{} Example
-
-\S2{} Unshared DLL
-
-\c !insertmacro InstallLib REGDLL NOTSHARED REBOOT_NOTPROTECTED dllname.dll $SYSDIR\dllname.dll $SYSDIR
-
-\S2{} Shared DLL
-
-\c ;Add code here that sets $ALREADY_INSTALLED to a non-zero value if the application is
-\c ;already installed. For example:
-\c
-\c IfFileExists "$INSTDIR\MyApp.exe" 0 new_installation ;Replace MyApp.exe with your application filename
-\c StrCpy $ALREADY_INSTALLED 1
-\c new_installation:
-\c
-\c !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_NOTPROTECTED dllname.dll $SYSDIR\dllname.dll $SYSDIR
-
-\H{library_uninstall} Library Uninstallation
-
-\S1{} Introduction
-
-The UnInstallLib macro allows you to uninstall a library. It sets the error flag if something went wrong during library removal.
-
-\S1{} Parameters
-
-\c libtype shared uninstall file
-
-\\libtype\\
-
-The type of the library
-
-DLL - Dynamic link library (DLL)\\
-REGDLL - DLL that has to be registered\\
-TLB - Type library or DLL that contains a type LIBRARY\\
-REGDLLTLB - DLL that has to be registered and contains a type library\\
-
-
-\\shared\\
-
-Specify whether the library is shared with other applications
-
-NOTSHARED - The library is not shared\\
-SHARED - The library is shared and should be removed if the shared library count
- indicates that the file is not in use anymore..\\
-
-\\uninstall\\
-
-Specify the uninstallation method
-
-NOREMOVE
-
-\b The library should not be removed. You should use this option for common or important
-system files such as the Visual Basic/C++/MFC runtimes.
-
-REBOOT_PROTECTED
-
-\b Remove the library on reboot when in use (required for system files).
-
-\b Remove the library if the file is not protected by Windows File Protection.
-
-NOREBOOT_PROTECTED
-
-\b Warns the user when the library is in use. The user will have to close applications using the library.
-
-\b Remove the library if the file is not protected by Windows File Protection.
-
-REBOOT_NOTPROTECTED
-
-\b Remove the library on reboot when in use (required for system files).
-
-\b Remove the library without checking for Windows File Protection.
-
-NOREBOOT_NOTPROTECTED
-
-\b Warns the user when the library is in use. The user will have to close applications using the library.
-
-\b Remove the library without checking for Windows File Protection.
-
-
-\\file\\
-
-Location of the library
-
-\S1{} Options
-
-\R{define}{Define} any of the following before inserting the UnInstallLib macro to modify its behavior as specified.
-
-\S2{} LIBRARY_X64
-
-\b Uninstalls a DLL built for Windows x64.
-
-\b \\Warning:\\ this resets \R{setregview}{RegSetView} and file system redirection.
-
-\S2{} LIBRARY_SHELL_EXTENSION
-
-\b Define this before inserting UninstallLib macro to call SHChangeNotify with SHCNE_ASSOCCHANGED after unregistration. Use this to refresh the shell when uninstalling a shell extension or when changing file associations.
-
-\S2{} LIBRARY_COM
-
-\b Define this before inserting UninstallLib macro to call CoFreeUnusedLibraries after unregistration. Use this for unloading all unnecessary libraries from memory when uninstalling COM libraries.
-
-\S1{} Example
-
-\c !insertmacro UnInstallLib REGDLL SHARED REBOOT_NOTPROTECTED $SYSDIR\dllname.dll
-
-
-\H{library_vb6} Visual Basic 6 Runtimes
-
-Add this code to your script to install and uninstall the VB6 runtimes.
-
-The correct version of the following files should be stored in your script folder
-(or modify the paths to the local files if you want to use another folder):
-
-\b msvbvm60.dll
-
-\b oleaut32.dll
-
-\b olepro32.dll
-
-\b oleaut32.dll
-
-\b comcat.dll
-
-\b asycfilt.dll
-
-\b stdole2.tlb
-
-A \W{http://support.microsoft.com/default.aspx?scid=kb;en-us;290887}{Microsoft article} that explains how to obtain these files is available.
-
-To ask the user for a reboot, if required, use the Modern UI with a Finish page or use \R{ifrebootflag}{IfRebootFlag} and make your own page or message box.
-
-\c !include Library.nsh
-\c
-\c Var ALREADY_INSTALLED
-\c
-\c Section "-Install VB6 runtimes"
-\c
-\c ;Add code here that sets $ALREADY_INSTALLED to a non-zero value if the application is already installed. For example:
-\c
-\c IfFileExists "$INSTDIR\MyApp.exe" 0 new_installation ;Replace MyApp.exe with your application filename
-\c StrCpy $ALREADY_INSTALLED 1
-\c new_installation:
-\c
-\c !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_NOTPROTECTED "msvbvm60.dll" "$SYSDIR\msvbvm60.dll" "$SYSDIR"
-\c !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED "oleaut32.dll" "$SYSDIR\oleaut32.dll" "$SYSDIR"
-\c !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED "olepro32.dll" "$SYSDIR\olepro32.dll" "$SYSDIR"
-\c !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_PROTECTED "comcat.dll" "$SYSDIR\comcat.dll" "$SYSDIR"
-\c !insertmacro InstallLib DLL $ALREADY_INSTALLED REBOOT_PROTECTED "asycfilt.dll" "$SYSDIR\asycfilt.dll" "$SYSDIR"
-\c !insertmacro InstallLib TLB $ALREADY_INSTALLED REBOOT_PROTECTED "stdole2.tlb" "$SYSDIR\stdole2.tlb" "$SYSDIR"
-\c
-\c SectionEnd
-\c
-\c Section "-un.Uninstall VB6 runtimes"
-\c
-\c !insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\msvbvm60.dll"
-\c !insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\oleaut32.dll"
-\c !insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\olepro32.dll"
-\c !insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\comcat.dll"
-\c !insertmacro UnInstallLib DLL SHARED NOREMOVE "$SYSDIR\asycfilt.dll"
-\c !insertmacro UnInstallLib TLB SHARED NOREMOVE "$SYSDIR\stdole2.tlb"
-\c
-\c SectionEnd
-
-You can use similar code to install common VB6 ActiveX controls (such as the controls for Windows Common Controls).
+\A{library} DLL/TLB Library Setup
+
+
+\H{library_intro} Introduction
+
+The Library header file can be used to setup dynamic link libraries (DLL) and type libraries (TLB).
+If necessary, the following actions will be performed:
+
+\b File copying
+
+\b File copying on reboot
+
+\b Version checks
+
+\b Registration and unregistration
+
+\b Registration and unregistration on reboot
+
+\b Shared DLL counting
+
+\b Windows File Protection checks
+
+The macros are stored in the header file Library.nsh, which should be included in scripts using this system:
+
+\c !include Library.nsh
+
+Note that the library macros are limited on non-Windows platforms. DLL version information is required when compiling on non-Windows platforms.
+
+
+\H{library_install} Library Installation
+
+\S1{} Introduction
+
+The InstallLib macro allows you to install a library. It sets the error flag if something went wrong during library setup.
+
+To ask the user for a reboot, if required, use the Modern UI with a Finish page or use \R{ifrebootflag}{IfRebootFlag} and make your own page or message box.
+
+\S1{} Parameters
+
+\c libtype shared install localfile destfile tempbasedir
+
+\\libtype\\
+
+The type of the library
+
+DLL - Dynamic link library (DLL)\\
+REGDLL - DLL that has to be registered\\
+TLB - Type library or DLL that contains a type LIBRARY\\
+REGDLLTLB - DLL that has to be registered and contains a type library\\
+
+
+\\shared\\
+
+Specify whether the library is shared with other applications
+
+NOTSHARED - The library is not shared\\
+$VARNAME - Variable that is empty when the application is installed for the first time,
+ which is when the shared library count will be increased.\\
+
+\\install\\
+
+Specify the installation method
+
+REBOOT_PROTECTED
+
+\b Upgrade the library on reboot when in use (required for system files).
+
+\b Upgrade the library if the file is not protected by Windows File Protection.
+
+NOREBOOT_PROTECTED
+
+\b Warns the user when the library is in use. The user will have to close applications using the library.
+
+\b Upgrade the library if the file is not protected by Windows File Protection.
+
+REBOOT_NOTPROTECTED
+
+\b Upgrade the library on reboot when in use (required for system files).
+
+\b Upgrade the library without checking for Windows File Protection.
+
+NOREBOOT_NOTPROTECTED
+
+\b Warns the user when the library is in use. The user will have to close applications using the library.
+
+\b Upgrade the library without checking for Windows File Protection.
+
+\\localfile\\
+
+Location of the library on the compiler system
+
+\\destfile\\
+
+Location to store the library on the user's system
+
+\\tempbasedir\\
+
+Directory on the user's system to store a temporary file when the system has to be rebooted.
+
+For Windows 9x/ME support, this directory should be on the same volume as the destination file (destfile).
+The Windows temp directory could be located on any volume, so you cannot use this directory.
+
+\S1{} Options
+
+\R{define}{Define} any of the following before inserting the InstallLib macro to modify its behavior as specified.
+
+\S2{} LIBRARY_X64
+
+\b Installs a DLL built for Windows x64.
+
+\b \\Warning:\\ this resets file system redirection.
+
+\S2{} LIBRARY_SHELL_EXTENSION
+
+\b Define this before inserting InstallLib macro to call SHChangeNotify with SHCNE_ASSOCCHANGED after registration.
+
+\b Use this to refresh the shell when installing a shell extension or when changing file associations.
+
+\S2{} LIBRARY_COM
+
+\b Define this before inserting InstallLib macro to call CoFreeUnusedLibraries after registration.
+
+\b Use this for unloading all unnecessary libraries from memory when installing COM libraries.
+
+\S2{} LIBRARY_IGNORE_VERSION
+
+\b Define this before inserting InstallLib macro to ignore version information in the file and always install it, even if it already exists.
+
+\b Use this when an older or specific version is required.
+
+\b Not recommended for DLLs installed to $SYSDIR.
+
+\S1{} Notes
+
+\b If you want to support Windows 9x/ME, you can only use short filenames (8.3).
+
+\b \\Warning:\\ when deploying DLLs, always use redistributable files. Never copy files from your system directory.
+
+\S1{} Example
+
+\S2{} Unshared DLL
+
+\c !insertmacro InstallLib REGDLL NOTSHARED REBOOT_NOTPROTECTED dllname.dll $SYSDIR\dllname.dll $SYSDIR
+
+\S2{} Shared DLL
+
+\c ;Add code here that sets $ALREADY_INSTALLED to a non-zero value if the application is
+\c ;already installed. For example:
+\c
+\c IfFileExists "$INSTDIR\MyApp.exe" 0 new_installation ;Replace MyApp.exe with your application filename
+\c StrCpy $ALREADY_INSTALLED 1
+\c new_installation:
+\c
+\c !insertmacro InstallLib REGDLL $ALREADY_INSTALLED REBOOT_NOTPROTECTED dllname.dll $SYSDIR\dllname.dll $SYSDIR
+
+\H{library_uninstall} Library Uninstallation
+
+\S1{} Introduction
+
+The UnInstallLib macro allows you to uninstall a library. It sets the error flag if something went wrong during library removal.
+
+\S1{} Parameters
+
+\c libtype shared uninstall file
+
+\\libtype\\
+
+The type of the library
+
+DLL - Dynamic link library (DLL)\\
+REGDLL - DLL that has to be registered\\
+TLB - Type library or DLL that contains a type LIBRARY\\
+REGDLLTLB - DLL that has to be registered and contains a type library\\
+
+
+\\shared\\
+
+Specify whether the library is shared with other applications
+
+NOTSHARED - The library is not shared\\
+SHARED - The library is shared and should be removed if the shared library count
+ indicates that the file is not in use anymore..\\
+
+\\uninstall\\
+
+Specify the uninstallation method
+
+NOREMOVE
+
+\b The library should not be removed. You should use this option for common or important
+system files such as the Visual Basic/C++/MFC runtimes.
+
+REBOOT_PROTECTED
+
+\b Remove the library on reboot when in use (required for system files).
+
+\b Remove the library if the file is not protected by Windows File Protection.
+
+NOREBOOT_PROTECTED
+
+\b Warns the user when the library is in use. The user will have to close applications using the library.
+
+\b Remove the library if the file is not protected by Windows File Protection.
+
+REBOOT_NOTPROTECTED
+
+\b Remove the library on reboot when in use (required for system files).
+
+\b Remove the library without checking for Windows File Protection.
+
+NOREBOOT_NOTPROTECTED
+
+\b Warns the user when the library is in use. The user will have to close applications using the library.
+
+\b Remove the library without checking for Windows File Protection.
+
+
+\\file\\
+
+Location of the library
+
+\S1{} Options
+
+\R{define}{Define} any of the following before inserting the UnInstallLib macro to modify its behavior as specified.
+
+\S2{} LIBRARY_X64
+
+\b Uninstalls a DLL built for Windows x64.
+
+\b \\Warning:\\ this resets \R{setregview}{RegSetView} and file system redirection.
+
+\S2{} LIBRARY_SHELL_EXTENSION
+
+\b Define this before inserting UninstallLib macro to call SHChangeNotify with SHCNE_ASSOCCHANGED after unregistration. Use this to refresh the shell when uninstalling a shell extension or when changing file associations.
+
+\S2{} LIBRARY_COM
+
+\b Define this before inserting UninstallLib macro to call CoFreeUnusedLibraries after unregistration. Use this for unloading all unnecessary libraries from memory when uninstalling COM libraries.
+
+\S1{} Example
+
+\c !insertmacro UnInstallLib REGDLL SHARED REBOOT_NOTPROTECTED $SYSDIR\dllname.dll
+
+
+\H{library_vb6} Visual Basic 6 Run-Time Files
+
+A new VB6.nsh header file is available for the setup of the VB6 run-time files.
+To obtain the latest run-time files, download \W{http://nsis.sourceforge.net/vb6runtime.zip} and extract this file.
+
+\c !include VB6RunTime.nsh
+\c
+\c Var AlreadyInstalled
+\c
+\c Section "-Install VB6 run-time files"
+\c
+\c ;Add code here that sets $AlreadyInstalled to a non-zero value if the application is already installed. For example:
+\c IfFileExists "$INSTDIR\MyApp.exe" 0 new_installation ;Replace MyApp.exe with your application filename
+\c StrCpy $AlreadyInstalled 1
+\c new_installation:
+\c
+\c !insertmacro VB6RunTimeInstall C:\vb6runtimes $AlreadyInstalled ;Replace C:\vb6runtimes with the location of the files
+\c
+\c SectionEnd
+\c
+\c Section "-un.Uninstall VB6 run-time files"
+\c
+\c !insertmacro VB6RunTimeUnInstall
+\c
+\c SectionEnd
+
+Remarks:
+
+\b You may have to install additional files for such Visual Basic application to work, such as OCX files for user interface controls.
+
+\b Installation of the run-time files requires Administrator or Power User privileges. Use the Multi-User header file to verify whether these privileges are available.
+
+\b Add a Modern UI finish page or another check (see \R{ifrebootflag}{IfRebootFlag}) to allow the user to restart the computer when necessary.
diff --git a/Examples/makensis.nsi b/Examples/makensis.nsi
index 78708078..353ddbe4 100644
--- a/Examples/makensis.nsi
+++ b/Examples/makensis.nsi
@@ -154,6 +154,7 @@ ${MementoSection} "NSIS Core Files (required)" SecCore
File ..\Include\LangFile.nsh
File ..\Include\InstallOptions.nsh
File ..\Include\MultiUser.nsh
+ File ..\Include\VB6RunTime.nsh
SetOutPath $INSTDIR\Docs\StrFunc
File ..\Docs\StrFunc\StrFunc.txt
diff --git a/Include/SConscript b/Include/SConscript
index f71ab9e0..851bc416 100644
--- a/Include/SConscript
+++ b/Include/SConscript
@@ -1,23 +1,24 @@
-includes = Split("""
- Colors.nsh
- FileFunc.nsh
- LangFile.nsh
- Library.nsh
- LogicLib.nsh
- Memento.nsh
- MUI.nsh
- MUI2.nsh
- Sections.nsh
- StrFunc.nsh
- TextFunc.nsh
- UpgradeDLL.nsh
- WinMessages.nsh
- WinVer.nsh
- WordFunc.nsh
- x64.nsh
-""")
-
-Import('env')
-
-env.DistributeInclude(includes)
-env.DistributeDocs('StrFunc.txt', path='StrFunc')
+includes = Split("""
+ Colors.nsh
+ FileFunc.nsh
+ LangFile.nsh
+ Library.nsh
+ LogicLib.nsh
+ Memento.nsh
+ MUI.nsh
+ MUI2.nsh
+ Sections.nsh
+ StrFunc.nsh
+ TextFunc.nsh
+ UpgradeDLL.nsh
+ VB6RunTime.nsh
+ WinMessages.nsh
+ WinVer.nsh
+ WordFunc.nsh
+ x64.nsh
+""")
+
+Import('env')
+
+env.DistributeInclude(includes)
+env.DistributeDocs('StrFunc.txt', path='StrFunc')
diff --git a/Include/VB6RunTime.nsh b/Include/VB6RunTime.nsh
new file mode 100644
index 00000000..498faf08
--- /dev/null
+++ b/Include/VB6RunTime.nsh
@@ -0,0 +1,90 @@
+/*
+
+VB6RunTime.nsh
+
+Setup of Visual Basic 6.0 run-time files, including the Oleaut32.dll security update
+
+Copyright © 2008 Joost Verburg
+
+To obtain the run-time files, download and extract
+http://nsis.sourceforge.net/vb6runtime.zip
+
+Script code for installation:
+
+!insertmacro InstallVB6RunTime FOLDER ALREADY_INSTALLED
+
+in which FOLDER is the location of the run-time files and ALREADY_INSTALLED is the
+name of a variable that is empty when the application is installed for the first time
+and non-empty otherwise
+
+Script code for uninstallation:
+
+!insertmacro UnInstallVB6RunTime
+
+Remarks:
+
+* You may have to install additional files for such Visual Basic application to work,
+ such as OCX files for user interface controls.
+
+* Installation of the run-time files requires Administrator or Power User privileges.
+ Use the Multi-User header file to verify whether these privileges are available.
+
+* Add a Modern UI finish page or another check (see IfRebootFlag in the NSIS Users
+ Manual) to allow the user to restart the computer when necessary.
+
+*/
+
+!ifndef VB6_INCLUDED
+!define VB6_INCLUDED
+!verbose push
+!verbose 3
+
+!include Library.nsh
+!include WinVer.nsh
+
+!macro VB6RunTimeInstall FOLDER ALREADY_INSTALLED
+
+ !insertmacro InstallLib REGDLL "${ALREADY_INSTALLED}" REBOOT_NOTPROTECTED "${FOLDER}\msvbvm60.dll" "$SYSDIR\msvbvm60.dll" "$SYSDIR"
+
+ ;The files below will only be installed on Win9x/NT4
+
+ !insertmacro InstallLib REGDLL "${ALREADY_INSTALLED}" REBOOT_PROTECTED "${FOLDER}\olepro32.dll" "$SYSDIR\olepro32.dll" "$SYSDIR"
+ !insertmacro InstallLib REGDLL "${ALREADY_INSTALLED}" REBOOT_PROTECTED "${FOLDER}\comcat.dll" "$SYSDIR\comcat.dll" "$SYSDIR"
+ !insertmacro InstallLib DLL "${ALREADY_INSTALLED}" REBOOT_PROTECTED "${FOLDER}\asycfilt.dll" "$SYSDIR\asycfilt.dll" "$SYSDIR"
+ !insertmacro InstallLib TLB "${ALREADY_INSTALLED}" REBOOT_PROTECTED "${FOLDER}\stdole2.tlb" "$SYSDIR\stdole2.tlb" "$SYSDIR"
+
+ Push $R0
+
+ ${if} ${IsNT}
+ ${if} ${IsWinNT4}
+ ReadRegStr $R0 HKLM "System\CurrentControlSet\Control" "ProductOptions"
+ ${if} $R0 == "Terminal Server"
+ !insertmacro InstallLib REGDLL "${ALREADY_INSTALLED}" REBOOT_NOTPROTECTED "${FOLDER}\NT4TS\oleaut32.dll" "$SYSDIR\oleaut32.dll" "$SYSDIR"
+ ${else}
+ !insertmacro InstallLib REGDLL "${ALREADY_INSTALLED}" REBOOT_NOTPROTECTED "${FOLDER}\NT4\oleaut32.dll" "$SYSDIR\oleaut32.dll" "$SYSDIR"
+ ${endif}
+ ${endif}
+ ${else}
+ ;No Oleaut32.dll with the security update has been released for Windows 9x.
+ ;The NT4 version is used because NT4 and Win9x used to share the same 2.40 version
+ ;and version 2.40.4519.0 is reported to work fine on Win9x.
+ !insertmacro InstallLib REGDLL "${ALREADY_INSTALLED}" REBOOT_NOTPROTECTED "${FOLDER}\NT4\oleaut32.dll" "$SYSDIR\oleaut32.dll" "$SYSDIR"
+ ${endif}
+
+ Pop $R0
+
+!macroend
+
+!macro VB6RunTimeUnInstall
+
+ !insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\msvbvm60.dll"
+ !insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\oleaut32.dll"
+ !insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\olepro32.dll"
+ !insertmacro UnInstallLib REGDLL SHARED NOREMOVE "$SYSDIR\comcat.dll"
+ !insertmacro UnInstallLib DLL SHARED NOREMOVE "$SYSDIR\asycfilt.dll"
+ !insertmacro UnInstallLib TLB SHARED NOREMOVE "$SYSDIR\stdole2.tlb"
+
+!macroend
+
+!verbose pop
+!endif