summaryrefslogtreecommitdiffstats
path: root/packaging/win32/macros/AdvUninstLog.txt
diff options
context:
space:
mode:
Diffstat (limited to 'packaging/win32/macros/AdvUninstLog.txt')
-rw-r--r--packaging/win32/macros/AdvUninstLog.txt121
1 files changed, 121 insertions, 0 deletions
diff --git a/packaging/win32/macros/AdvUninstLog.txt b/packaging/win32/macros/AdvUninstLog.txt
new file mode 100644
index 0000000..74cd509
--- /dev/null
+++ b/packaging/win32/macros/AdvUninstLog.txt
@@ -0,0 +1,121 @@
+Overview
+
+Advanced Uninstall Log for NSIS was born in the need to cover a specific gap.
+It's been discussed fairly enough that the File /r command is very useful
+in cases when developers want to add a huge amount of sub directories and
+files, nevertheless it has the disadvantage that such an installation should
+be uninstalled with RmDir /r which is risky and removes also data that has
+been added/created later within the installation folder.
+
+
+
+
+About Advanced Uninstall Log.
+
+Advanced Uninstall Log is a macro system provided in a NSIS header that
+is able to monitor an installation and build an uninstall log file which
+is used by the uninstaller to uninstall files/directories that have been
+added within specific installation blocks.
+
+This means that files which have been installed outside these blocks,
+or added later either by the user or application's activities, ignored
+by the uninstaller.
+
+Moreover files that might exist into the target directory prior the current
+installation, ignored as well.
+
+Advanced Uninstall Log creates an uninstall log that removes only files that
+have been installed and optionally interacts with users for every other file
+and/or directory has found in installation folder and requires permission to
+remove these files/directories.
+
+It is enhanced as well to support updates, e.g. if the installer later would
+update the installation by adding new data, the uninstaller would remove the
+new data that has been added by the installer, without bothering users about.
+
+
+
+
+Features
+
+If target installation folder exists and contains files and/or directories
+they all preserved from being uninstalled.
+
+Uninstaller removes data that has been added within specific installation
+blocks, preserving all other data that has been created/added outside of
+these installation blocks. See included examples for details.
+
+Supports unlimited updates/reinstallations.
+
+Supports two uninstaller modes. Interactive mode requires confirmation
+to remove every other file except those files that have been installed.
+Unattended mode leaves intact every other file without bothering users.
+
+In case when uninstall log (uninstall.dat) has been removed manually instead
+of execute uninstaller, if users attempt to run the installer later, a warning
+issued that they should select a new output folder.
+
+Implements only the included with NSIS release headers FileFunc and TextFunc.
+There is no need for external plugins and headers, adds a very small overhead.
+
+
+
+
+Restrictions
+
+If uninstall log (uninstall.dat) is missing uninstaller won't execute at all.
+
+Due to file create - write procedure that is required in order to add/update
+the uninstall log (uninstall.dat), restricted users on NT based systems won't
+be able to execute the installer.
+
+
+
+
+Disadvantage
+
+Since the header does not implement anything else than the common NSIS release,
+a delay occurs while builds and reads the uninstall log because it needs to
+throw the list several times. Talking for common cases, most likely the delay
+won't be noticeable, however, in cases where the target directory isn't empty
+and contains a large amount of data which will be excluded from uninstall log,
+or added large amount of data after the installation which will be excluded also,
+the delay should be noticeable.
+
+
+
+
+Credits
+
+A very big thanks goes to kichik.
+When my idea of the Advanced Uninstall Log became an NSIS header, it was
+indeed an amateur's attempt to write a flexible and errors free NSIS header.
+Kichik dropped me a dozen of suggestions helping me to achieve my plan.
+However, his main suggestion to eliminate the mentioned above disadvantage,
+still remains untouched by me.
+
+
+
+
+License
+
+This header file is provided 'as-is', without any express or implied warranty.
+In no event will the author be held liable for any damages arising from the use
+of this header file.
+
+Permission is granted to anyone to use this header file for any purpose,
+including commercial applications, and to alter it and redistribute it freely,
+subject to the following restrictions:
+
+ 1. The origin of this header file must not be misrepresented;
+ you must not claim that you wrote the original header file.
+ If you use this header file in a product, an acknowledgment in
+ the product documentation would be appreciated but is not required.
+
+ 2. Altered versions must be plainly marked as such, and must not be
+ misrepresented as being the original header file.
+
+ 3. This notice may not be removed or altered from any distribution.
+
+
+eof \ No newline at end of file