The PostUpdate function fills a grab bag of responsibilities which are all focused around maintaining system integration objects created by the installer.
Note that profiles and any other user-generated files (e.g., crash reports) are specifically not uninstalled.Īt the end of an application update cycle, after the new files are in place, the updater invokes the helper with the /PostUpdate command-line switch. The first “uninstall” ping found is uploaded, and all uninstall pings are deleted (for this installation). If the copy of Firefox that was just uninstalled is the only one that was using the maintenance service, the maintenance service uninstaller is also run.Īny BITS jobs from this installation of Firefox are cancelled. If the application directory is empty after that, then it is removed, but it’s left alone if any files are still present. This file is mainly used to tell the updater what it should do to clean out the directory when applying a complete update (one that replaces all application files), but that means it contains a handy auto-generated list of all application files, so it can be reused for uninstallation. For a list of application files that are safe to uninstall, we read a file from the application directory called precomplete. There are a few hard-coded directories that are known to be safe to delete (for example, the distribution directory, and any temporary directories created by the updater). The only complexity comes from a need to avoid accidentally removing any user files that may have found their way into the installation directory the general philosophy of the uninstaller is to remove everything that the installer creates, and nothing that it doesn’t.Īny registry entries the installer would have created are removed, even ones only used by very old installer versions.Īll the files that the uninstaller knows were created by the installer or are owned by the application are deleted, or flagged for deletion on reboot if any are in use. The uninstaller may be the most straightforward of the installer components. Getting Set Up To Work On The Firefox Codebase.