diff options
Diffstat (limited to 'comm/suite/installer')
-rw-r--r-- | comm/suite/installer/Makefile.in | 196 | ||||
-rw-r--r-- | comm/suite/installer/allowed-dupes.mn | 349 | ||||
-rw-r--r-- | comm/suite/installer/license.txt | 373 | ||||
-rw-r--r-- | comm/suite/installer/moz.build | 4 | ||||
-rw-r--r-- | comm/suite/installer/package-manifest.in | 515 | ||||
-rw-r--r-- | comm/suite/installer/removed-files.in | 290 | ||||
-rw-r--r-- | comm/suite/installer/windows/Makefile.in | 55 | ||||
-rw-r--r-- | comm/suite/installer/windows/app.tag | 4 | ||||
-rw-r--r-- | comm/suite/installer/windows/moz.build | 10 | ||||
-rw-r--r-- | comm/suite/installer/windows/nsis/custom.nsi | 68 | ||||
-rw-r--r-- | comm/suite/installer/windows/nsis/defines.nsi.in | 64 | ||||
-rw-r--r-- | comm/suite/installer/windows/nsis/installer.nsi | 942 | ||||
-rw-r--r-- | comm/suite/installer/windows/nsis/shared.nsh | 1069 | ||||
-rw-r--r-- | comm/suite/installer/windows/nsis/uninstaller.nsi | 580 | ||||
-rw-r--r-- | comm/suite/installer/windows/nsis/updater_append.ini | 16 |
15 files changed, 4535 insertions, 0 deletions
diff --git a/comm/suite/installer/Makefile.in b/comm/suite/installer/Makefile.in new file mode 100644 index 0000000000..d4acf3e890 --- /dev/null +++ b/comm/suite/installer/Makefile.in @@ -0,0 +1,196 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +STANDALONE_MAKEFILE := 1 + +include $(topsrcdir)/config/rules.mk + +MOZ_PKG_REMOVALS = $(srcdir)/removed-files.in + +MOZ_PKG_MANIFEST = $(srcdir)/package-manifest.in +# Be fatal, except when building with XULRunner which already bundles some files. +ifndef SYSTEM_LIBXUL +MOZ_PKG_FATAL_WARNINGS = 1 +endif + +DEFINES += -DPKG_LOCALE_MANIFEST=$(topobjdir)/comm/suite/installer/locale-manifest.in +MOZ_CHROME_LOCALE_ENTRIES=@RESPATH@/chrome/ + +MOZ_PKG_DUPEFLAGS = \ + -w \ + -f $(srcdir)/allowed-dupes.mn \ + -f $(topsrcdir)/browser/installer/allowed-dupes.mn \ + $(NULL) + +MOZ_NONLOCALIZED_PKG_LIST = \ + xpcom \ + browser \ + mail \ + $(NULL) + +MOZ_LOCALIZED_PKG_LIST = \ + $(AB_CD) \ + $(NULL) + +DEFINES += -DMOZ_APP_NAME=$(MOZ_APP_NAME) -DPREF_DIR=$(PREF_DIR) + +DEFINES += -DJAREXT= + +ifdef ENABLE_TESTS +DEFINES += -DENABLE_TESTS=1 +endif + +ifdef MOZ_ANGLE_RENDERER +DEFINES += -DMOZ_ANGLE_RENDERER=$(MOZ_ANGLE_RENDERER) +ifdef MOZ_D3DCOMPILER_VISTA_DLL +DEFINES += -DMOZ_D3DCOMPILER_VISTA_DLL=$(MOZ_D3DCOMPILER_VISTA_DLL) +endif +endif + +ifdef NIGHTLY_BUILD +DEFINES += -DNIGHTLY_BUILD=1 +endif + +ifdef MOZ_DEBUG +DEFINES += -DMOZ_DEBUG=1 +endif + +ifeq ($(MOZ_WIDGET_TOOLKIT),gtk) +DEFINES += -DMOZ_GTK=1 +endif + +ifdef MOZ_DEBUGQA +DEFINES += -DMOZ_PACKAGE_DEBUGQA=1 +endif + +ifdef MOZ_IRC +DEFINES += -DMOZ_IRC=1 +endif + +ifdef MOZ_UPDATER +DEFINES += -DMOZ_UPDATER=1 +endif +ifdef MOZ_SYSTEM_NSPR +DEFINES += -DMOZ_SYSTEM_NSPR=1 +endif + +ifdef MOZ_SYSTEM_NSS +DEFINES += -DMOZ_SYSTEM_NSS=1 +endif + +ifdef NECKO_WIFI +DEFINES += -DNECKO_WIFI=1 +endif + +ifdef MOZ_BUNDLED_FONTS +DEFINES += -DMOZ_BUNDLED_FONTS=1 +endif + +# Set MSVC dlls version to package, if any. +# With VS2015+ it does not make sense to define the ucrt libs without +# the base c++ libs and vice versa. +ifdef MOZ_NO_DEBUG_RTL +ifdef WIN32_REDIST_DIR +ifdef WIN_UCRT_REDIST_DIR +DEFINES += -DMOZ_PACKAGE_MSVC_DLLS=1 +DEFINES += -DMSVC_C_RUNTIME_DLL=$(MSVC_C_RUNTIME_DLL) +DEFINES += -DMSVC_CXX_RUNTIME_DLL=$(MSVC_CXX_RUNTIME_DLL) +DEFINES += -DMOZ_PACKAGE_WIN_UCRT_DLLS=1 +endif +endif +endif + +ifneq (,$(filter WINNT Darwin Android,$(OS_TARGET))) +DEFINES += -DMOZ_SHARED_MOZGLUE=1 +endif + +ifneq (en-US, $(AB_CD)) +DEFINES += -DLOCALE_BUILD=1 +endif + +DEFINES += -DMOZ_CHILD_PROCESS_NAME=$(MOZ_CHILD_PROCESS_NAME) + +ifdef MAKENSISU +DEFINES += -DHAVE_MAKENSISU=1 +endif + +ifeq ($(MOZ_WIDGET_TOOLKIT),cocoa) +MOZ_PKG_MAC_DSSTORE=$(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/dsstore +MOZ_PKG_MAC_BACKGROUND=$(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/background.png +MOZ_PKG_MAC_ICON=$(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/disk.icns +MOZ_PKG_MAC_EXTRA=--symlink "/Applications:/ " +endif + +NON_OMNIJAR_FILES = \ + defaults/messenger/mailViews.dat \ + defaults/profile/panels.rdf \ + defaults/profile/mimeTypes.rdf \ + defaults/profile/chrome/userChrome-example.css \ + defaults/profile/chrome/userContent-example.css \ + $(NULL) + +include $(topsrcdir)/toolkit/mozapps/installer/packager.mk + +ifeq (Darwin, $(OS_ARCH)) +BINPATH = $(_BINPATH) +DEFINES += -DAPPNAME='$(_APPNAME)' +else +BINPATH = bin +endif +DEFINES += -DBINPATH=$(BINPATH) + +ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT)) +RESPATH = $(_APPNAME)/Contents/Resources +else +RESPATH = $(BINPATH) +endif +DEFINES += -DRESPATH='$(RESPATH)' + +LPROJ_ROOT = $(firstword $(subst -, ,$(AB_CD))) +ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT)) +ifeq (zh-TW,$(AB_CD)) +LPROJ_ROOT := $(subst -,_,$(AB_CD)) +endif +endif +DEFINES += -DLPROJ_ROOT=$(LPROJ_ROOT) + +ifdef CLANG_CXX +DEFINES += -DCLANG_CXX +endif +ifdef CLANG_CL +DEFINES += -DCLANG_CL +endif + +ifdef LLVM_SYMBOLIZER +DEFINES += -DLLVM_SYMBOLIZER=$(notdir $(LLVM_SYMBOLIZER)) +endif +ifdef MOZ_CLANG_RT_ASAN_LIB_PATH +DEFINES += -DMOZ_CLANG_RT_ASAN_LIB=$(notdir $(MOZ_CLANG_RT_ASAN_LIB_PATH)) +endif + +libs:: + $(MAKE) -C $(topobjdir)/comm/suite/locales langpack + +ifeq (WINNT,$(OS_ARCH)) +PKGCOMP_FIND_OPTS = +else +PKGCOMP_FIND_OPTS = -L +endif +ifeq (Darwin, $(OS_ARCH)) +FINDPATH = $(_APPNAME)/Contents/MacOS +else +FINDPATH=bin +endif + +package-compare:: $(MOZ_PKG_MANIFEST) + cd $(DIST); find $(PKGCOMP_FIND_OPTS) '$(FINDPATH)' -type f | sort > bin-list.txt + $(call py_action,preprocessor,$(DEFINES) $(ACDEFINES) $(MOZ_PKG_MANIFEST)) | grep '^$(BINPATH)' | sed -e 's/^\///' | sort > $(DIST)/pack-list.txt + -diff -u $(DIST)/pack-list.txt $(DIST)/bin-list.txt + rm -f $(DIST)/pack-list.txt $(DIST)/bin-list.txt + +# The comm-* source stamp is already there. +PLATFORM_SOURCE_STAMP = $(firstword $(shell hg -R "$(topsrcdir)" parent --template="{node|short}\n" 2>/dev/null)) +PLATFORM_SOURCE_REPO = $(shell hg -R "$(topsrcdir)" showconfig paths.default 2>/dev/null | sed -e "s/^ssh:/https:/") +make-sourcestamp-file:: + @echo "$(PLATFORM_SOURCE_REPO)/rev/$(PLATFORM_SOURCE_STAMP)" >> $(MOZ_SOURCESTAMP_FILE) diff --git a/comm/suite/installer/allowed-dupes.mn b/comm/suite/installer/allowed-dupes.mn new file mode 100644 index 0000000000..66e730c0f1 --- /dev/null +++ b/comm/suite/installer/allowed-dupes.mn @@ -0,0 +1,349 @@ +# Known duplicate files +# This file is ideally removed, but some existing files will be grandfathered in +# See bug 1303184, bug 1313670. bug 1314892 +# +# PLEASE DO NOT ADD MORE EXCEPTIONS TO THIS LIST UNLESS NECESSARY FOR THEMES OR EXTENSIONS +# +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/console/error-dash.png +chrome/classic/skin/classic/communicator/console/console-error-dash.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/menu/menu-radio-dis.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/menu/menu-radio.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/sidebar/sbpicker-arrow.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/scrollbar/btn-dn.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/arrow/arrow-lft-sharp.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/scrollbar/btn-lft.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/arrow/arrow-rit-sharp.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/scrollbar/btn-rit.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/menu/menu-check-dis.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/menu/menu-check.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/console/error-caret.png +chrome/classic/skin/classic/communicator/console/console-error-caret.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/gtk/tree/sort-asc.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/mac/tree/sort-dsc.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/win/tree/sort-dsc.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/gtk/tree/sort-dsc.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/mac/tree/sort-asc.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/win/tree/sort-asc.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/mozapps/extensions/cancel.png +chrome/toolkit/skin/classic/mozapps/extensions/cancel.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/editor/icons/multicolor.png +chrome/classic/skin/classic/editor/icons/multicolor.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/tree/checkbox.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/icons/dot.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/navigator/icons/tab-drag-indicator.png +chrome/classic/skin/classic/navigator/icons/tab-drag-indicator.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/mozapps/viewsource/viewsource.css +chrome/toolkit/skin/classic/mozapps/viewsource/viewsource.css +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/editor/icons/progress-failed.png +chrome/classic/skin/classic/editor/icons/progress-failed.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/media/playButton.svg +chrome/toolkit/skin/classic/global/media/playButton.svg +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/tree/checkbox-checked.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/icons/check.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/folderPaneExtras.css +chrome/classic/skin/classic/messenger/folderPaneExtras.css +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/editor/icons/progress-done.png +chrome/classic/skin/classic/editor/icons/progress-done.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/threadPaneExtras.css +chrome/classic/skin/classic/messenger/threadPaneExtras.css +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/editor/icons/img-align-lft.png +chrome/classic/skin/classic/editor/icons/img-align-left.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/editor/icons/img-align-rit.png +chrome/classic/skin/classic/editor/icons/img-align-right.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/smime/certFetchingStatus.css +chrome/classic/skin/classic/messenger/smime/certFetchingStatus.css +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/editor/icons/editmode-tags.png +chrome/classic/skin/classic/editor/icons/editmode-tags.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/icons/local-mailhost.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/icons/server-local.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/messageKeywords.css +chrome/classic/skin/classic/messenger/messageKeywords.css +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/media/pauseButton.svg +chrome/toolkit/skin/classic/global/media/pauseButton.svg +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/search/engineManager.css +chrome/classic/skin/classic/communicator/search/engineManager.css +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/editor/icons/editmode-preview.png +chrome/classic/skin/classic/editor/icons/editmode-preview.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/sidebar/sidebarListView.css +chrome/classic/skin/classic/communicator/sidebar/sidebarListView.css +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/media/TopLevelVideoDocument.css +chrome/toolkit/skin/classic/global/media/TopLevelVideoDocument.css +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/dialogs.css +chrome/classic/skin/classic/communicator/dialogs.css +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/addressbook/sidebarPanel.css +chrome/classic/skin/classic/messenger/addressbook/sidebarPanel.css +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/smime/msgCompSecurityInfo.css +chrome/classic/skin/classic/messenger/smime/msgCompSecurityInfo.css +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/dataman/datamanIcon-16.png +chrome/classic/skin/classic/communicator/dataman/datamanIcon-16.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/media/TopLevelImageDocument.css +chrome/toolkit/skin/classic/global/media/TopLevelImageDocument.css +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/prefPanels.css +chrome/classic/skin/classic/messenger/prefPanels.css +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/lock-broken.png +chrome/classic/skin/classic/communicator/icons/lock-broken.png +chrome/en-US/locale/en-US/global-platform/mac/intl.properties +chrome/en-US/locale/en-US/global-platform/unix/intl.properties +chrome/en-US/locale/en-US/global-platform/win/intl.properties +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/lock-secure.png +chrome/classic/skin/classic/communicator/icons/lock-secure.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/lock-insecure.png +chrome/classic/skin/classic/communicator/icons/lock-insecure.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/closeFullScreenVideo.png +chrome/classic/skin/classic/communicator/icons/closeFullScreenVideo.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/smime/msgReadSecurityInfo.css +chrome/classic/skin/classic/messenger/smime/msgReadSecurityInfo.css +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/fullscreen-video.css +chrome/classic/skin/classic/communicator/fullscreen-video.css +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/smime/msgReadSMIMEOverlay.css +chrome/classic/skin/classic/messenger/smime/msgReadSMIMEOverlay.css +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/smime/msgHdrViewSMIMEOverlay.css +chrome/classic/skin/classic/messenger/smime/msgHdrViewSMIMEOverlay.css +chrome/classic/skin/classic/communicator/downloads/dl-remove.png +chrome/classic/skin/classic/messenger/icons/folder-trash.png +modules/commonjs/sdk/ui/button/view/events.js +modules/commonjs/sdk/ui/state/events.js +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/icons/folder-inbox-open.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/icons/folder-inbox.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/browserRequest.css +chrome/classic/skin/classic/messenger/browserRequest.css +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/start.css +chrome/classic/skin/classic/messenger/start.css +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/icons/message-news-kill-offl.png +chrome/classic/skin/classic/messenger/icons/message-news-kill-offl.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/icons/message-news-kill.png +chrome/classic/skin/classic/messenger/icons/message-news-kill.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/icons/message-news-attach-kill-offl.png +chrome/classic/skin/classic/messenger/icons/message-news-attach-kill-offl.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/icons/message-news-attach-kill.png +chrome/classic/skin/classic/messenger/icons/message-news-attach-kill.png +chrome/en-US/locale/en-US/global-platform/unix/accessible.properties +chrome/en-US/locale/en-US/global-platform/win/accessible.properties +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/notification-16.png +chrome/classic/skin/classic/communicator/icons/notification-16.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/icons/thread-closed-offl-kill.png +chrome/classic/skin/classic/messenger/icons/thread-closed-offl-kill.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/icons/thread-closed-kill.png +chrome/classic/skin/classic/messenger/icons/thread-closed-kill.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/icons/insecure.png +chrome/classic/skin/classic/messenger/icons/insecure.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/mozapps/plugins/pluginGeneric-16.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/icons/thread-new-closed-offl-kill.png +chrome/classic/skin/classic/messenger/icons/thread-new-closed-offl-kill.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/icons/thread-new-closed-kill.png +chrome/classic/skin/classic/messenger/icons/thread-new-closed-kill.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/icons/secure.png +chrome/classic/skin/classic/messenger/icons/secure.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/places/calendar.png +chrome/classic/skin/classic/communicator/places/calendar.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/identity.png +chrome/classic/skin/classic/communicator/icons/identity.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/icons/information-16.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/icons/notfound.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/addressbook/cardDialog.css +chrome/classic/skin/classic/messenger/addressbook/cardDialog.css +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/addressbook/icons/contact-generic-tiny.png +chrome/classic/skin/classic/messenger/addressbook/icons/contact-generic-tiny.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/feedIcon16.png +chrome/classic/skin/classic/communicator/icons/feedIcon16.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/icons/phishing.png +chrome/classic/skin/classic/messenger/icons/phishing.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/places/history.png +chrome/classic/skin/classic/communicator/places/history.png +res/table-remove-column-active.gif +res/table-remove-row-active.gif +res/table-remove-column-hover.gif +res/table-remove-row-hover.gif +res/table-remove-column.gif +res/table-remove-row.gif +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger-newsblog/icons/rss-feed.png +chrome/classic/skin/classic/messenger-newsblog/icons/rss-feed.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/mozapps/plugins/pluginBlocked-16.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/mozapps/plugins/pluginBlocked.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/mozapps/plugins/pluginGeneric.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/icons/info.png +chrome/classic/skin/classic/messenger/icons/info.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/brand/throbber16-single.png +chrome/classic/skin/classic/communicator/brand/throbber16-single.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/smileys/smiley-sealed.png +chrome/classic/skin/classic/communicator/icons/smileys/smiley-sealed.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/geo.png +chrome/classic/skin/classic/communicator/icons/geo.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/save.png +chrome/classic/skin/classic/communicator/icons/save.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/smileys/smiley-foot.png +chrome/classic/skin/classic/communicator/icons/smileys/smiley-foot.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/smileys/smiley-tongue.png +chrome/classic/skin/classic/communicator/icons/smileys/smiley-tongue.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/smileys/smiley-embarrassed.png +chrome/classic/skin/classic/communicator/icons/smileys/smiley-embarrassed.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/smileys/smiley-innocent.png +chrome/classic/skin/classic/communicator/icons/smileys/smiley-innocent.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/smileys/smiley-yell.png +chrome/classic/skin/classic/communicator/icons/smileys/smiley-yell.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/smileys/smiley-kiss.png +chrome/classic/skin/classic/communicator/icons/smileys/smiley-kiss.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/smileys/smiley-undecided.png +chrome/classic/skin/classic/communicator/icons/smileys/smiley-undecided.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/downloads/downloadButtons.png +chrome/classic/skin/classic/communicator/downloads/downloadButtons.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/smileys/smiley-money.png +chrome/classic/skin/classic/communicator/icons/smileys/smiley-money.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/smileys/smiley-cool.png +chrome/classic/skin/classic/communicator/icons/smileys/smiley-cool.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/editor/icons/progress-busy.png +chrome/classic/skin/classic/editor/icons/progress-busy.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/smileys/smiley-wink.png +chrome/classic/skin/classic/communicator/icons/smileys/smiley-wink.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/smileys/smiley-surprise.png +chrome/classic/skin/classic/communicator/icons/smileys/smiley-surprise.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/smileys/smiley-smile.png +chrome/classic/skin/classic/communicator/icons/smileys/smiley-smile.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/smileys/smiley-frown.png +chrome/classic/skin/classic/communicator/icons/smileys/smiley-frown.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/smileys/smiley-laughing.png +chrome/classic/skin/classic/communicator/icons/smileys/smiley-laughing.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/smileys/smiley-cry.png +chrome/classic/skin/classic/communicator/icons/smileys/smiley-cry.png +modules/devtools/Loader.jsm +modules/devtools/shared/Loader.jsm +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/icons/junk.png +chrome/classic/skin/classic/messenger/icons/junk.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/mozapps/extensions/rating-not-won.png +chrome/toolkit/skin/classic/mozapps/extensions/rating-not-won.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/mozapps/extensions/category-extensions.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/mozapps/extensions/extensionGeneric.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/mozapps/xpinstall/xpinstallItemGeneric.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/mozapps/extensions/rating-won.png +chrome/toolkit/skin/classic/mozapps/extensions/rating-won.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/mozapps/plugins/contentPluginCrashed.png +chrome/toolkit/skin/classic/mozapps/plugins/contentPluginCrashed.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/mozapps/extensions/category-dictionaries.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/mozapps/extensions/dictionaryGeneric.png +chrome/toolkit/skin/classic/mozapps/extensions/dictionaryGeneric.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/icons/new-mail-alert.png +chrome/classic/skin/classic/messenger/icons/new-mail-alert.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/navigator/webDeveloper.css +chrome/classic/skin/classic/navigator/webDeveloper.css +chrome/comm/content/communicator/places/bookmarkProperties.xul +chrome/comm/content/communicator/places/bookmarkProperties2.xul +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/audioFeedIcon.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/feedIcon.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/videoFeedIcon.png +chrome/classic/skin/classic/communicator/icons/audioFeedIcon.png +chrome/classic/skin/classic/communicator/icons/feedIcon.png +chrome/classic/skin/classic/communicator/icons/videoFeedIcon.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/brand/throbber-single.png +chrome/classic/skin/classic/communicator/brand/throbber-single.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/notification-icons.svg +chrome/classic/skin/classic/communicator/icons/notification-icons.svg +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/mozapps/extensions/category-languages.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/mozapps/extensions/localeGeneric.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/mozapps/extensions/heart.png +chrome/toolkit/skin/classic/mozapps/extensions/heart.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/media/imagedoc-darknoise.png +chrome/toolkit/skin/classic/global/media/imagedoc-darknoise.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/icons/autoscroll.png +chrome/toolkit/skin/classic/global/icons/autoscroll.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/notification-64.png +chrome/classic/skin/classic/communicator/icons/notification-64.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/media/imagedoc-lightnoise.png +chrome/toolkit/skin/classic/global/media/imagedoc-lightnoise.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/addressbook/icons/contact-generic.png +chrome/classic/skin/classic/messenger/addressbook/icons/contact-generic.png +chrome/toolkit/skin/classic/mozapps/downloads/downloadButtons.png +chrome/toolkit/skin/classic/mozapps/update/downloadButtons.png +chrome/devtools/modules/devtools/client/themes/toolbars.css +chrome/devtools/skin/toolbars.css +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/media/error.png +chrome/toolkit/skin/classic/global/media/error.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/navigator/icons/identity.png +chrome/classic/skin/classic/navigator/icons/identity.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/loading.png +chrome/toolkit/skin/classic/global/icons/loading.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/mozapps/extensions/discover-logo.png +chrome/toolkit/skin/classic/mozapps/extensions/discover-logo.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/connecting.png +chrome/classic/skin/classic/communicator/icons/connecting.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/media/stalled.png +chrome/toolkit/skin/classic/global/media/stalled.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/brand/throbber16-anim.png +chrome/classic/skin/classic/communicator/brand/throbber16-anim.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/media/throbber.png +chrome/toolkit/skin/classic/global/media/throbber.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/brand/throbber-anim.png +chrome/classic/skin/classic/communicator/brand/throbber-anim.png +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/icons/spinner-arrow-down.svg +chrome/toolkit/skin/classic/global/icons/spinner-arrow-down.svg +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/icons/spinner-arrow-up.svg +chrome/toolkit/skin/classic/global/icons/spinner-arrow-up.svg +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/datetimepopup.css +chrome/toolkit/skin/classic/global/datetimepopup.css +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/icons/calendar-arrow-left.svg +chrome/toolkit/skin/classic/global/icons/calendar-arrow-left.svg +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/icons/calendar-arrow-right.svg +chrome/toolkit/skin/classic/global/icons/calendar-arrow-right.svg +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/icons/input-clear.svg +chrome/toolkit/skin/classic/global/icons/input-clear.svg + +# Compatibility gif files for modern theme. +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/gtk/tree/sort-dsc.gif +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/mac/tree/sort-asc.gif +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/win/tree/sort-asc.gif +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/gtk/tree/sort-asc.gif +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/mac/tree/sort-dsc.gif +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/win/tree/sort-dsc.gif +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/menu/menu-radio-dis.gif +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/menu/menu-radio.gif +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/menu/menu-check-dis.gif +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/menu/menu-check.gif + +# Lightning +extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/linux/lightning/imip.css +extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/lightning/imip.css +extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/linux/calendar/calendar-invitations-dialog.css +extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-invitations-dialog.css +extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/linux/lightning/lightning-widgets.css +extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/lightning/lightning-widgets.css +extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/linux/calendar/calendar-daypicker.css +extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-daypicker.css +extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/linux/lightning/accountCentral.css +extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/lightning/accountCentral.css +extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/linux/calendar/calendar-alarm-dialog.css +extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-alarm-dialog.css +extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/linux/calendar/calendar-management.css +extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/chrome/skin/windows/calendar/calendar-management.css + +# Linux +chrome/comm/content/branding/icon16.png +chrome/comm/content/branding/icon32.png +chrome/comm/content/branding/icon48.png +chrome/comm/content/branding/icon64.png +chrome/comm/content/branding/icon128.png +chrome/icons/default/default16.png +chrome/icons/default/default32.png +chrome/icons/default/default48.png +chrome/icons/default/default64.png +chrome/icons/default/default128.png +@MOZ_APP_NAME@ +@MOZ_APP_NAME@-bin + +# OSX +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/sidebar/sbpicker-arrow.gif +chrome/toolkit/skin/classic/global/arrow/arrow-dn-sharp.gif +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/arrow/arrow-lft-sharp.gif +chrome/toolkit/skin/classic/global/arrow/arrow-lft-sharp.gif +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/arrow/arrow-rit-sharp.gif +chrome/toolkit/skin/classic/global/arrow/arrow-rit-sharp.gif +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/arrow/arrow-lft-sharp-end.gif +chrome/toolkit/skin/classic/global/arrow/arrow-lft-sharp-end.gif +extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/global/arrow/arrow-rit-sharp-end.gif +chrome/toolkit/skin/classic/global/arrow/arrow-rit-sharp-end.gif +plugin-container.app/Contents/Resources/English.lproj/InfoPlist.strings +en.lproj/InfoPlist.strings +chrome/toolkit/skin/classic/mozapps/extensions/category-plugins.png +chrome/toolkit/skin/classic/mozapps/extensions/category-discover.png +chrome/toolkit/skin/classic/mozapps/extensions/category-recent.png +chrome/toolkit/skin/classic/mozapps/extensions/category-available.png +chrome/toolkit/skin/classic/mozapps/extensions/themeGeneric.png +chrome/toolkit/skin/classic/mozapps/extensions/localeGeneric.png diff --git a/comm/suite/installer/license.txt b/comm/suite/installer/license.txt new file mode 100644 index 0000000000..14e2f777f6 --- /dev/null +++ b/comm/suite/installer/license.txt @@ -0,0 +1,373 @@ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/comm/suite/installer/moz.build b/comm/suite/installer/moz.build new file mode 100644 index 0000000000..89251dc396 --- /dev/null +++ b/comm/suite/installer/moz.build @@ -0,0 +1,4 @@ +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. diff --git a/comm/suite/installer/package-manifest.in b/comm/suite/installer/package-manifest.in new file mode 100644 index 0000000000..c77bde7eb4 --- /dev/null +++ b/comm/suite/installer/package-manifest.in @@ -0,0 +1,515 @@ +; Package file for the SeaMonkey build. +; +; Packaging manifest is used to copy files from dist/bin +; to the staging directory. +; Some other files are built in the staging directory directly, +; so they will be implicitly packaged too. +; +; File format: +; +; [] designates a toplevel component. Example: [xpcom] +; - in front of a file specifies it to be removed from the destination +; * wildcard support to recursively copy the entire directory +; ; file comment +; + +; Due to Apple macOS packaging requirements, files that are in the same +; directory on other platforms must be located in different directories on +; macOS. The following defines allow specifying the macOS bundle +; location which also work on other platforms. +; +; @BINPATH@ +; Equals Contents/MacOS/ on macOS and is the path to the main binary on other +; platforms. +; +; @RESPATH@ +; Equals Contents/Resources/ on macOS and is equivalent to @BINPATH@ on other +; platforms. + +#filter substitution + +#ifdef XP_UNIX +#ifndef XP_MACOSX +#define UNIX_BUT_NOT_MAC +#endif +#endif + +#ifdef XP_MACOSX +; Mac bundle stuff +@APPNAME@/Contents/Info.plist +@APPNAME@/Contents/PkgInfo +@RESPATH@/seamonkey.icns +@RESPATH@/@LPROJ_ROOT@.lproj/* +#endif + +[@AB_CD@] +@RESPATH@/defaults/messenger/mailViews.dat +@RESPATH@/defaults/profile/bookmarks.html +@RESPATH@/defaults/profile/chrome/* +@RESPATH@/defaults/profile/mimeTypes.rdf +@RESPATH@/defaults/profile/panels.rdf +@RESPATH@/dictionaries/* +@RESPATH@/hyphenation/* +#ifdef MOZ_BUNDLED_FONTS +@RESPATH@/fonts/* +#endif +@RESPATH@/@PREF_DIR@/suite-l10n.js +#ifdef HAVE_MAKENSISU +@BINPATH@/uninstall/helper.exe +#endif +#ifdef MOZ_UPDATER +@RESPATH@/update.locale +@RESPATH@/updater.ini +#endif + +#ifdef PKG_LOCALE_MANIFEST +#include @PKG_LOCALE_MANIFEST@ +#endif + +[xpcom] +@RESPATH@/dependentlibs.list +#ifdef MOZ_SHARED_MOZGLUE +@BINPATH@/@DLL_PREFIX@mozglue@DLL_SUFFIX@ +#endif +#ifndef MOZ_STATIC_JS +@BINPATH@/@DLL_PREFIX@mozjs@DLL_SUFFIX@ +#endif +#ifndef MOZ_SYSTEM_NSPR +#ifndef MOZ_FOLD_LIBS +@BINPATH@/@DLL_PREFIX@nspr4@DLL_SUFFIX@ +@BINPATH@/@DLL_PREFIX@plc4@DLL_SUFFIX@ +@BINPATH@/@DLL_PREFIX@plds4@DLL_SUFFIX@ +#endif +#endif +#ifdef XP_MACOSX +@BINPATH@/XUL +#else +@BINPATH@/@DLL_PREFIX@xul@DLL_SUFFIX@ +#endif +#ifdef XP_MACOSX +@BINPATH@/@MOZ_CHILD_PROCESS_NAME@.app/ +#else +@BINPATH@/@MOZ_CHILD_PROCESS_NAME@ +#endif +; ANGLE GLES-on-D3D rendering library +#ifdef MOZ_ANGLE_RENDERER +@BINPATH@/libEGL.dll +@BINPATH@/libGLESv2.dll +#ifdef MOZ_D3DCOMPILER_VISTA_DLL +@BINPATH@/@MOZ_D3DCOMPILER_VISTA_DLL@ +#endif +#endif # MOZ_ANGLE_RENDERER + +#if defined(XP_WIN) && defined(MOZ_ENABLE_SKIA_PDF) +@BINPATH@/pdfium.dll +#endif + +#ifdef XP_WIN +#if MOZ_PACKAGE_MSVC_DLLS +@BINPATH@/@MSVC_C_RUNTIME_DLL@ +@BINPATH@/@MSVC_CXX_RUNTIME_DLL@ +@BINPATH@/api-ms-win-*.dll +@BINPATH@/ucrtbase.dll +#endif +#endif + +[browser] +; [Base Browser Files] +#ifdef XP_WIN +@BINPATH@/@MOZ_APP_NAME@.exe +#else +@BINPATH@/@MOZ_APP_NAME@-bin +@BINPATH@/@MOZ_APP_NAME@ +#endif +@RESPATH@/application.ini +@RESPATH@/platform.ini +#ifdef MOZ_UPDATER +@RESPATH@/update-settings.ini +#endif +#ifndef MOZ_FOLD_LIBS +@BINPATH@/@DLL_PREFIX@mozsqlite3@DLL_SUFFIX@ +#endif +@BINPATH@/@DLL_PREFIX@lgpllibs@DLL_SUFFIX@ +#ifdef MOZ_FFVPX +@BINPATH@/@DLL_PREFIX@mozavutil@DLL_SUFFIX@ +@BINPATH@/@DLL_PREFIX@mozavcodec@DLL_SUFFIX@ +#endif +#ifdef MOZ_GTK +@BINPATH@/@DLL_PREFIX@mozgtk@DLL_SUFFIX@ +#ifdef MOZ_WAYLAND +@BINPATH@/@DLL_PREFIX@mozwayland@DLL_SUFFIX@ +#endif +#endif +@RESPATH@/license.txt +@RESPATH@/blocklist.xml +#ifdef XP_WIN +#ifdef _AMD64_ +@BINPATH@/@DLL_PREFIX@qipcap64@DLL_SUFFIX@ +#else +@BINPATH@/@DLL_PREFIX@qipcap@DLL_SUFFIX@ +#endif +#endif + +; [Components] +#ifdef ACCESSIBILITY +#ifdef XP_WIN +@BINPATH@/Accessible.tlb +@BINPATH@/AccessibleHandler.dll +@BINPATH@/AccessibleMarshal.dll +@BINPATH@/IA2Marshal.dll +#endif +#endif +@RESPATH@/components/extensions.manifest +@RESPATH@/components/SuiteBrowser.manifest +@RESPATH@/components/SuiteComponents.manifest +@RESPATH@/components/SuiteFeeds.manifest +@RESPATH@/components/SuiteSidebar.manifest +; JavaScript components +@RESPATH@/components/cryptoComponents.manifest +@RESPATH@/components/FeedConverter.js +@RESPATH@/components/FeedWriter.js +@RESPATH@/components/jsconsole-clhandler.js +@RESPATH@/components/jsconsole-clhandler.manifest +@RESPATH@/components/nsAbout.js +@RESPATH@/components/nsBrowserContentHandler.js +@RESPATH@/components/nsComposerCmdLineHandler.js +@RESPATH@/components/nsComposerCmdLineHandler.manifest +@RESPATH@/components/nsGopherProtocolStubHandler.js +@RESPATH@/components/nsPlacesAutoComplete.js +@RESPATH@/components/nsPlacesAutoComplete.manifest +@RESPATH@/components/nsSessionStartup.js +@RESPATH@/components/nsSessionStartup.manifest +@RESPATH@/components/nsSessionStore.js +@RESPATH@/components/nsSidebar.js +@RESPATH@/components/nsSuiteGlue.js +@RESPATH@/components/nsSetDefault.js +@RESPATH@/components/nsSetDefault.manifest +@RESPATH@/components/nsTypeAheadFind.js +#ifdef MOZ_UPDATER +@RESPATH@/components/nsUpdateService.manifest +#endif +@RESPATH@/components/ProcessSingleton.manifest +@RESPATH@/components/Push.manifest +@RESPATH@/components/servicesComponents.manifest +@RESPATH@/components/servicesSettings.manifest +@RESPATH@/components/SuiteProfileMigrator.js +@RESPATH@/components/SuiteProfileMigrator.manifest +#if defined(ENABLE_TESTS) && defined(MOZ_DEBUG) +@RESPATH@/components/TestInterfaceJS.js +@RESPATH@/components/TestInterfaceJS.manifest +@RESPATH@/components/TestInterfaceJSMaplike.js +#endif +@RESPATH@/components/WebContentConverter.js + +; Modules +@RESPATH@/modules/* + +; [Extensions] +@RESPATH@/components/extensions-toolkit.manifest + +; [Browser Chrome Files] +; Browser: Hack to get built_in_addons.json packaged +@RESPATH@/chrome/browser@JAREXT@ +@RESPATH@/chrome/browser.manifest +@RESPATH@/chrome/comm@JAREXT@ +@RESPATH@/chrome/comm.manifest +@RESPATH@/chrome/toolkit@JAREXT@ +@RESPATH@/chrome/toolkit.manifest + +; [DevTools Startup Files] +@RESPATH@/chrome/devtools-startup@JAREXT@ +@RESPATH@/chrome/devtools-startup.manifest + +; DevTools +@RESPATH@/chrome/devtools@JAREXT@ +@RESPATH@/chrome/devtools.manifest +@RESPATH@/@PREF_DIR@/debugger.js + +; classic theme +@RESPATH@/chrome/classic@JAREXT@ +@RESPATH@/chrome/classic.manifest +@RESPATH@/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi + +; modern theme +@RESPATH@/extensions/modern@themes.mozilla.org.xpi + +; shell icons +#ifdef MOZ_GTK +@RESPATH@/chrome/icons/default/bookmarkproperties.png +@RESPATH@/chrome/icons/default/bookmarkproperties16.png +@RESPATH@/chrome/icons/default/bookmarkproperties48.png +@RESPATH@/chrome/icons/default/chatzilla-window.png +@RESPATH@/chrome/icons/default/chatzilla-window16.png +@RESPATH@/chrome/icons/default/chatzilla-window48.png +@RESPATH@/chrome/icons/default/default16.png +@RESPATH@/chrome/icons/default/default22.png +@RESPATH@/chrome/icons/default/default24.png +@RESPATH@/chrome/icons/default/default32.png +@RESPATH@/chrome/icons/default/default48.png +@RESPATH@/chrome/icons/default/default64.png +@RESPATH@/chrome/icons/default/default128.png +@RESPATH@/chrome/icons/default/default256.png +@RESPATH@/chrome/icons/default/downloadManager.png +@RESPATH@/chrome/icons/default/downloadManager16.png +@RESPATH@/chrome/icons/default/downloadManager48.png +@RESPATH@/chrome/icons/default/editorWindow.png +@RESPATH@/chrome/icons/default/editorWindow16.png +@RESPATH@/chrome/icons/default/editorWindow48.png +@RESPATH@/chrome/icons/default/findBookmarkWindow.png +@RESPATH@/chrome/icons/default/findBookmarkWindow16.png +@RESPATH@/chrome/icons/default/findBookmarkWindow48.png +@RESPATH@/chrome/icons/default/findHistoryWindow.png +@RESPATH@/chrome/icons/default/findHistoryWindow16.png +@RESPATH@/chrome/icons/default/findHistoryWindow48.png +@RESPATH@/chrome/icons/default/history-window.png +@RESPATH@/chrome/icons/default/history-window16.png +@RESPATH@/chrome/icons/default/history-window48.png +@RESPATH@/chrome/icons/default/JSConsoleWindow.png +@RESPATH@/chrome/icons/default/JSConsoleWindow16.png +@RESPATH@/chrome/icons/default/JSConsoleWindow48.png +@RESPATH@/chrome/icons/default/places.png +@RESPATH@/chrome/icons/default/places16.png +@RESPATH@/chrome/icons/default/places48.png +#ifdef MOZ_UPDATER +@RESPATH@/icons/updater.png +#endif +#elifdef XP_WIN +@RESPATH@/chrome/icons/default/bookmarkproperties.ico +@RESPATH@/chrome/icons/default/chatzilla-window.ico +@RESPATH@/chrome/icons/default/downloadManager.ico +@RESPATH@/chrome/icons/default/editorWindow.ico +@RESPATH@/chrome/icons/default/findBookmarkWindow.ico +@RESPATH@/chrome/icons/default/findHistoryWindow.ico +@RESPATH@/chrome/icons/default/gif-file.ico +@RESPATH@/chrome/icons/default/history-window.ico +@RESPATH@/chrome/icons/default/html-file.ico +@RESPATH@/chrome/icons/default/image-file.ico +@RESPATH@/chrome/icons/default/jpeg-file.ico +@RESPATH@/chrome/icons/default/JSConsoleWindow.ico +@RESPATH@/chrome/icons/default/main-window.ico +@RESPATH@/chrome/icons/default/places.ico +@RESPATH@/chrome/icons/default/script-file.ico +@RESPATH@/chrome/icons/default/xml-file.ico +@RESPATH@/chrome/icons/default/xul-file.ico +#endif + +; [Default Preferences] +; All the browser/general pref files must be part of base to prevent migration bugs +@RESPATH@/@PREF_DIR@/suite-prefs.js +@RESPATH@/@PREF_DIR@/composer.js +@RESPATH@/greprefs.js +@RESPATH@/defaults/autoconfig/prefcalls.js +@RESPATH@/defaults/permissions +@RESPATH@/defaults/settings/blocklists +@RESPATH@/defaults/settings/main +; Warning: changing the path to channel-prefs.js can cause bugs. (Bug 756325) +@RESPATH@/defaults/pref/channel-prefs.js + +; [Layout Engine Resources] +; Layout debug extension. +#ifdef ENABLE_TESTS +#ifdef MOZ_DEBUG +@RESPATH@/chrome/layoutdebug@JAREXT@ +@RESPATH@/chrome/layoutdebug.manifest +#endif +#endif +; Style Sheets, Graphics and other Resources used by the layout engine. +@RESPATH@/res/contenteditable.css +@RESPATH@/res/designmode.css +@RESPATH@/res/EditorOverride.css +@RESPATH@/res/grabber.gif +@RESPATH@/res/language.properties +@RESPATH@/res/svg.css +@RESPATH@/res/table-add-column-after-active.gif +@RESPATH@/res/table-add-column-after-hover.gif +@RESPATH@/res/table-add-column-after.gif +@RESPATH@/res/table-add-column-before-active.gif +@RESPATH@/res/table-add-column-before-hover.gif +@RESPATH@/res/table-add-column-before.gif +@RESPATH@/res/table-add-row-after-active.gif +@RESPATH@/res/table-add-row-after-hover.gif +@RESPATH@/res/table-add-row-after.gif +@RESPATH@/res/table-add-row-before-active.gif +@RESPATH@/res/table-add-row-before-hover.gif +@RESPATH@/res/table-add-row-before.gif +@RESPATH@/res/table-remove-column-active.gif +@RESPATH@/res/table-remove-column-hover.gif +@RESPATH@/res/table-remove-column.gif +@RESPATH@/res/table-remove-row-active.gif +@RESPATH@/res/table-remove-row-hover.gif +@RESPATH@/res/table-remove-row.gif +#ifdef XP_MACOSX +@RESPATH@/res/cursors/* +#endif +@RESPATH@/res/fonts/* +@RESPATH@/res/dtd/* +#ifdef XP_MACOSX +@RESPATH@/res/MainMenu.nib/ +#endif + +; Content-accessible resources. +@RESPATH@/contentaccessible/* + +; [Personal Security Manager] +; +; NSS libraries are signed in the staging directory, +; meaning their .chk files are created there directly. +; +#ifndef MOZ_SYSTEM_NSS +#if defined(XP_LINUX) && !defined(ANDROID) +@BINPATH@/@DLL_PREFIX@freeblpriv3@DLL_SUFFIX@ +#else +@BINPATH@/@DLL_PREFIX@freebl3@DLL_SUFFIX@ +#endif +@BINPATH@/@DLL_PREFIX@nss3@DLL_SUFFIX@ +@BINPATH@/@DLL_PREFIX@nssckbi@DLL_SUFFIX@ +#ifndef MOZ_FOLD_LIBS +@BINPATH@/@DLL_PREFIX@nssutil3@DLL_SUFFIX@ +@BINPATH@/@DLL_PREFIX@smime3@DLL_SUFFIX@ +@BINPATH@/@DLL_PREFIX@ssl3@DLL_SUFFIX@ +#endif +@BINPATH@/@DLL_PREFIX@softokn3@DLL_SUFFIX@ +#endif +@RESPATH@/chrome/pippki@JAREXT@ +@RESPATH@/chrome/pippki.manifest + +; For process sandboxing +#if defined(MOZ_SANDBOX) +#if defined(XP_LINUX) +@BINPATH@/@DLL_PREFIX@mozsandbox@DLL_SUFFIX@ +#endif +#endif + +; for Solaris SPARC +#ifdef SOLARIS +bin/libfreebl_32fpu_3.so +bin/libfreebl_32int_3.so +bin/libfreebl_32int64_3.so +#endif + +; [MAN pages] +#ifdef UNIX_BUT_NOT_MAC +man/* +#endif + +; [Updater] +; +#ifdef MOZ_UPDATER +#ifdef XP_MACOSX +@BINPATH@/updater.app/ +#else +@BINPATH@/updater@BIN_SUFFIX@ +#endif +#endif + +; [Crash Reporter] +; +#ifdef MOZ_CRASHREPORTER +#ifdef XP_MACOSX +@BINPATH@/crashreporter.app/ +#else +@BINPATH@/crashreporter@BIN_SUFFIX@ +@BINPATH@/minidump-analyzer@BIN_SUFFIX@ +@RESPATH@/crashreporter.ini +#ifdef XP_UNIX +@RESPATH@/Throbber-small.gif +#endif +#endif +@RESPATH@/crashreporter-override.ini +#ifdef MOZ_CRASHREPORTER_INJECTOR +@BINPATH@/breakpadinjector.dll +#endif +#endif + +; [ Ping Sender ] +; +@BINPATH@/pingsender@BIN_SUFFIX@ + +[mail] +; MailNews components + +; MailNews JS components +@RESPATH@/components/msgMime.manifest + +; MailNews chrome +@RESPATH@/chrome/messenger@JAREXT@ +@RESPATH@/chrome/messenger.manifest +@RESPATH@/chrome/newsblog@JAREXT@ +@RESPATH@/chrome/newsblog.manifest +#ifdef MOZ_GTK +@RESPATH@/chrome/icons/default/abcardWindow.png +@RESPATH@/chrome/icons/default/abcardWindow16.png +@RESPATH@/chrome/icons/default/abcardWindow48.png +@RESPATH@/chrome/icons/default/ablistWindow.png +@RESPATH@/chrome/icons/default/ablistWindow16.png +@RESPATH@/chrome/icons/default/ablistWindow48.png +@RESPATH@/chrome/icons/default/addressbookWindow.png +@RESPATH@/chrome/icons/default/addressbookWindow16.png +@RESPATH@/chrome/icons/default/addressbookWindow48.png +@RESPATH@/chrome/icons/default/messengerWindow.png +@RESPATH@/chrome/icons/default/messengerWindow16.png +@RESPATH@/chrome/icons/default/messengerWindow48.png +@RESPATH@/chrome/icons/default/msgcomposeWindow.png +@RESPATH@/chrome/icons/default/msgcomposeWindow16.png +@RESPATH@/chrome/icons/default/msgcomposeWindow48.png +#elifdef XP_WIN +@RESPATH@/chrome/icons/default/abcardWindow.ico +@RESPATH@/chrome/icons/default/ablistWindow.ico +@RESPATH@/chrome/icons/default/addressbookWindow.ico +@RESPATH@/chrome/icons/default/messengerWindow.ico +@RESPATH@/chrome/icons/default/msgcomposeWindow.ico +@RESPATH@/chrome/icons/default/calendar-alarm-dialog.ico +@RESPATH@/chrome/icons/default/calendar-event-dialog.ico +@RESPATH@/chrome/icons/default/calendar-event-summary-dialog.ico +@RESPATH@/chrome/icons/default/calendar-task-dialog.ico +@RESPATH@/chrome/icons/default/calendar-task-summary-dialog.ico +#endif + +; [MailNews Default Preferences] +@RESPATH@/@PREF_DIR@/mailnews.js +@RESPATH@/@PREF_DIR@/mdn.js +; @RESPATH@/@PREF_DIR@/e2e-prefs.js + +#ifdef MOZ_MAPI_SUPPORT +@BINPATH@/MapiProxy.dll +@BINPATH@/mozMapi32.dll +#endif + +@RESPATH@/isp/* + +; Gloda +@RESPATH@/chrome/gloda@JAREXT@ +@RESPATH@/chrome/gloda.manifest + +; Address Sanitizer +#ifdef LLVM_SYMBOLIZER +@BINPATH@/@LLVM_SYMBOLIZER@ +#endif + +#ifdef MOZ_CLANG_RT_ASAN_LIB +@BINPATH@/@MOZ_CLANG_RT_ASAN_LIB@ +#endif + +[chatzilla] +#ifdef MOZ_IRC +@RESPATH@/chrome/chatzilla@JAREXT@ +@RESPATH@/chrome/chatzilla.manifest +@RESPATH@/components/chatzilla-service.js +@RESPATH@/components/chatzilla-service.manifest +#endif + +[debugqa] +#ifdef MOZ_PACKAGE_DEBUGQA +@RESPATH@/extensions/debugQA@mozilla.org.xpi +#endif + +[calendar] +@RESPATH@/chrome/calendar@JAREXT@ +@RESPATH@/chrome/calendar.manifest + +@RESPATH@/@PREF_DIR@/calendar.js + +# Files added to components directory via `FINAL_TARGET_FILES.components`. +@RESPATH@/components/calCachedCalendar.js +@RESPATH@/components/calICSService-worker.js +@RESPATH@/components/calItemBase.js diff --git a/comm/suite/installer/removed-files.in b/comm/suite/installer/removed-files.in new file mode 100644 index 0000000000..b705de305e --- /dev/null +++ b/comm/suite/installer/removed-files.in @@ -0,0 +1,290 @@ +# Due to Apple macOS packaging requirements files that are in the same +# directory on other platforms must be located in different directories on +# macOS. The following defines allow specifying the macOS bundle +# location which also work on other platforms. +# +# @DIR_MACOS@ +# Equals Contents/MacOS/ on Mac OX X and is an empty string on other platforms. +# +# @DIR_RESOURCES@ +# Equals Contents/Resources/ on Mac OX X and is an empty string on other +# platforms. + +#ifdef XP_UNIX +#ifndef XP_MACOSX +#define UNIX_BUT_NOT_MAC +#endif +#endif +@DIR_MACOS@.autoreg +@DIR_MACOS@chrome/icons/default/abcardWindow.xpm +@DIR_MACOS@chrome/icons/default/abcardWindow16.xpm +@DIR_MACOS@chrome/icons/default/ablistWindow.xpm +@DIR_MACOS@chrome/icons/default/addressbookWindow.xpm +@DIR_MACOS@chrome/icons/default/addressbookWindow16.xpm +@DIR_MACOS@chrome/icons/default/bmPropsWindow.ico +@DIR_MACOS@chrome/icons/default/bmPropsWindow.png +@DIR_MACOS@chrome/icons/default/bmPropsWindow16.png +@DIR_MACOS@chrome/icons/default/bmPropsWindow48.png +@DIR_MACOS@chrome/icons/default/bmPropsWindow.xpm +@DIR_MACOS@chrome/icons/default/bmPropsWindow16.xpm +@DIR_MACOS@chrome/icons/default/bookmark-window.ico +@DIR_MACOS@chrome/icons/default/bookmark-window.png +@DIR_MACOS@chrome/icons/default/bookmark-window16.png +@DIR_MACOS@chrome/icons/default/bookmark-window48.png +@DIR_MACOS@chrome/icons/default/bookmark-window.xpm +@DIR_MACOS@chrome/icons/default/bookmark-window16.xpm +@DIR_MACOS@chrome/icons/default/calendar-window.xpm +@DIR_MACOS@chrome/icons/default/calendar-window16.xpm +@DIR_MACOS@chrome/icons/default/chatzilla-window.xpm +@DIR_MACOS@chrome/icons/default/chatzilla-window16.xpm +@DIR_MACOS@chrome/icons/default/default.xpm +@DIR_MACOS@chrome/icons/default/default16.xpm +@DIR_MACOS@chrome/icons/default/downloadManager.xpm +@DIR_MACOS@chrome/icons/default/downloadManager16.xpm +@DIR_MACOS@chrome/icons/default/editorWindow.xpm +@DIR_MACOS@chrome/icons/default/editorWindow16.xpm +@DIR_MACOS@chrome/icons/default/findBookmarkWindow.xpm +@DIR_MACOS@chrome/icons/default/findBookmarkWindow16.xpm +@DIR_MACOS@chrome/icons/default/findHistoryWindow.xpm +@DIR_MACOS@chrome/icons/default/findHistoryWindow16.xpm +@DIR_MACOS@chrome/icons/default/history-window.xpm +@DIR_MACOS@chrome/icons/default/history-window16.xpm +@DIR_MACOS@chrome/icons/default/JSConsoleWindow.xpm +@DIR_MACOS@chrome/icons/default/jsconsoleWindow.xpm +@DIR_MACOS@chrome/icons/default/jsconsoleWindow16.xpm +@DIR_MACOS@chrome/icons/default/main-window.xpm +@DIR_MACOS@chrome/icons/default/main-window16.xpm +@DIR_MACOS@chrome/icons/default/messengerWindow.xpm +@DIR_MACOS@chrome/icons/default/messengerWindow16.xpm +@DIR_MACOS@chrome/icons/default/msgcomposeWindow.xpm +@DIR_MACOS@chrome/icons/default/msgcomposeWindow16.xpm +@DIR_MACOS@chrome/icons/default/venkman-window.xpm +@DIR_MACOS@chrome/icons/default/venkman-window16.xpm +#ifndef MOZ_CRASHREPORTER +#ifdef XP_MACOSX +@DIR_MACOS@crashreporter.app/ +#else +@DIR_MACOS@crashreporter@BIN_SUFFIX@ +@DIR_MACOS@crashreporter.ini +#endif +#endif +@DIR_MACOS@defaults/profile/localstore.rdf +@DIR_MACOS@defaults/profile/search.rdf +@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/components/components.list +@DIR_MACOS@extensions/inspector@mozilla.org/components/components.list + +# Remove unpacked lightning extension. +# Depending on the previous installed version it might reside in one of two +# different places. +@DIR_RESOURCES@extensions/ +@DIR_RESOURCES@extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/* +@DIR_RESOURCES@distribution/ +@DIR_RESOURCES@distribution/extensions/ +@DIR_RESOURCES@distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}/* + +# Remove old extensions in distribution. +@DIR_RESOURCES@distribution/extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}.xpi +@DIR_RESOURCES@distribution/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}.xpi +@DIR_RESOURCES@distribution/extensions/debugQA@mozilla.org.xpi +@DIR_RESOURCES@distribution/extensions/inspector@mozilla.org.xpi + +@DIR_MACOS@hyphenation/ +@DIR_MACOS@hyphenation/hyph_af.dic +@DIR_MACOS@hyphenation/hyph_bg.dic +@DIR_MACOS@hyphenation/hyph_ca.dic +@DIR_MACOS@hyphenation/hyph_cy.dic +@DIR_MACOS@hyphenation/hyph_da.dic +@DIR_MACOS@hyphenation/hyph_de-1901.dic +@DIR_MACOS@hyphenation/hyph_de-1996.dic +@DIR_MACOS@hyphenation/hyph_de-CH.dic +@DIR_MACOS@hyphenation/hyph_en_US.dic +@DIR_MACOS@hyphenation/hyph_eo.dic +@DIR_MACOS@hyphenation/hyph_es.dic +@DIR_MACOS@hyphenation/hyph_et.dic +@DIR_MACOS@hyphenation/hyph_fi.dic +@DIR_MACOS@hyphenation/hyph_fr.dic +@DIR_MACOS@hyphenation/hyph_gl.dic +@DIR_MACOS@hyphenation/hyph_hr.dic +@DIR_MACOS@hyphenation/hyph_hsb.dic +@DIR_MACOS@hyphenation/hyph_hu.dic +@DIR_MACOS@hyphenation/hyph_ia.dic +@DIR_MACOS@hyphenation/hyph_is.dic +@DIR_MACOS@hyphenation/hyph_it.dic +@DIR_MACOS@hyphenation/hyph_kmr.dic +@DIR_MACOS@hyphenation/hyph_la.dic +@DIR_MACOS@hyphenation/hyph_lt.dic +@DIR_MACOS@hyphenation/hyph_mn.dic +@DIR_MACOS@hyphenation/hyph_nb.dic +@DIR_MACOS@hyphenation/hyph_nl.dic +@DIR_MACOS@hyphenation/hyph_nn.dic +@DIR_MACOS@hyphenation/hyph_pt.dic +@DIR_MACOS@hyphenation/hyph_ru.dic +@DIR_MACOS@hyphenation/hyph_sh.dic +@DIR_MACOS@hyphenation/hyph_sl.dic +@DIR_MACOS@hyphenation/hyph_sv.dic +@DIR_MACOS@hyphenation/hyph_tr.dic +@DIR_MACOS@hyphenation/hyph_uk.dic +@DIR_MACOS@LICENSE +#ifdef XP_MACOSX + @DIR_MACOS@run-mozilla.sh + @DIR_MACOS@updater.app/Contents/MacOS/updater.ini +#endif +@DIR_MACOS@res/arrow.gif +@DIR_MACOS@res/arrowd.gif +@DIR_MACOS@res/broken-image.gif +@DIR_MACOS@res/broken-image.png +@DIR_MACOS@res/loading-image.gif +@DIR_MACOS@res/loading-image.png +@DIR_MACOS@searchplugins/ +#ifndef MOZ_CRASHREPORTER +#ifdef UNIX_BUT_NOT_MAC +@DIR_MACOS@res/Throbber-small.gif +#endif +#endif +#ifndef MOZ_UPDATER + @DIR_MACOS@update-settings.ini + #ifdef XP_MACOSX + @DIR_MACOS@updater.app/ + #else + @DIR_MACOS@updater@BIN_SUFFIX@ + #endif + @DIR_MACOS@updater.ini +#endif +@DIR_MACOS@update.locale + +@DIR_MACOS@defaults/profile/bookmarks.html +@DIR_MACOS@defaults/pref/browser-prefs.js +@DIR_MACOS@defaults/pref/composer.js +@DIR_MACOS@defaults/pref/mailnews.js +@DIR_MACOS@defaults/pref/mdn.js +@DIR_MACOS@defaults/pref/services-aitc.js +@DIR_MACOS@defaults/pref/services-notifications.js +@DIR_MACOS@defaults/pref/smime.js +@DIR_MACOS@defaults/autoconfig/ +@DIR_MACOS@defaults/autoconfig/platform.js +@DIR_MACOS@defaults/autoconfig/prefcalls.js +@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/ +@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/ +@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/chatzilla.jar +@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/ +@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/ +@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/chatzilla-window.xpm +@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/chatzilla-window16.xpm +@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome/icons/default/chatzilla-window.ico +@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/chrome.manifest +@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/components/ +@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/components/chatzilla-service.js +@DIR_MACOS@extensions/{59c81df5-4b7a-477b-912d-4e0fdf64e5f2}/install.rdf +@DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/ +@DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/chrome.manifest +@DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png +@DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf +@DIR_MACOS@extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/preview.png +@DIR_MACOS@extensions/debugQA@mozilla.org/ +@DIR_MACOS@extensions/debugQA@mozilla.org/install.rdf +@DIR_MACOS@extensions/debugQA@mozilla.org/chrome.manifest +@DIR_MACOS@extensions/debugQA@mozilla.org/chrome/ +@DIR_MACOS@extensions/debugQA@mozilla.org/chrome/debugqa.jar +@DIR_MACOS@extensions/inspector@mozilla.org/ +@DIR_MACOS@extensions/inspector@mozilla.org/install.rdf +@DIR_MACOS@extensions/inspector@mozilla.org/chrome.manifest +@DIR_MACOS@extensions/inspector@mozilla.org/chrome/ +@DIR_MACOS@extensions/inspector@mozilla.org/chrome/inspector.jar +@DIR_MACOS@extensions/inspector@mozilla.org/platform/ +@DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/ +@DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/ +@DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/icons/ +@DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/icons/default/ +@DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/icons/default/winInspectorMain16.xpm +@DIR_MACOS@extensions/inspector@mozilla.org/platform/Linux/chrome/icons/default/winInspectorMain.xpm +@DIR_MACOS@extensions/inspector@mozilla.org/platform/WINNT/chrome/icons/default/winInspectorMain.ico +@DIR_MACOS@extensions/inspector@mozilla.org/components/ +@DIR_MACOS@extensions/inspector@mozilla.org/components/inspector-cmdline.js +@DIR_MACOS@extensions/inspector@mozilla.org/defaults/ +@DIR_MACOS@extensions/inspector@mozilla.org/defaults/preferences/ +@DIR_MACOS@extensions/inspector@mozilla.org/defaults/preferences/inspector.js +@DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/chrome/chatzilla.jar +@DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/chrome/chatzilla.manifest +@DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/chrome.manifest +@DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/install.js +@DIR_MACOS@extensions/langpack-ca@chatzilla.mozilla.org/install.rdf +@DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/chrome/chatzilla.jar +@DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/chrome/chatzilla.manifest +@DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/chrome.manifest +@DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/install.js +@DIR_MACOS@extensions/langpack-cs@chatzilla.mozilla.org/install.rdf +@DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/chrome/chatzilla.jar +@DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/chrome/chatzilla.manifest +@DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/chrome.manifest +@DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/install.js +@DIR_MACOS@extensions/langpack-de@chatzilla.mozilla.org/install.rdf +@DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/chrome/chatzilla.jar +@DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/chrome/chatzilla.manifest +@DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/chrome.manifest +@DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/install.js +@DIR_MACOS@extensions/langpack-es-ES@chatzilla.mozilla.org/install.rdf +@DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/install.rdf +@DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/chrome/chatzilla.jar +@DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/chrome/chatzilla.manifest +@DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/chrome.manifest +@DIR_MACOS@extensions/langpack-fi@chatzilla.mozilla.org/install.js +@DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/chrome/chatzilla.jar +@DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/chrome/chatzilla.manifest +@DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/chrome.manifest +@DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/install.js +@DIR_MACOS@extensions/langpack-fr@chatzilla.mozilla.org/install.rdf +@DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/chrome/chatzilla.jar +@DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/chrome/chatzilla.manifest +@DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/chrome.manifest +@DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/install.js +@DIR_MACOS@extensions/langpack-it@chatzilla.mozilla.org/install.rdf +@DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/chrome/chatzilla.jar +@DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/chrome/chatzilla.manifest +@DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/chrome.manifest +@DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/install.js +@DIR_MACOS@extensions/langpack-ja@chatzilla.mozilla.org/install.rdf +@DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/chrome/chatzilla.jar +@DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/chrome/chatzilla.manifest +@DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/chrome.manifest +@DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/install.js +@DIR_MACOS@extensions/langpack-ja-JP-mac@chatzilla.mozilla.org/install.rdf +@DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/chrome/chatzilla.jar +@DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/chrome/chatzilla.manifest +@DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/chrome.manifest +@DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/install.js +@DIR_MACOS@extensions/langpack-nb-NO@chatzilla.mozilla.org/install.rdf +@DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/install.rdf +@DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/chrome/chatzilla.jar +@DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/chrome/chatzilla.manifest +@DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/chrome.manifest +@DIR_MACOS@extensions/langpack-pl@chatzilla.mozilla.org/install.js +@DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/chrome/chatzilla.jar +@DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/chrome/chatzilla.manifest +@DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/chrome.manifest +@DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/install.js +@DIR_MACOS@extensions/langpack-pt-BR@chatzilla.mozilla.org/install.rdf +@DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/chrome/chatzilla.jar +@DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/chrome/chatzilla.manifest +@DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/chrome.manifest +@DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/install.js +@DIR_MACOS@extensions/langpack-pt-PT@chatzilla.mozilla.org/install.rdf +@DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/chrome/chatzilla.jar +@DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/chrome/chatzilla.manifest +@DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/chrome.manifest +@DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/install.js +@DIR_MACOS@extensions/langpack-ru@chatzilla.mozilla.org/install.rdf +@DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/chrome/chatzilla.jar +@DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/chrome/chatzilla.manifest +@DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/chrome.manifest +@DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/install.js +@DIR_MACOS@extensions/langpack-si@chatzilla.mozilla.org/install.rdf +@DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/chrome/chatzilla.jar +@DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/chrome/chatzilla.manifest +@DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/chrome.manifest +@DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/install.js +@DIR_MACOS@extensions/langpack-sk@chatzilla.mozilla.org/install.rdf +@DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/chrome/chatzilla.jar +@DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/chrome/chatzilla.manifest +@DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/chrome.manifest +@DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/install.js +@DIR_MACOS@extensions/langpack-sv-SE@chatzilla.mozilla.org/install.rdf diff --git a/comm/suite/installer/windows/Makefile.in b/comm/suite/installer/windows/Makefile.in new file mode 100644 index 0000000000..7bdc367ef4 --- /dev/null +++ b/comm/suite/installer/windows/Makefile.in @@ -0,0 +1,55 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +include $(topsrcdir)/toolkit/mozapps/installer/package-name.mk + +CONFIG_DIR = instgen +SFX_MODULE = $(topsrcdir)/comm/other-licenses/7zstub/seamonkey/7zSD.sfx + +EXPAND_COMM_LOCALE_SRCDIR = $(if $(filter en-US,$(AB_CD)),$(topsrcdir)/comm/$(1)/en-US,$(or $(realpath $(L10NBASEDIR)),$(abspath $(L10NBASEDIR)))/$(AB_CD)/$(subst /locales,,$(1))) + +INSTALLER_FILES = \ + app.tag \ + nsis/installer.nsi \ + nsis/uninstaller.nsi \ + nsis/shared.nsh \ + nsis/custom.nsi \ + $(NULL) + +BRANDING_FILES = \ + branding.nsi \ + wizHeader.bmp \ + wizHeaderRTL.bmp \ + wizWatermark.bmp \ + $(NULL) + +include $(topsrcdir)/config/config.mk + +ifdef IS_LANGUAGE_REPACK +PPL_LOCALE_ARGS = \ + --l10n-dir=$(REAL_LOCALE_MERGEDIR)/suite/installer/windows \ + --l10n-dir=$(call EXPAND_COMM_LOCALE_SRCDIR,suite/locales)/installer/windows \ + --l10n-dir=$(topsrcdir)/comm/suite/locales/en-US/installer/windows \ + $(NULL) +else +PPL_LOCALE_ARGS=$(call EXPAND_COMM_LOCALE_SRCDIR,suite/locales)/installer/windows +endif + +$(CONFIG_DIR)/setup.exe:: + $(RM) -r $(CONFIG_DIR) + $(MKDIR) $(CONFIG_DIR) + $(INSTALL) $(addprefix $(srcdir)/,$(INSTALLER_FILES)) $(CONFIG_DIR) + $(INSTALL) $(addprefix $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/,$(BRANDING_FILES)) $(CONFIG_DIR) + $(PYTHON3) $(topsrcdir)/toolkit/mozapps/installer/windows/nsis/preprocess-locale.py \ + --convert-utf8-utf16le $(topsrcdir)/comm/suite/installer/license.txt $(CONFIG_DIR)/license.txt + $(call py_action,preprocessor,-Fsubstitution $(DEFINES) $(ACDEFINES) \ + $(srcdir)/nsis/defines.nsi.in -o $(CONFIG_DIR)/defines.nsi) + $(PYTHON3) $(topsrcdir)/toolkit/mozapps/installer/windows/nsis/preprocess-locale.py \ + --preprocess-locale $(topsrcdir) \ + $(PPL_LOCALE_ARGS) $(AB_CD) $(CONFIG_DIR) + +GARBARGE_DIRS += instgen + +include $(topsrcdir)/config/rules.mk +include $(topsrcdir)/toolkit/mozapps/installer/windows/nsis/makensis.mk diff --git a/comm/suite/installer/windows/app.tag b/comm/suite/installer/windows/app.tag new file mode 100644 index 0000000000..628717e1eb --- /dev/null +++ b/comm/suite/installer/windows/app.tag @@ -0,0 +1,4 @@ +;!@Install@!UTF-8! +Title="SeaMonkey" +RunProgram="setup.exe" +;!@InstallEnd@! diff --git a/comm/suite/installer/windows/moz.build b/comm/suite/installer/windows/moz.build new file mode 100644 index 0000000000..9a388e7c2a --- /dev/null +++ b/comm/suite/installer/windows/moz.build @@ -0,0 +1,10 @@ +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +DEFINES["APP_VERSION"] = CONFIG["SEAMONKEY_VERSION"] + +DEFINES["MOZ_APP_NAME"] = CONFIG["MOZ_APP_NAME"] +DEFINES["MOZ_APP_DISPLAYNAME"] = CONFIG["MOZ_APP_DISPLAYNAME"] +DEFINES["MOZILLA_VERSION"] = CONFIG["MOZILLA_VERSION"] diff --git a/comm/suite/installer/windows/nsis/custom.nsi b/comm/suite/installer/windows/nsis/custom.nsi new file mode 100644 index 0000000000..660f4259e4 --- /dev/null +++ b/comm/suite/installer/windows/nsis/custom.nsi @@ -0,0 +1,68 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +!macro checkSuiteComponents + ; If no extensions are available skip the components page + ${Unless} ${FileExists} "$EXEDIR\optional\extensions\debugQA@mozilla.org.xpi" + ${AndUnless} ${FileExists} "$EXEDIR\optional\extensions\{f13b157f-b174-47e7-a34d-4815ddfdfeb8}.xpi" + Abort + ${EndUnless} +!macroend + +!macro createSuiteComponentsIni + WriteINIStr "$PLUGINSDIR\components.ini" "Field 1" Type "label" + WriteINIStr "$PLUGINSDIR\components.ini" "Field 1" Text "$(OPTIONAL_COMPONENTS_LABEL)" + WriteINIStr "$PLUGINSDIR\components.ini" "Field 1" Left "0" + WriteINIStr "$PLUGINSDIR\components.ini" "Field 1" Right "-1" + WriteINIStr "$PLUGINSDIR\components.ini" "Field 1" Top "0" + WriteINIStr "$PLUGINSDIR\components.ini" "Field 1" Bottom "15" + + StrCpy $R1 2 + ; Top of checkbox + StrCpy $R2 15 + ; Bottom of checkbox + StrCpy $R3 25 + ; Seperation between titles/text + StrCpy $R4 25 + + ${If} ${FileExists} "$EXEDIR\optional\extensions\debugQA@mozilla.org.xpi" + WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Type "checkbox" + WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Text "$(DEBUGQA_TITLE)" + WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Left "15" + WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Right "-1" + WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Top "$R2" + WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Bottom "$R3" + WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" State "1" + WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Flags "GROUP" + ${GetSize} "$EXEDIR\optional\extensions\debugQA@mozilla.org.xpi" "/S=0K" $0 $8 $9 + SectionSetSize ${DEBUG_IDX} $0 + IntOp $R1 $R1 + 1 + IntOp $R2 $R2 + $R4 + IntOp $R3 $R3 + $R4 + ${Else} + ; Hide debugQA in the components page if it isn't available. + SectionSetText ${DEBUG_IDX} "" + ${EndIf} + + ; Set new values for the top and bottom of labels + ; Top of label box + StrCpy $R2 27 + ; Bottom of label box + StrCpy $R3 47 + + ${If} ${FileExists} "$EXEDIR\optional\extensions\debugQA@mozilla.org.xpi" + WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Type "label" + WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Text "$(DEBUGQA_TEXT)" + WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Left "30" + WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Right "-1" + WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Top "$R2" + WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Bottom "$R3" + IntOp $R1 $R1 + 1 + IntOp $R2 $R2 + $R4 + IntOp $R3 $R3 + $R4 + ${EndIf} + + WriteINIStr "$PLUGINSDIR\components.ini" "Settings" NumFields "$R1" + +!macroend diff --git a/comm/suite/installer/windows/nsis/defines.nsi.in b/comm/suite/installer/windows/nsis/defines.nsi.in new file mode 100644 index 0000000000..a4814c3a69 --- /dev/null +++ b/comm/suite/installer/windows/nsis/defines.nsi.in @@ -0,0 +1,64 @@ +#filter substitution +!define AppName "SeaMonkey" +!define AppVersion "@APP_VERSION@" +!define GREVersion @MOZILLA_VERSION@ +!define AB_CD "@AB_CD@" +!define NO_UNINSTALL_SURVEY + +!define FileMainEXE "@MOZ_APP_NAME@.exe" +!define WindowClass "SeaMonkeyMessageWindow" +!define DDEApplication "SeaMonkey" + +!define AppRegName "SeaMonkey" +!define AppRegNameMail "SeaMonkey (Mail)" +!define AppRegNameNews "SeaMonkey (News)" + +!define BrandProductName "@MOZ_APP_DISPLAYNAME@" + +!define BrandShortName "@MOZ_APP_DISPLAYNAME@" +!define BrandFullName "${BrandFullNameInternal}" + +# ARCH is used when it is necessary to differentiate the x64 registry keys from +# the x86 registry keys (e.g. the uninstall registry key). +#ifdef HAVE_64BIT_BUILD +!define HAVE_64BIT_BUILD +!define ARCH "x64" +!define MinSupportedVer "Microsoft Windows 7 x64" +#else +!define ARCH "x86" +!define MinSupportedVer "Microsoft Windows 7" +#endif + +!define MinSupportedCPU "SSE2" + +# AccessibleHandler.dll uses a different CLSID depending on release channel. +# These defines must match HANDLER_CLSID defined in +# accessible/ipc/win/handler/HandlerData.idl + +!if "@MOZ_UPDATE_CHANNEL@" == "default" +#ifdef DEBUG +!define AccessibleHandlerCLSID "{398FFD8D-5382-48F7-9E3B-19012762D39A}" +#else +!define AccessibleHandlerCLSID "{CE573FAF-7815-4FC2-A031-B092268ACE9E}" +#endif +!else if "@MOZ_UPDATE_CHANNEL@" == "nightly" +!define AccessibleHandlerCLSID "{4629216B-8753-41BF-9527-5BFF51401671}" +!else if "@MOZ_UPDATE_CHANNEL@" == "beta" +!define AccessibleHandlerCLSID "{21E9F98D-A6C9-4CB5-B288-AE2FD2A96C58}" +!else if "@MOZ_UPDATE_CHANNEL@" == "release" +!define AccessibleHandlerCLSID "{1BAA303D-B4B9-45E5-9CCB-E3FCA3E274B6}" +!else +!define AccessibleHandlerCLSID "{4A195748-DCA2-45FB-9295-0A139E76A9E7}" +!endif + +# File details shared by both the installer and uninstaller +VIProductVersion "1.0.0.0" +VIAddVersionKey "ProductName" "${BrandShortName}" +VIAddVersionKey "CompanyName" "${CompanyName}" +VIAddVersionKey "LegalTrademarks" "${BrandShortName} is a Trademark of The Mozilla Foundation." +VIAddVersionKey "LegalCopyright" "${CompanyName}" +VIAddVersionKey "FileVersion" "${AppVersion}" +VIAddVersionKey "ProductVersion" "${AppVersion}" +# Comments is not used but left below commented out for future reference +# VIAddVersionKey "Comments" "Comments" + diff --git a/comm/suite/installer/windows/nsis/installer.nsi b/comm/suite/installer/windows/nsis/installer.nsi new file mode 100644 index 0000000000..d9ffd78069 --- /dev/null +++ b/comm/suite/installer/windows/nsis/installer.nsi @@ -0,0 +1,942 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# Also requires: +# AppAssocReg http://nsis.sourceforge.net/Application_Association_Registration_plug-in +# CityHash http://mxr.mozilla.org/mozilla-central/source/other-licenses/nsis/Contrib/CityHash +# ShellLink plugin http://nsis.sourceforge.net/ShellLink_plug-in +# UAC http://nsis.sourceforge.net/UAC_plug-in + +; Set verbosity to 3 (e.g. no script) to lessen the noise in the build logs +!verbose 3 + +; 7-Zip provides better compression than the lzma from NSIS so we add the files +; uncompressed and use 7-Zip to create a SFX archive of it +SetDatablockOptimize on +SetCompress off +CRCCheck on + +RequestExecutionLevel user + +Unicode true +ManifestSupportedOS all +ManifestDPIAware true + +!addplugindir ./ + +Var TmpVal +Var StartMenuDir +Var InstallType +Var AddStartMenuSC +Var AddTaskbarSC +Var AddQuickLaunchSC +Var AddDesktopSC +Var InstallMaintenanceService +Var InstallOptionalExtensions +Var RegisterDefaultAgent + +; Other included files may depend upon these includes! +; The following includes are provided by NSIS. +!include FileFunc.nsh +!include LogicLib.nsh +!include WinMessages.nsh +!include WinVer.nsh +!include WordFunc.nsh +!include MUI.nsh + +!insertmacro StrFilter +!insertmacro GetOptions +!insertmacro GetParameters +!insertmacro GetSize +!insertmacro WordFind + +; The following includes are custom. +!include branding.nsi +!include defines.nsi +!include common.nsh +!include locales.nsi +!include custom.nsi + +VIAddVersionKey "FileDescription" "${BrandShortName} Installer" +VIAddVersionKey "OriginalFilename" "setup.exe" + +; Must be inserted before other macros that use logging +!insertmacro _LoggingCommon + +; Most commonly used macros for managing shortcuts +!insertmacro _LoggingShortcutsCommon + +!insertmacro AddDisabledDDEHandlerValues +!insertmacro AddHandlerValues +!insertmacro ChangeMUIHeaderImage +!insertmacro CheckForFilesInUse +!insertmacro CheckIfRegistryKeyExists +!insertmacro CleanUpdateDirectories +!insertmacro CopyFilesFromDir +!insertmacro CreateRegKey +!insertmacro FindSMProgramsDir +!insertmacro GetPathFromString +!insertmacro GetParent +!insertmacro InitHashAppModelId +!insertmacro IsHandlerForInstallDir +!insertmacro ManualCloseAppPrompt +!insertmacro RegCleanMain +!insertmacro RegCleanUninstall +!insertmacro SetBrandNameVars +!insertmacro UnloadUAC +!insertmacro WriteRegStr2 +!insertmacro WriteRegDWORD2 + +!include shared.nsh + +; Helper macros for ui callbacks. Insert these after shared.nsh +!insertmacro CheckCustomCommon +!insertmacro InstallEndCleanupCommon +!insertmacro InstallOnInitCommon +!insertmacro InstallStartCleanupCommon +!insertmacro LeaveDirectoryCommon +!insertmacro LeaveOptionsCommon +!insertmacro OnEndCommon +!insertmacro PreDirectoryCommon + +Name "${BrandFullName}" +OutFile "setup.exe" +!ifdef HAVE_64BIT_BUILD + InstallDir "$PROGRAMFILES64\${BrandFullName}\" +!else + InstallDir "$PROGRAMFILES32\${BrandFullName}\" +!endif +ShowInstDetails nevershow + +################################################################################ +# Modern User Interface - MUI + +!define MUI_ABORTWARNING +!define MUI_ICON setup.ico +!define MUI_UNICON setup.ico +!define MUI_WELCOMEPAGE_TITLE_3LINES +!define MUI_HEADERIMAGE +!define MUI_HEADERIMAGE_RIGHT +!define MUI_WELCOMEFINISHPAGE_BITMAP wizWatermark.bmp + +; Use a right to left header image when the language is right to left +!ifdef ${AB_CD}_rtl +!define MUI_HEADERIMAGE_BITMAP_RTL wizHeaderRTL.bmp +!else +!define MUI_HEADERIMAGE_BITMAP wizHeader.bmp +!endif + +/** + * Installation Pages + */ +; Welcome Page +!define MUI_PAGE_CUSTOMFUNCTION_PRE preWelcome +!insertmacro MUI_PAGE_WELCOME + +; License Page +!define MUI_PAGE_CUSTOMFUNCTION_SHOW showLicense +!define MUI_LICENSEPAGE_CHECKBOX +!insertmacro MUI_PAGE_LICENSE license.txt + +; Custom Options Page +Page custom preOptions leaveOptions + +; Custom Components Page +Page custom preComponents leaveComponents + +; Select Install Directory Page +!define MUI_PAGE_CUSTOMFUNCTION_PRE preDirectory +!define MUI_PAGE_CUSTOMFUNCTION_LEAVE leaveDirectory +!define MUI_DIRECTORYPAGE_VERIFYONLEAVE +!insertmacro MUI_PAGE_DIRECTORY + +; Custom Shortcuts Page +Page custom preShortcuts leaveShortcuts + +; Start Menu Folder Page Configuration +!define MUI_PAGE_CUSTOMFUNCTION_PRE preStartMenu +!define MUI_PAGE_CUSTOMFUNCTION_LEAVE leaveStartMenu +!define MUI_STARTMENUPAGE_NODISABLE +!insertmacro MUI_PAGE_STARTMENU Application $StartMenuDir + +; Custom Summary Page +Page custom preSummary leaveSummary + +; Install Files Page +!insertmacro MUI_PAGE_INSTFILES + +; Finish Page +!define MUI_FINISHPAGE_TITLE_3LINES +!define MUI_FINISHPAGE_RUN +!define MUI_FINISHPAGE_RUN_FUNCTION LaunchApp +!define MUI_FINISHPAGE_RUN_TEXT $(LAUNCH_TEXT) +!define MUI_PAGE_CUSTOMFUNCTION_PRE preFinish +!insertmacro MUI_PAGE_FINISH + +; Use the default dialog for IDD_VERIFY for a simple Banner +ChangeUI IDD_VERIFY "${NSISDIR}\Contrib\UIs\default.exe" + +################################################################################ + +; Cleanup operations to perform at the start of the installation. +Section "-InstallStartCleanup" + SetDetailsPrint both + DetailPrint $(STATUS_CLEANUP) + SetDetailsPrint none + + SetOutPath "$INSTDIR" + ${StartInstallLog} "${BrandFullName}" "${AB_CD}" "${AppVersion}" "${GREVersion}" + + ; Delete the app exe to prevent launching the app while we are installing. + ClearErrors + ${DeleteFile} "$INSTDIR\${FileMainEXE}" + ${If} ${Errors} + ; If the user closed the application it can take several seconds for it to + ; shut down completely. If the application is being used by another user we + ; can rename the file and then delete is when the system is restarted. + Sleep 5000 + ${DeleteFile} "$INSTDIR\${FileMainEXE}" + ClearErrors + ${EndIf} + + ${If} $InstallType == ${INSTALLTYPE_CUSTOM} + ; Custom installs. + ; If DebugQA is installed and this install includes DebugQA remove it + ; from the installation directory. This will remove it if the user + ; deselected DebugQA on the components page. + ${If} ${FileExists} "$EXEDIR\optional\extensions\debugQA@mozilla.org.xpi" + ${DeleteFile} "$INSTDIR\extensions\debugQA@mozilla.org.xpi" + ${If} ${FileExists} "$INSTDIR\extensions\debugQA@mozilla.org" + RmDir /r "$INSTDIR\extensions\debugQA@mozilla.org" + ${EndIf} + ${EndIf} + + ${EndIf} + + ; setup the application model id registration value + ${InitHashAppModelId} "$INSTDIR" "Software\Mozilla\${AppName}\TaskBarIDs" + + ; Remove the updates directory for Windows 7 and above + ${CleanUpdateDirectories} "Mozilla\SeaMonkey" "Mozilla\updates" + + ${RemoveDeprecatedFiles} + + ${InstallStartCleanupCommon} +SectionEnd + +Section "-Application" APP_IDX + ${StartUninstallLog} + + SetDetailsPrint both + DetailPrint $(STATUS_INSTALL_APP) + SetDetailsPrint none + + ${LogHeader} "Installing Main Files" + ${CopyFilesFromDir} "$EXEDIR\core" "$INSTDIR" \ + "$(ERROR_CREATE_DIRECTORY_PREFIX)" \ + "$(ERROR_CREATE_DIRECTORY_SUFFIX)" + + ; The MAPI DLL's are copied and the copies are then registered to lessen + ; file in use errors on application update. + ClearErrors + ${DeleteFile} "$INSTDIR\MapiProxy_InUse.dll" + ${If} ${Errors} + ; Clear the way for the new file and delete the old file on reboot + Rename "$INSTDIR\MapiProxy_InUse.dll" "$INSTDIR\MapiProxy_InUse.dll.moz-delete" + Delete /REBOOTOK "$INSTDIR\MapiProxy_InUse.dll.moz-delete" + ${EndIf} + CopyFiles /SILENT "$EXEDIR\core\MapiProxy.dll" "$INSTDIR\MapiProxy_InUse.dll" + ${LogMsg} "Installed File: $INSTDIR\MapiProxy_InUse.dll" + ${LogUninstall} "File: \MapiProxy_InUse.dll" + + ClearErrors + ${DeleteFile} "$INSTDIR\mozMapi32_InUse.dll" + ${If} ${Errors} + ; Clear the way for the new file and delete the old file on reboot + Rename "$INSTDIR\mozMapi32_InUse.dll" "$INSTDIR\mozMapi32_InUse.dll.moz-delete" + Delete /REBOOTOK "$INSTDIR\mozMapi32_InUse.dll.moz-delete" + ${EndIf} + CopyFiles /SILENT "$EXEDIR\core\mozMapi32.dll" "$INSTDIR\mozMapi32_InUse.dll" + ${LogMsg} "Installed File: $INSTDIR\mozMapi32_InUse.dll" + ${LogUninstall} "File: \mozMapi32_InUse.dll" + + ; Register DLLs + ; XXXrstrong - AccessibleMarshal.dll can be used by multiple applications but + ; is only registered for the last application installed. When the last + ; application installed is uninstalled AccessibleMarshal.dll will no longer be + ; registered. bug 338878 + ${LogHeader} "DLL Registration" + + ClearErrors + + ${RegisterDLL} "$INSTDIR\AccessibleMarshal.dll" + ${If} ${Errors} + ${LogMsg} "** ERROR Registering: $INSTDIR\AccessibleMarshal.dll **" + ${Else} + ${LogUninstall} "DLLReg: \AccessibleMarshal.dll" + ${LogMsg} "Registered: $INSTDIR\AccessibleMarshal.dll" + ${EndIf} + + ClearErrors + + ${RegisterDLL} "$INSTDIR\AccessibleHandler.dll" + ${If} ${Errors} + ${LogMsg} "** ERROR Registering: $INSTDIR\AccessibleHandler.dll **" + ${Else} + ${LogUninstall} "DLLReg: \AccessibleHandler.dll" + ${LogMsg} "Registered: $INSTDIR\AccessibleHandler.dll" + ${EndIf} + + ; Write extra files created by the application to the uninstall log so they + ; will be removed when the application is uninstalled. To remove an empty + ; directory write a bogus filename to the deepest directory and all empty + ; parent directories will be removed. + ${LogUninstall} "File: \components\compreg.dat" + ${LogUninstall} "File: \components\xpti.dat" + ${LogUninstall} "File: \active-update.xml" + ${LogUninstall} "File: \install.log" + ${LogUninstall} "File: \install_status.log" + ${LogUninstall} "File: \install_wizard.log" + ${LogUninstall} "File: \updates.xml" + + ; Default for creating Start Menu folder and shortcuts + ; (1 = create, 0 = don't create) + ${If} $AddStartMenuSC == "" + StrCpy $AddStartMenuSC "1" + ${EndIf} + +; Default for creating Task Bar shortcuts + ; (1 = create, 0 = don't create) + ${If} $AddTaskbarSC == "" + StrCpy $AddTaskbarSC "1" + ${EndIf} + + ; Default for creating Quick Launch shortcut (1 = create, 0 = don't create) + ${If} $AddQuickLaunchSC == "" + StrCpy $AddQuickLaunchSC "1" + ${EndIf} + + ; Default for creating Desktop shortcut (1 = create, 0 = don't create) + ${If} $AddDesktopSC == "" + StrCpy $AddDesktopSC "1" + ${EndIf} + + ${LogHeader} "Adding Registry Entries" + SetShellVarContext current ; Set SHCTX to HKCU + ${RegCleanMain} "Software\Mozilla" + ${RegCleanUninstall} + ${UpdateProtocolHandlers} + + ClearErrors + WriteRegStr HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" "Write Test" + ${If} ${Errors} + StrCpy $TmpVal "HKCU" ; used primarily for logging + ${Else} + SetShellVarContext all ; Set SHCTX to HKLM + DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" + StrCpy $TmpVal "HKLM" ; used primarily for logging + ${RegCleanMain} "Software\Mozilla" + ${RegCleanUninstall} + ${UpdateProtocolHandlers} + ${EndIf} + + ; The previous installer adds several registry values to both HKLM and HKCU. + ; We now try to add to HKLM and if that fails to HKCU + + ; The order that reg keys and values are added is important if you use the + ; uninstall log to remove them on uninstall. When using the uninstall log you + ; MUST add children first so they will be removed first on uninstall so they + ; will be empty when the key is deleted. This allows the uninstaller to + ; specify that only empty keys will be deleted. + ${SetAppKeys} + + ${FixClassKeys} + + StrCpy $1 "$\"$8$\" -requestPending -osint -url $\"%1$\"" + StrCpy $2 "$\"%1$\",,0,0,,,," + StrCpy $3 "$\"$8$\" -url $\"%1$\"" + ${GetLongPath} "$INSTDIR\${FileMainEXE}" $8 + + ; An empty string is used for the 5th param because SeaMonkeyHTML is not a + ; protocol handler + ${AddHandlerValues} "SOFTWARE\Classes\SeaMonkeyHTML" "$3" \ + "$INSTDIR\chrome\icons\default\html-file.ico,0" \ + "${AppRegName} Document" "" "" + ${AddDisabledDDEHandlerValues} "SeaMonkeyURL" "$1" "$8,0" \ + "${AppRegName} URL" "" + + ${FixShellIconHandler} + + ; The following keys should only be set if we can write to HKLM + ${If} $TmpVal == "HKLM" + ; Uninstall keys can only exist under HKLM on some versions of windows. + ${SetUninstallKeys} + + ; Set the Start Menu Internet and Windows 7 Registered App HKLM registry keys. + ${SetStartMenuInternet} + ${SetClientsMail} + + ; If we are writing to HKLM and create the quick launch and the desktop + ; shortcuts set IconsVisible to 1 otherwise to 0. + ; Taskbar shortcuts imply having a start menu shortcut. + ${StrFilter} "${FileMainEXE}" "+" "" "" $R9 + ${If} $AddQuickLaunchSC == 1 + ${OrIf} $AddDesktopSC == 1 + ${OrIf} $AddTaskbarSC == 1 + StrCpy $0 "Software\Clients\StartMenuInternet\$R9\InstallInfo" + WriteRegDWORD HKLM "$0" "IconsVisible" 1 + StrCpy $0 "Software\Clients\Mail\${BrandFullNameInternal}\InstallInfo" + WriteRegDWORD HKLM "$0" "IconsVisible" 1 + ${Else} + StrCpy $0 "Software\Clients\StartMenuInternet\$R9\InstallInfo" + WriteRegDWORD HKLM "$0" "IconsVisible" 0 + StrCpy $0 "Software\Clients\Mail\${BrandFullNameInternal}\InstallInfo" + WriteRegDWORD HKLM "$0" "IconsVisible" 0 + ${EndIf} + ${EndIf} + + ; These need special handling on uninstall since they may be overwritten by + ; an install into a different location. + StrCpy $0 "Software\Microsoft\Windows\CurrentVersion\App Paths\${FileMainEXE}" + ${WriteRegStr2} $TmpVal "$0" "" "$INSTDIR\${FileMainEXE}" 0 + ${WriteRegStr2} $TmpVal "$0" "Path" "$INSTDIR" 0 + + StrCpy $0 "Software\Microsoft\MediaPlayer\ShimInclusionList\$R9" + ${CreateRegKey} "$TmpVal" "$0" 0 + StrCpy $0 "Software\Microsoft\MediaPlayer\ShimInclusionList\plugin-container.exe" + ${CreateRegKey} "$TmpVal" "$0" 0 + + !insertmacro MUI_STARTMENU_WRITE_BEGIN Application + + ; Create shortcuts + ${LogHeader} "Adding Shortcuts" + + ; Always add the relative path to the application's Start Menu directory and + ; the application's shortcuts to the shortcuts log ini file. The + ; DeleteShortcuts macro will do the right thing on uninstall if they don't + ; exist. + ${LogSMProgramsDirRelPath} "$StartMenuDir" + ${LogSMProgramsShortcut} "${BrandFullName}.lnk" + ${LogSMProgramsShortcut} "${BrandFullName} ($(SAFE_MODE)).lnk" + ${LogSMProgramsShortcut} "${BrandFullNameInternal} $(MAILNEWS_TEXT).lnk" + ${LogSMProgramsShortcut} "$(PROFILE_TEXT).lnk" + ${LogQuickLaunchShortcut} "${BrandFullName}.lnk" + ${LogDesktopShortcut} "${BrandFullName}.lnk" + + ${If} $AddStartMenuSC == 1 + ${Unless} ${FileExists} "$SMPROGRAMS\$StartMenuDir" + CreateDirectory "$SMPROGRAMS\$StartMenuDir" + ${LogMsg} "Added Start Menu Directory: $SMPROGRAMS\$StartMenuDir" + ${EndUnless} + CreateShortCut "$SMPROGRAMS\$StartMenuDir\${BrandFullName}.lnk" "$INSTDIR\${FileMainEXE}" "" "$INSTDIR\${FileMainEXE}" 0 + ${If} "$AppUserModelID" != "" + ApplicationID::Set "$SMPROGRAMS\$StartMenuDir\${BrandFullName}.lnk" "$AppUserModelID" + ${EndIf} + ${LogMsg} "Added Shortcut: $SMPROGRAMS\$StartMenuDir\${BrandFullName}.lnk" + CreateShortCut "$SMPROGRAMS\$StartMenuDir\${BrandFullName} ($(SAFE_MODE)).lnk" "$INSTDIR\${FileMainEXE}" "-safe-mode" "$INSTDIR\${FileMainEXE}" 0 + ${If} "$AppUserModelID" != "" + ApplicationID::Set "$SMPROGRAMS\$StartMenuDir\${BrandFullName} ($(SAFE_MODE)).lnk" "$AppUserModelID" + ${EndIf} + ${LogMsg} "Added Shortcut: $SMPROGRAMS\$StartMenuDir\${BrandFullName} ($(SAFE_MODE)).lnk" + CreateShortCut "$SMPROGRAMS\$StartMenuDir\${BrandFullName} $(MAILNEWS_TEXT).lnk" "$INSTDIR\${FileMainEXE}" "-mail" "$INSTDIR\chrome\icons\default\messengerWindow.ico" 0 + ${LogMsg} "Added Shortcut: $SMPROGRAMS\$StartMenuDir\${BrandFullName} $(MAILNEWS_TEXT).lnk" + CreateShortCut "$SMPROGRAMS\$StartMenuDir\$(PROFILE_TEXT).lnk" "$INSTDIR\${FileMainEXE}" "-profileManager" "$INSTDIR\${FileMainEXE}" 0 + ${LogMsg} "Added Shortcut: $SMPROGRAMS\$StartMenuDir\$(PROFILE_TEXT).lnk" + ${EndIf} + + ${If} $AddQuickLaunchSC == 1 + CreateShortCut "$QUICKLAUNCH\${BrandFullName}.lnk" "$INSTDIR\${FileMainEXE}" "" "$INSTDIR\${FileMainEXE}" 0 + ${If} "$AppUserModelID" != "" + ApplicationID::Set "$QUICKLAUNCH\${BrandFullName}.lnk" "$AppUserModelID" + ${EndIf} + ${LogMsg} "Added Shortcut: $QUICKLAUNCH\${BrandFullName}.lnk" + ${EndIf} + + ${If} $AddDesktopSC == 1 + CreateShortCut "$DESKTOP\${BrandFullName}.lnk" "$INSTDIR\${FileMainEXE}" "" "$INSTDIR\${FileMainEXE}" 0 + ${If} "$AppUserModelID" != "" + ApplicationID::Set "$DESKTOP\${BrandFullName}.lnk" "$AppUserModelID" + ${EndIf} + ${LogMsg} "Added Shortcut: $DESKTOP\${BrandFullName}.lnk" + ${EndIf} + + !insertmacro MUI_STARTMENU_WRITE_END +SectionEnd + +Section /o "Debug and QA Tools" DEBUG_IDX + ${If} ${FileExists} "$EXEDIR\optional\extensions\debugQA@mozilla.org.xpi" + SetDetailsPrint both + DetailPrint $(STATUS_INSTALL_OPTIONAL) + SetDetailsPrint none + + ${RemoveDir} "$INSTDIR\extensions\debugQA@mozilla.org" + ${DeleteFile} "$INSTDIR\extensions\debugQA@mozilla.org.xpi" + ${DeleteFile} "$INSTDIR\distribution\extensions\debugQA@mozilla.org.xpi" + ClearErrors + ${LogHeader} "Installing Debug and QA Tools" + CopyFiles /SILENT "$EXEDIR\optional\extensions\debugQA@mozilla.org.xpi" \ + "$INSTDIR\extensions\" + ${EndIf} +SectionEnd + +; Cleanup operations to perform at the end of the installation. +Section "-InstallEndCleanup" + SetDetailsPrint both + DetailPrint "$(STATUS_CLEANUP)" + SetDetailsPrint none + + ; Refresh desktop icons + System::Call "shell32::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)" + + ${InstallEndCleanupCommon} + + ; If we have to reboot give SHChangeNotify time to finish the refreshing + ; the icons so the OS doesn't display the icons from helper.exe + ${If} ${RebootFlag} + Sleep 10000 + ${LogHeader} "Reboot Required To Finish Installation" + ; ${FileMainEXE}.moz-upgrade should never exist but just in case... + ${Unless} ${FileExists} "$INSTDIR\${FileMainEXE}.moz-upgrade" + Rename "$INSTDIR\${FileMainEXE}" "$INSTDIR\${FileMainEXE}.moz-upgrade" + ${EndUnless} + + ${If} ${FileExists} "$INSTDIR\${FileMainEXE}" + ClearErrors + Rename "$INSTDIR\${FileMainEXE}" "$INSTDIR\${FileMainEXE}.moz-delete" + ${Unless} ${Errors} + Delete /REBOOTOK "$INSTDIR\${FileMainEXE}.moz-delete" + ${EndUnless} + ${EndUnless} + ${Unless} ${FileExists} "$INSTDIR\${FileMainEXE}" + CopyFiles /SILENT "$INSTDIR\uninstall\helper.exe" "$INSTDIR" + FileOpen $0 "$INSTDIR\${FileMainEXE}" w + FileWrite $0 "Will be deleted on restart" + Rename /REBOOTOK "$INSTDIR\${FileMainEXE}.moz-upgrade" "$INSTDIR\${FileMainEXE}" + FileClose $0 + Delete "$INSTDIR\${FileMainEXE}" + Rename "$INSTDIR\helper.exe" "$INSTDIR\${FileMainEXE}" + ${EndUnless} + ${EndIf} +SectionEnd + +Function CheckExistingInstall + ; If there is a pending file copy from a previous uninstall don't allow + ; installing until after the system has rebooted. + IfFileExists "$INSTDIR\${FileMainEXE}.moz-upgrade" +1 +4 + MessageBox MB_YESNO "$(WARN_RESTART_REQUIRED_UPGRADE)" IDNO +2 + Reboot + Quit + + ; If there is a pending file deletion from a previous uninstall don't allow + ; installing until after the system has rebooted. + IfFileExists "$INSTDIR\${FileMainEXE}.moz-delete" +1 +4 + MessageBox MB_YESNO "$(WARN_RESTART_REQUIRED_UNINSTALL)" IDNO +2 + Reboot + Quit + + ${If} ${FileExists} "$INSTDIR\${FileMainEXE}" + Banner::show /NOUNLOAD "$(BANNER_CHECK_EXISTING)" + ${If} "$TmpVal" == "FoundMessageWindow" + Sleep 5000 + ${EndIf} + ${PushFilesToCheck} + ; Store the return value in $TmpVal so it is less likely to be accidentally + ; overwritten elsewhere. + ${CheckForFilesInUse} $TmpVal + + Banner::destroy + + ${If} "$TmpVal" == "true" + StrCpy $TmpVal "FoundMessageWindow" + ${ManualCloseAppPrompt} "${WindowClass}" "$(WARN_MANUALLY_CLOSE_APP_INSTALL)" + StrCpy $TmpVal "true" + ${EndIf} + ${EndIf} +FunctionEnd + +Function LaunchApp + GetFunctionAddress $0 LaunchAppFromElevatedProcess + UAC::ExecCodeSegment $0 +FunctionEnd + +Function LaunchAppFromElevatedProcess + ${ManualCloseAppPrompt} "${WindowClass}" "$(WARN_MANUALLY_CLOSE_APP_LAUNCH)" + ; Find the installation directory when launching using GetFunctionAddress + ; from an elevated installer since $INSTDIR will not be set in this installer + ${StrFilter} "${FileMainEXE}" "+" "" "" $R9 + ReadRegStr $0 HKLM "Software\Clients\StartMenuInternet\$R9\DefaultIcon" "" + ${GetPathFromString} "$0" $0 + ${GetParent} "$0" $1 + ; Set our current working directory to the application's install directory + ; otherwise the 7-Zip temp directory will be in use and won't be deleted. + SetOutPath "$1" + Exec "$\"$0$\"" +FunctionEnd + +################################################################################ +# Language + +!insertmacro MOZ_MUI_LANGUAGE 'baseLocale' +!verbose push +!verbose 3 +!include "overrideLocale.nsh" +!include "customLocale.nsh" +!verbose pop + +; Set this after the locale files to override it if it is in the locale +; using " " for BrandingText will hide the "Nullsoft Install System..." branding +BrandingText " " + +################################################################################ +# Page pre and leave functions + +Function preWelcome + ${If} ${FileExists} "$EXEDIR\core\distribution\modern-wizard.bmp" + Delete "$PLUGINSDIR\modern-wizard.bmp" + CopyFiles /SILENT "$EXEDIR\core\distribution\modern-wizard.bmp" "$PLUGINSDIR\modern-wizard.bmp" + ${EndIf} +FunctionEnd + +Function showLicense + ${If} ${FileExists} "$EXEDIR\core\distribution\modern-header.bmp" + ${AndIf} $hHeaderBitmap == "" + Delete "$PLUGINSDIR\modern-header.bmp" + CopyFiles /SILENT "$EXEDIR\core\distribution\modern-header.bmp" "$PLUGINSDIR\modern-header.bmp" + ${ChangeMUIHeaderImage} "$PLUGINSDIR\modern-header.bmp" + ${EndIf} +FunctionEnd + +Function preOptions + !insertmacro MUI_HEADER_TEXT "$(OPTIONS_PAGE_TITLE)" "$(OPTIONS_PAGE_SUBTITLE)" + !insertmacro MUI_INSTALLOPTIONS_DISPLAY "options.ini" +FunctionEnd + +Function leaveOptions + ${MUI_INSTALLOPTIONS_READ} $0 "options.ini" "Settings" "State" + ${If} $0 != 0 + Abort + ${EndIf} + ${MUI_INSTALLOPTIONS_READ} $R0 "options.ini" "Field 2" "State" + StrCmp $R0 "1" +1 +2 + StrCpy $InstallType ${INSTALLTYPE_BASIC} + ${MUI_INSTALLOPTIONS_READ} $R0 "options.ini" "Field 3" "State" + StrCmp $R0 "1" +1 +2 + StrCpy $InstallType ${INSTALLTYPE_CUSTOM} + + ${LeaveOptionsCommon} + + ${If} $InstallType == ${INSTALLTYPE_BASIC} + Call CheckExistingInstall + ${EndIf} +FunctionEnd + +Function preComponents + ${CheckCustomCommon} + !insertmacro checkSuiteComponents + !insertmacro MUI_HEADER_TEXT "$(OPTIONAL_COMPONENTS_TITLE)" "$(OPTIONAL_COMPONENTS_SUBTITLE)" + !insertmacro MUI_INSTALLOPTIONS_DISPLAY "components.ini" +FunctionEnd + +Function leaveComponents + ; If debugQA exists then it will be Field 2. + StrCpy $R1 2 + + ${If} ${FileExists} "$EXEDIR\optional\extensions\debugQA@mozilla.org.xpi" + ${MUI_INSTALLOPTIONS_READ} $R0 "components.ini" "Field $R1" "State" + ; State will be 1 for checked and 0 for unchecked so we can use that to set + ; the section flags for installation. + SectionSetFlags ${DEBUG_IDX} $R0 + IntOp $R1 $R1 + 1 + ${Else} + SectionSetFlags ${DEBUG_IDX} 0 ; Disable install for debugQA + ${EndIf} + +FunctionEnd + +Function preDirectory + ${PreDirectoryCommon} +FunctionEnd + +Function leaveDirectory + ${If} $InstallType == ${INSTALLTYPE_BASIC} + Call CheckExistingInstall + ${EndIf} + ${LeaveDirectoryCommon} "$(WARN_DISK_SPACE)" "$(WARN_WRITE_ACCESS)" +FunctionEnd + +Function preShortcuts + ${CheckCustomCommon} + !insertmacro MUI_HEADER_TEXT "$(SHORTCUTS_PAGE_TITLE)" "$(SHORTCUTS_PAGE_SUBTITLE)" + !insertmacro MUI_INSTALLOPTIONS_DISPLAY "shortcuts.ini" +FunctionEnd + +Function leaveShortcuts + ${MUI_INSTALLOPTIONS_READ} $0 "shortcuts.ini" "Settings" "State" + ${If} $0 != 0 + Abort + ${EndIf} + ${MUI_INSTALLOPTIONS_READ} $AddDesktopSC "shortcuts.ini" "Field 2" "State" + ${MUI_INSTALLOPTIONS_READ} $AddStartMenuSC "shortcuts.ini" "Field 3" "State" + ${MUI_INSTALLOPTIONS_READ} $AddQuickLaunchSC "shortcuts.ini" "Field 4" "State" + + ; If Start Menu shortcuts won't be created call CheckExistingInstall here + ; since leaveStartMenu will not be called. + ${If} $AddStartMenuSC != 1 + ${AndIf} $InstallType == ${INSTALLTYPE_CUSTOM} + Call CheckExistingInstall + ${EndIf} +FunctionEnd + +Function preStartMenu + ; With the Unicode installer the path to the application's Start Menu + ; directory relative to the Start Menu's Programs directory is written to the + ; shortcuts log ini file and is used to set the default Start Menu directory. + ${GetSMProgramsDirRelPath} $0 + ${If} "$0" != "" + StrCpy $StartMenuDir "$0" + ${Else} + ; Prior to the Unicode installer the path to the application's Start Menu + ; directory relative to the Start Menu's Programs directory was written to + ; the registry and use this value to set the default Start Menu directory. + ClearErrors + ReadRegStr $0 HKLM "Software\Mozilla\${BrandFullNameInternal}\${AppVersion} (${AB_CD})\Main" "Start Menu Folder" + ${If} ${Errors} + ; Use the FindSMProgramsDir macro to find a previously used path to the + ; application's Start Menu directory relative to the Start Menu's Programs + ; directory in the uninstall log and use this value to set the default + ; Start Menu directory. + ${FindSMProgramsDir} $0 + ${If} "$0" != "" + StrCpy $StartMenuDir "$0" + ${EndIf} + ${Else} + StrCpy $StartMenuDir "$0" + ${EndUnless} + ${EndIf} + + ${CheckCustomCommon} + ${If} $AddStartMenuSC != 1 + Abort + ${EndIf} +FunctionEnd + +Function leaveStartMenu + ${If} $InstallType == ${INSTALLTYPE_CUSTOM} + Call CheckExistingInstall + ${EndIf} +FunctionEnd + +Function preSummary + WriteINIStr "$PLUGINSDIR\summary.ini" "Settings" NumFields "3" + + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 1" Type "label" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 1" Text "$(SUMMARY_INSTALLED_TO)" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 1" Left "0" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 1" Right "-1" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 1" Top "5" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 1" Bottom "15" + + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 2" Type "text" + ; The contents of this control must be set as follows in the pre function + ; ${MUI_INSTALLOPTIONS_READ} $1 "summary.ini" "Field 2" "HWND" + ; SendMessage $1 ${WM_SETTEXT} 0 "STR:$INSTDIR" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 2" state "" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 2" Left "0" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 2" Right "-1" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 2" Top "17" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 2" Bottom "30" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 2" flags "READONLY" + + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 3" Type "label" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 3" Text "$(SUMMARY_CLICK)" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 3" Left "0" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 3" Right "-1" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 3" Top "130" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 3" Bottom "150" + + ${If} "$TmpVal" == "true" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 4" Type "label" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 4" Text "$(SUMMARY_REBOOT_REQUIRED_INSTALL)" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 4" Left "0" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 4" Right "-1" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 4" Top "35" + WriteINIStr "$PLUGINSDIR\summary.ini" "Field 4" Bottom "45" + + WriteINIStr "$PLUGINSDIR\summary.ini" "Settings" NumFields "4" + ${EndIf} + + !insertmacro MUI_HEADER_TEXT "$(SUMMARY_PAGE_TITLE)" "$(SUMMARY_PAGE_SUBTITLE)" + + ; The Summary custom page has a textbox that will automatically receive + ; focus. This sets the focus to the Install button instead. + !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "summary.ini" + GetDlgItem $0 $HWNDPARENT 1 + System::Call "user32::SetFocus(i r0, i 0x0007, i,i)i" + ${MUI_INSTALLOPTIONS_READ} $1 "summary.ini" "Field 2" "HWND" + SendMessage $1 ${WM_SETTEXT} 0 "STR:$INSTDIR" + !insertmacro MUI_INSTALLOPTIONS_SHOW +FunctionEnd + +Function leaveSummary + ; Try to delete the app executable and if we can't delete it try to find the + ; app's message window and prompt the user to close the app. This allows + ; running an instance that is located in another directory. If for whatever + ; reason there is no message window we will just rename the app's files and + ; then remove them on restart. + ClearErrors + ${DeleteFile} "$INSTDIR\${FileMainEXE}" + ${If} ${Errors} + ${ManualCloseAppPrompt} "${WindowClass}" "$(WARN_MANUALLY_CLOSE_APP_INSTALL)" + ${EndIf} +FunctionEnd + +; When we add an optional action to the finish page the cancel button is +; enabled. This disables it and leaves the finish button as the only choice. +Function preFinish + ${EndInstallLog} "${BrandFullName}" + !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "settings" "cancelenabled" "0" +FunctionEnd + +################################################################################ +# Initialization Functions + +Function .onInit + StrCpy $LANGUAGE 0 + ${SetBrandNameVars} "$EXEDIR\core\distribution\setup.ini" + + ; Don't install on systems that don't support SSE2. The parameter value of + ; 10 is for PF_XMMI64_INSTRUCTIONS_AVAILABLE which will check whether the + ; SSE2 instruction set is available. Result returned in $R7. + System::Call "kernel32::IsProcessorFeaturePresent(i 10)i .R7" + + ; Windows NT 6.0 (Vista/Server 2008) and lower are not supported. + ${Unless} ${AtLeastWin7} + ${If} "$R7" == "0" + strCpy $R7 "$(WARN_MIN_SUPPORTED_OSVER_CPU_MSG)" + ${Else} + strCpy $R7 "$(WARN_MIN_SUPPORTED_OSVER_MSG)" + ${EndIf} + MessageBox MB_OKCANCEL|MB_ICONSTOP "$R7" IDCANCEL +2 + ExecShell "open" "${URLSystemRequirements}" + Quit + ${EndUnless} + + ; SSE2 CPU support + ${If} "$R7" == "0" + MessageBox MB_OKCANCEL|MB_ICONSTOP "$(WARN_MIN_SUPPORTED_CPU_MSG)" IDCANCEL +2 + ExecShell "open" "${URLSystemRequirements}" + Quit + ${EndIf} + +!ifdef HAVE_64BIT_BUILD + ${Unless} ${RunningX64} + MessageBox MB_OKCANCEL|MB_ICONSTOP "$(WARN_MIN_SUPPORTED_OSVER_MSG)" IDCANCEL +2 + ExecShell "open" "${URLSystemRequirements}" + Quit + ${EndUnless} + SetRegView 64 +!endif + + ${InstallOnInitCommon} "$(WARN_MIN_SUPPORTED_OSVER_CPU_MSG)" + + + !insertmacro InitInstallOptionsFile "options.ini" + !insertmacro InitInstallOptionsFile "components.ini" + !insertmacro InitInstallOptionsFile "shortcuts.ini" + !insertmacro InitInstallOptionsFile "summary.ini" + + ; Setup the options.ini file for the Custom Options Page + WriteINIStr "$PLUGINSDIR\options.ini" "Settings" NumFields "5" + + WriteINIStr "$PLUGINSDIR\options.ini" "Field 1" Type "label" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 1" Text "$(OPTIONS_SUMMARY)" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 1" Left "0" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 1" Right "-1" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 1" Top "0" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 1" Bottom "10" + + WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" Type "RadioButton" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" Text "$(OPTION_STANDARD_RADIO)" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" Left "15" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" Right "-1" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" Top "25" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" Bottom "35" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" State "1" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" Flags "GROUP" + + WriteINIStr "$PLUGINSDIR\options.ini" "Field 3" Type "RadioButton" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 3" Text "$(OPTION_CUSTOM_RADIO)" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 3" Left "15" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 3" Right "-1" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 3" Top "55" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 3" Bottom "65" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 3" State "0" + + WriteINIStr "$PLUGINSDIR\options.ini" "Field 4" Type "label" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 4" Text "$(OPTION_STANDARD_DESC)" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 4" Left "30" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 4" Right "-1" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 4" Top "37" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 4" Bottom "57" + + WriteINIStr "$PLUGINSDIR\options.ini" "Field 5" Type "label" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 5" Text "$(OPTION_CUSTOM_DESC)" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 5" Left "30" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 5" Right "-1" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 5" Top "67" + WriteINIStr "$PLUGINSDIR\options.ini" "Field 5" Bottom "87" + + ; Setup the components.ini file for the Components page + !insertmacro createSuiteComponentsINI + + ; Setup the shortcuts.ini file for the Custom Shortcuts Page + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Settings" NumFields "4" + + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 1" Type "label" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 1" Text "$(CREATE_ICONS_DESC)" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 1" Left "0" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 1" Right "-1" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 1" Top "5" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 1" Bottom "15" + + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" Type "checkbox" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" Text "$(ICONS_DESKTOP)" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" Left "15" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" Right "-1" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" Top "20" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" Bottom "30" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" State "1" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" Flags "GROUP" + + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Type "checkbox" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Text "$(ICONS_STARTMENU)" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Left "15" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Right "-1" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Top "40" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Bottom "50" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" State "1" + + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" Type "checkbox" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" Text "$(ICONS_QUICKLAUNCH)" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" Left "15" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" Right "-1" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" Top "60" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" Bottom "70" + WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" State "1" + + ; There must always be a core directory + ${GetSize} "$EXEDIR\core\" "/S=0K" $R5 $R7 $R8 + ; Add 1024 Kb to the diskspace requirement since the installer makes a copy + ; of the MAPI dll's (around 20 Kb)... also, see Bug 434338. + IntOp $R5 $R5 + 1024 + SectionSetSize ${APP_IDX} $R5 + + ; Initialize $hHeaderBitmap to prevent redundant changing of the bitmap if + ; the user clicks the back button + StrCpy $hHeaderBitmap "" +FunctionEnd + +Function .onGUIEnd + ${OnEndCommon} +FunctionEnd diff --git a/comm/suite/installer/windows/nsis/shared.nsh b/comm/suite/installer/windows/nsis/shared.nsh new file mode 100644 index 0000000000..5830eb8411 --- /dev/null +++ b/comm/suite/installer/windows/nsis/shared.nsh @@ -0,0 +1,1069 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +!macro PostUpdate + ${CreateShortcutsLog} + + ; Remove registry entries for non-existent apps and for apps that point to our + ; install location in the Software\Mozilla key and uninstall registry entries + ; that point to our install location for both HKCU and HKLM. + SetShellVarContext current ; Set SHCTX to the current user (e.g. HKCU) + ${RegCleanMain} "Software\Mozilla" + ${RegCleanUninstall} + ${UpdateProtocolHandlers} + + ; Win7 taskbar and start menu link maintenance + ${If} "$AppUserModelID" != "" + ${UpdateShortcutAppModelIDs} "$INSTDIR\${FileMainEXE}" "$AppUserModelID" $0 + ${EndIf} + + ; Upgrade the copies of the MAPI DLLs + ${UpgradeMapiDLLs} + + ClearErrors + WriteRegStr HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" "Write Test" + ${If} ${Errors} + StrCpy $TmpVal "HKCU" ; used primarily for logging + ${Else} + DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" + SetShellVarContext all ; Set SHCTX to all users (e.g. HKLM) + StrCpy $TmpVal "HKLM" ; used primarily for logging + ${RegCleanMain} "Software\Mozilla" + ${RegCleanUninstall} + ${SetStartMenuInternet} + ${FixShellIconHandler} + ${SetUninstallKeys} + ${UpdateProtocolHandlers} + + ReadRegStr $0 HKLM "Software\mozilla.org\Mozilla" "CurrentVersion" + ${If} "$0" != "${GREVersion}" + WriteRegStr HKLM "Software\mozilla.org\Mozilla" "CurrentVersion" "${GREVersion}" + ${EndIf} + + ; Only update the Clients\Mail registry key values if they don't exist or + ; this installation is the same as the one set in those keys. + ReadRegStr $0 HKLM "Software\Clients\Mail\${BrandFullNameInternal}\DefaultIcon" "" + ${GetPathFromString} "$0" $0 + ${GetParent} "$0" $0 + ${If} ${FileExists} "$0" + ${GetLongPath} "$0" $0 + ${EndIf} + ${If} "$0" == "$INSTDIR" + ${SetClientsMail} + ${EndIf} + + ; Only update the Clients\News registry key values if they don't exist or + ; this installation is the same as the one set in those keys. + ReadRegStr $0 HKLM "Software\Clients\News\${BrandFullNameInternal}\DefaultIcon" "" + ${GetPathFromString} "$0" $0 + ${GetParent} "$0" $0 + ${If} ${FileExists} "$0" + ${GetLongPath} "$0" $0 + ${EndIf} + ${If} "$0" == "$INSTDIR" + ${SetClientsNews} + ${EndIf} + ${EndIf} + + ${RemoveDeprecatedKeys} + ; Add Software\Mozilla\ registry entries + ${SetAppKeys} + + ${FixClassKeys} + + ; Remove files that may be left behind by the application in the + ; VirtualStore directory. + ${CleanVirtualStore} + + ${RemoveDeprecatedFiles} + + ; Register AccessibleHandler.dll with COM (this writes to HKLM) + ${RegisterAccessibleHandler} +!macroend +!define PostUpdate "!insertmacro PostUpdate" + +!macro SetAsDefaultAppUser + SetShellVarContext current + + ; It is only possible to set this installation of the application as the + ; handler for the various types if those types were added to the respective + ; HKLM\Clients registry keys. + ; http://support.microsoft.com/kb/297878 + ${GetParameters} $R0 + + ClearErrors + ${GetOptions} "$R0" "Browser" $R1 + ${Unless} ${Errors} + ${StrFilter} "${FileMainEXE}" "+" "" "" $R9 + ClearErrors + ReadRegStr $0 HKLM "Software\Clients\StartMenuInternet\$R9\DefaultIcon" "" + ${GetPathFromString} "$0" $0 + ${GetParent} "$0" $0 + ${If} ${FileExists} "$0" + ${GetLongPath} "$0" $0 + ${EndIf} + ${If} "$0" != "$INSTDIR" + DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" + ClearErrors + WriteRegStr HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" "Write Test" + ${If} ${Errors} + ; Prevent multiple elevation requests + ClearErrors + ${GetOptions} "$R0" "/UAC:" $R1 + ${Unless} ${Errors} + Quit + ${EndUnless} + ${ElevateUAC} + ${EndIf} + DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" + ${SetStartMenuInternet} + ${EndIf} + SetShellVarContext all ; Set SHCTX to all users (e.g. HKLM) + ${FixShellIconHandler} + WriteRegStr HKCU "Software\Clients\StartMenuInternet" "" "$R9" + + ClearErrors + ReadRegStr $0 HKLM "Software\RegisteredApplications" "${AppRegName}" + ; Only register as the handler on 7 if the app registry name exists + ; under the RegisteredApplications registry key. + ${Unless} ${Errors} + AppAssocReg::SetAppAsDefaultAll "${AppRegName}" + ${EndUnless} + + SetShellVarContext current ; Set SHCTX to the current user (e.g. HKCU) + ${SetHandlersBrowser} + ${EndUnless} + + ClearErrors + ${GetOptions} "$R0" "Mail" $R1 + ${Unless} ${Errors} + ReadRegStr $0 HKLM "Software\Clients\Mail\${BrandFullNameInternal}\DefaultIcon" "" + ${GetPathFromString} "$0" $0 + ${GetParent} "$0" $0 + ${If} ${FileExists} "$0" + ${GetLongPath} "$0" $0 + ${EndIf} + ${If} "$0" != "$INSTDIR" + DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" + ClearErrors + WriteRegStr HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" "Write Test" + ${If} ${Errors} + ; Prevent multiple elevation requests + ClearErrors + ${GetOptions} "$R0" "/UAC:" $R1 + ${Unless} ${Errors} + Quit + ${EndUnless} + ${ElevateUAC} + ${EndIf} + DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" + SetShellVarContext all ; Set SHCTX to all users (e.g. HKLM) + ${SetClientsMail} + ${EndIf} + WriteRegStr HKCU "Software\Clients\Mail" "" "${BrandFullNameInternal}" + GetFunctionAddress $0 SetAsDefaultMailAppUser + UAC::ExecCodeSegment $0 + ${EndUnless} + + ClearErrors + ${GetOptions} "$R0" "News" $R1 + ${Unless} ${Errors} + ReadRegStr $0 HKLM "Software\Clients\News\${BrandFullNameInternal}\DefaultIcon" "" + ${GetPathFromString} "$0" $0 + ${GetParent} "$0" $0 + ${If} ${FileExists} "$0" + ${GetLongPath} "$0" $0 + ${EndIf} + ${If} "$0" != "$INSTDIR" + DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" + ClearErrors + WriteRegStr HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" "Write Test" + ${If} ${Errors} + ; Prevent multiple elevation requests + ClearErrors + ${GetOptions} "$R0" "/UAC:" $R1 + ${Unless} ${Errors} + Quit + ${EndUnless} + ${ElevateUAC} + ${EndIf} + DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" + SetShellVarContext all ; Set SHCTX to all users (e.g. HKLM) + ${SetClientsNews} + ${EndIf} + WriteRegStr HKCU "Software\Clients\News" "" "${BrandFullNameInternal}" + GetFunctionAddress $0 SetAsDefaultNewsAppUser + UAC::ExecCodeSegment $0 + ${EndUnless} +!macroend +!define SetAsDefaultAppUser "!insertmacro SetAsDefaultAppUser" + +!macro SetAsDefaultAppGlobal + ${RemoveDeprecatedKeys} + SetShellVarContext all ; Set SHCTX to all users (e.g. HKLM) + ; Make sure that the MapiProxy and the mozMapi32 dll copies exist as we will + ; use those to register as default mail app. When using a ZIP build, the DLL + ; copies might not exist yet + IfFileExists "$INSTDIR\MapiProxy_InUse.dll" +2 +1 + CopyFiles /SILENT "$INSTDIR\MapiProxy.dll" "$INSTDIR\MapiProxy_InUse.dll" + IfFileExists "$INSTDIR\mozMapi32_InUse.dll" +2 +1 + CopyFiles /SILENT "$INSTDIR\mozMapi32.dll" "$INSTDIR\mozMapi32_InUse.dll" + + ${SetHandlersBrowser} + ${SetHandlersMail} + ${SetHandlersNews} + ${SetStartMenuInternet} + ${SetClientsMail} + ${SetClientsNews} + ${FixShellIconHandler} + ${ShowShortcuts} + ${StrFilter} "${FileMainEXE}" "+" "" "" $R9 + WriteRegStr HKLM "Software\Clients\StartMenuInternet" "" "$R9" + WriteRegStr HKLM "Software\Clients\Mail" "" "${BrandFullNameInternal}" +!macroend +!define SetAsDefaultAppGlobal "!insertmacro SetAsDefaultAppGlobal" + +!macro HideShortcuts + StrCpy $R1 "Software\Clients\Mail\${BrandFullNameInternal}\InstallInfo" + WriteRegDWORD HKLM $R1 "IconsVisible" 0 + SetShellVarContext all ; Set $DESKTOP to All Users + ${Unless} ${FileExists} "$DESKTOP\${BrandFullName}.lnk" + SetShellVarContext current ; Set $DESKTOP to the current user's desktop + ${EndUnless} + + ${If} ${FileExists} "$DESKTOP\${BrandFullName}.lnk" + ShellLink::GetShortCutArgs "$DESKTOP\${BrandFullName}.lnk" + Pop $0 + ${If} "$0" == "" + ShellLink::GetShortCutTarget "$DESKTOP\${BrandFullName}.lnk" + Pop $0 + ; Needs to handle short paths + ${If} "$0" == "$INSTDIR\${FileMainEXE}" + Delete "$DESKTOP\${BrandFullName}.lnk" + ${EndIf} + ${EndIf} + ${EndIf} + + ${If} ${FileExists} "$QUICKLAUNCH\${BrandFullName}.lnk" + ShellLink::GetShortCutArgs "$QUICKLAUNCH\${BrandFullName}.lnk" + Pop $0 + ${If} "$0" == "" + ShellLink::GetShortCutTarget "$QUICKLAUNCH\${BrandFullName}.lnk" + Pop $0 + ; Needs to handle short paths + ${If} "$0" == "$INSTDIR\${FileMainEXE}" + Delete "$QUICKLAUNCH\${BrandFullName}.lnk" + ${EndIf} + ${EndIf} + ${EndIf} +!macroend +!define HideShortcuts "!insertmacro HideShortcuts" + +!macro ShowShortcuts + StrCpy $R1 "Software\Clients\Mail\${BrandFullNameInternal}\InstallInfo" + WriteRegDWORD HKLM $R1 "IconsVisible" 1 + SetShellVarContext all ; Set $DESKTOP to All Users + ${Unless} ${FileExists} "$DESKTOP\${BrandFullName}.lnk" + CreateShortCut "$DESKTOP\${BrandFullName}.lnk" "$INSTDIR\${FileMainEXE}" "" "$INSTDIR\${FileMainEXE}" 0 + ${If} "$AppUserModelID" != "" + ApplicationID::Set "$DESKTOP\${BrandFullName}.lnk" "$AppUserModelID" + ${EndIf} + ShellLink::SetShortCutWorkingDirectory "$DESKTOP\${BrandFullName}.lnk" "$INSTDIR" + ${Unless} ${FileExists} "$DESKTOP\${BrandFullName}.lnk" + SetShellVarContext current ; Set $DESKTOP to the current user's desktop + ${Unless} ${FileExists} "$DESKTOP\${BrandFullName}.lnk" + CreateShortCut "$DESKTOP\${BrandFullName}.lnk" "$INSTDIR\${FileMainEXE}" "" "$INSTDIR\${FileMainEXE}" 0 + ${If} "$AppUserModelID" != "" + ApplicationID::Set "$DESKTOP\${BrandFullName}.lnk" "$AppUserModelID" + ${EndIf} + ShellLink::SetShortCutWorkingDirectory "$DESKTOP\${BrandFullName}.lnk" "$INSTDIR" + ${EndUnless} + ${EndUnless} + ${EndUnless} + ${Unless} ${FileExists} "$QUICKLAUNCH\${BrandFullName}.lnk" + CreateShortCut "$QUICKLAUNCH\${BrandFullName}.lnk" "$INSTDIR\${FileMainEXE}" "" "$INSTDIR\${FileMainEXE}" 0 + ${If} "$AppUserModelID" != "" + ApplicationID::Set "$QUICKLAUNCH\${BrandFullName}.lnk" "$AppUserModelID" + ${EndIf} + ShellLink::SetShortCutWorkingDirectory "$QUICKLAUNCH\${BrandFullName}.lnk" "$INSTDIR" + ${EndUnless} +!macroend +!define ShowShortcuts "!insertmacro ShowShortcuts" + +!macro SetHandlersBrowser + ${GetLongPath} "$INSTDIR\${FileMainEXE}" $8 + + StrCpy $0 "SOFTWARE\Classes" + StrCpy $1 "$\"$8$\" -requestPending -osint -url $\"%1$\"" + StrCpy $2 "$\"$8$\" -url $\"%1$\"" + StrCpy $3 "$\"%1$\",,0,0,,,," + + ; An empty string is used for the 5th param because SeaMonkeyHTML is not a + ; protocol handler + ${AddHandlerValues} "$0\SeaMonkeyHTML" "$2" \ + "$INSTDIR\chrome\icons\default\html-file.ico,0" \ + "${AppRegName} Document" "" "" + ${AddDisabledDDEHandlerValues} "SeaMonkeyURL" "$1" "$8,0" \ + "${AppRegName} URL" "delete" + + ; An empty string is used for the 4th & 5th params because the following + ; protocol handlers already have a display name and the additional keys + ; required for a protocol handler. + ${AddDisabledDDEHandlerValues} "ftp" "$1" "$8,0" "" "" + ${AddDisabledDDEHandlerValues} "http" "$1" "$8,0" "" "" + ${AddDisabledDDEHandlerValues} "https" "$1" "$8,0" "" "" + + ReadRegStr $6 HKCR ".htm" "" + ${If} "$6" != "SeaMonkeyHTML" + WriteRegStr SHCTX "$0\.htm" "" "SeaMonkeyHTML" + ${EndIf} + + ReadRegStr $6 HKCR ".html" "" + ${If} "$6" != "SeaMonkeyHTML" + WriteRegStr SHCTX "$0\.html" "" "SeaMonkeyHTML" + ${EndIf} + + ReadRegStr $6 HKCR ".shtml" "" + ${If} "$6" != "SeaMonkeyHTML" + WriteRegStr SHCTX "$0\.shtml" "" "SeaMonkeyHTML" + ${EndIf} + + ReadRegStr $6 HKCR ".xht" "" + ${If} "$6" != "SeaMonkeyHTML" + WriteRegStr SHCTX "$0\.xht" "" "SeaMonkeyHTML" + ${EndIf} + + ReadRegStr $6 HKCR ".xhtml" "" + ${If} "$6" != "SeaMonkeyHTML" + WriteRegStr SHCTX "$0\.xhtml" "" "SeaMonkeyHTML" + ${EndIf} + + ; Only add webm if it's not present + ${CheckIfRegistryKeyExists} "$0" ".webm" $7 + ${If} $7 == "false" + WriteRegStr SHCTX "$0\.webm" "" "SeaMonkeyHTML" + ${EndIf} +!macroend +!define SetHandlersBrowser "!insertmacro SetHandlersBrowser" + +!macro SetHandlersMail + ${GetLongPath} "$INSTDIR\${FileMainEXE}" $8 + + StrCpy $0 "SOFTWARE\Classes" + StrCpy $1 "$\"$8$\" $\"%1$\"" + StrCpy $2 "$\"$8$\" -osint -compose $\"%1$\"" + + ; An empty string is used for the 5th param because SeaMonkeyEML is not a + ; protocol handler + ${AddHandlerValues} "$0\SeaMonkeyEML" "$1" "$INSTDIR\chrome\icons\default\html-file.ico,0" "${AppRegNameMail} Document" "" "" + + ${AddHandlerValues} "$0\SeaMonkeyCOMPOSE" "$2" "$8,0" "${AppRegNameMail} URL" "delete" "" + + ; An empty string is used for the 4th & 5th params because the following + ; protocol handler already has a display name and additional keys required + ; for a protocol handler. + ${AddHandlerValues} "$0\mailto" "$2" "$8,0" "${AppRegNameMail} URL" "true" "" + + ; Associate the file handlers with SeaMonkeyEML + ReadRegStr $6 HKCR ".eml" "" + ${If} "$6" != "SeaMonkeyEML" + WriteRegStr SHCTX "$0\.eml" "" "SeaMonkeyEML" + ${EndIf} +!macroend +!define SetHandlersMail "!insertmacro SetHandlersMail" + +!macro SetHandlersNews + ${GetLongPath} "$INSTDIR\${FileMainEXE}" $8 + StrCpy $0 "SOFTWARE\Classes" + StrCpy $1 "$\"$8$\" -osint -mail $\"%1$\"" + + ${AddHandlerValues} "$0\SeaMonkeyNEWS" "$1" "$8,0" "${AppRegNameNews} URL" "delete" "" + ; An empty string is used for the 4th & 5th params because the following + ; protocol handlers already have a display name and additional keys required + ; for a protocol handler. + ${AddHandlerValues} "$0\news" "$1" "$8,0" "${AppRegNameNews} URL" "true" "" + ${AddHandlerValues} "$0\nntp" "$1" "$8,0" "${AppRegNameNews} URL" "true" "" + ${AddHandlerValues} "$0\snews" "$1" "$8,0" "${AppRegNameNews} URL" "true" "" +!macroend +!define SetHandlersNews "!insertmacro SetHandlersNews" + +; XXXrstrong - there are several values that will be overwritten by and +; overwrite other installs of the same application. +!macro SetStartMenuInternet + GetFullPathName $8 "$INSTDIR\${FileMainEXE}" + GetFullPathName $7 "$INSTDIR\uninstall\helper.exe" + + ${StrFilter} "${FileMainEXE}" "+" "" "" $R9 + + StrCpy $0 "Software\Clients\StartMenuInternet\$R9" + WriteRegStr HKLM "$0" "" "${BrandFullName}" + + WriteRegStr HKLM "$0\DefaultIcon" "" "$8,0" + + ; The Reinstall Command is defined at + ; http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_adv/registeringapps.asp + WriteRegStr HKLM "$0\InstallInfo" "HideIconsCommand" "$\"$7$\" /HideShortcuts" + WriteRegStr HKLM "$0\InstallInfo" "ShowIconsCommand" "$\"$7$\" /ShowShortcuts" + WriteRegStr HKLM "$0\InstallInfo" "ReinstallCommand" "$\"$7$\" /SetAsDefaultAppGlobal" + + WriteRegStr HKLM "$0\shell\open\command" "" "$\"$8$\"" + + WriteRegStr HKLM "$0\shell\properties" "" "$(CONTEXT_OPTIONS)" + WriteRegStr HKLM "$0\shell\properties\command" "" "$\"$8$\" -preferences" + + WriteRegStr HKLM "$0\shell\safemode" "" "$(CONTEXT_SAFE_MODE)" + WriteRegStr HKLM "$0\shell\safemode\command" "" "$\"$8$\" -safe-mode" + + ; Vista Capabilities registry keys + WriteRegStr HKLM "$0\Capabilities" "ApplicationDescription" "$(REG_APP_DESC)" + WriteRegStr HKLM "$0\Capabilities" "ApplicationIcon" "$8,0" + WriteRegStr HKLM "$0\Capabilities" "ApplicationName" "${BrandShortName}" + + WriteRegStr HKLM "$0\Capabilities\FileAssociations" ".htm" "SeaMonkeyHTML" + WriteRegStr HKLM "$0\Capabilities\FileAssociations" ".html" "SeaMonkeyHTML" + WriteRegStr HKLM "$0\Capabilities\FileAssociations" ".shtml" "SeaMonkeyHTML" + WriteRegStr HKLM "$0\Capabilities\FileAssociations" ".xht" "SeaMonkeyHTML" + WriteRegStr HKLM "$0\Capabilities\FileAssociations" ".xhtml" "SeaMonkeyHTML" + + WriteRegStr HKLM "$0\Capabilities\StartMenu" "StartMenuInternet" "$R9" + + WriteRegStr HKLM "$0\Capabilities\URLAssociations" "ftp" "SeaMonkeyURL" + WriteRegStr HKLM "$0\Capabilities\URLAssociations" "http" "SeaMonkeyURL" + WriteRegStr HKLM "$0\Capabilities\URLAssociations" "https" "SeaMonkeyURL" + + ; Vista Registered Application + WriteRegStr HKLM "Software\RegisteredApplications" "${AppRegName}" "$0\Capabilities" +!macroend +!define SetStartMenuInternet "!insertmacro SetStartMenuInternet" + +!macro FixShellIconHandler + ; The IconHandler reference for SeaMonkeyHTML can end up in an inconsistent + ; state due to changes not being detected by the IconHandler for side by side + ; installs. The symptoms can be either an incorrect icon or no icon being + ; displayed for files associated with SeaMonkey. By setting it here it will + ; always reference the install referenced in the + ; HKLM\Software\Classes\SeaMonkeyHTML registry key. + ClearErrors + ReadRegStr $2 HKLM "Software\Classes\SeaMonkeyHTML\ShellEx\IconHandler" "" + ${Unless} ${Errors} + ClearErrors + ReadRegStr $3 HKLM "Software\Classes\CLSID\$2\Old Icon\SeaMonkeyHTML\DefaultIcon" "" + ${Unless} ${Errors} + WriteRegStr HKLM "Software\Classes\CLSID\$2\Old Icon\SeaMonkeyHTML\DefaultIcon" "" "$INSTDIR\chrome\icons\default\html-file.ico,0" + ${EndUnless} + ${EndUnless} +!macroend +!define FixShellIconHandler "!insertmacro FixShellIconHandler" + +; XXXrstrong - there are several values that will be overwritten by and +; overwrite other installs of the same application. +!macro SetClientsMail + ${GetLongPath} "$INSTDIR\${FileMainEXE}" $8 + ${GetLongPath} "$INSTDIR\uninstall\helper.exe" $7 + ${GetLongPath} "$INSTDIR\mozMapi32_InUse.dll" $6 + + StrCpy $0 "Software\Clients\Mail\${BrandFullNameInternal}" + WriteRegStr HKLM "$0" "" "${BrandFullNameInternal}" + WriteRegStr HKLM "$0\DefaultIcon" "" "$8,0" + WriteRegStr HKLM "$0" "DLLPath" "$6" + + ; The MapiProxy dll can be used by multiple applications but + ; is only registered for the last application installed. When the last + ; application installed is uninstalled MapiProxy.dll will no longer be + ; registered. + !ifndef NO_LOG + ${LogHeader} "DLL Registration" + !endif + ClearErrors + ${RegisterDLL} "$INSTDIR\MapiProxy_InUse.dll" + !ifndef NO_LOG + ${If} ${Errors} + ${LogMsg} "** ERROR Registering: $INSTDIR\MapiProxy_InUse.dll **" + ${Else} + ${LogUninstall} "DLLReg: \MapiProxy_InUse.dll" + ${LogMsg} "Registered: $INSTDIR\MapiProxy_InUse.dll" + ${EndIf} + !endif + + StrCpy $1 "Software\Classes\CLSID\{29F458BE-8866-11D5-A3DD-00B0D0F3BAA7}" + WriteRegStr HKLM "$1\LocalServer32" "" "$\"$8$\" /MAPIStartup" + WriteRegStr HKLM "$1\ProgID" "" "MozillaMapi.1" + WriteRegStr HKLM "$1\VersionIndependentProgID" "" "MozillaMAPI" + StrCpy $1 "SOFTWARE\Classes" + WriteRegStr HKLM "$1\MozillaMapi" "" "Mozilla MAPI" + WriteRegStr HKLM "$1\MozillaMapi\CLSID" "" "{29F458BE-8866-11D5-A3DD-00B0D0F3BAA7}" + WriteRegStr HKLM "$1\MozillaMapi\CurVer" "" "MozillaMapi.1" + WriteRegStr HKLM "$1\MozillaMapi.1" "" "Mozilla MAPI" + WriteRegStr HKLM "$1\MozillaMapi.1\CLSID" "" "{29F458BE-8866-11D5-A3DD-00B0D0F3BAA7}" + + ; The Reinstall Command is defined at + ; http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_adv/registeringapps.asp + WriteRegStr HKLM "$0\InstallInfo" "HideIconsCommand" "$\"$7$\" /HideShortcuts" + WriteRegStr HKLM "$0\InstallInfo" "ShowIconsCommand" "$\"$7$\" /ShowShortcuts" + WriteRegStr HKLM "$0\InstallInfo" "ReinstallCommand" "$\"$7$\" /SetAsDefaultAppGlobal" + + ClearErrors + ReadRegDWORD $1 HKLM "$0\InstallInfo" "IconsVisible" + ; If the IconsVisible name value pair doesn't exist add it otherwise the + ; application won't be displayed in Set Program Access and Defaults. + ${If} ${Errors} + ${If} ${FileExists} "$QUICKLAUNCH\${BrandFullName}.lnk" + WriteRegDWORD HKLM "$0\InstallInfo" "IconsVisible" 1 + ${Else} + WriteRegDWORD HKLM "$0\InstallInfo" "IconsVisible" 0 + ${EndIf} + ${EndIf} + + ; Mail shell/open/command + WriteRegStr HKLM "$0\shell\open\command" "" "$\"$8$\" -mail" + + ; options + WriteRegStr HKLM "$0\shell\properties" "" "$(CONTEXT_OPTIONS)" + WriteRegStr HKLM "$0\shell\properties\command" "" "$\"$8$\" -options" + + ; safemode + WriteRegStr HKLM "$0\shell\safemode" "" "$(CONTEXT_SAFE_MODE)" + WriteRegStr HKLM "$0\shell\safemode\command" "" "$\"$8$\" -safe-mode" + + ; Protocols + StrCpy $1 "$\"$8$\" -compose $\"%1$\"" + ${AddHandlerValues} "$0\Protocols\mailto" "$1" "$8,0" "${AppRegNameMail} URL" "true" "" + + ; Vista Capabilities registry keys + WriteRegStr HKLM "$0\Capabilities" "ApplicationDescription" "$(REG_APP_DESC)" + WriteRegStr HKLM "$0\Capabilities" "ApplicationIcon" "$8,0" + WriteRegStr HKLM "$0\Capabilities" "ApplicationName" "${AppRegNameMail}" + WriteRegStr HKLM "$0\Capabilities\FileAssociations" ".eml" "SeaMonkeyEML" + WriteRegStr HKLM "$0\Capabilities\StartMenu" "Mail" "${BrandFullNameInternal}" + WriteRegStr HKLM "$0\Capabilities\URLAssociations" "mailto" "SeaMonkeyCOMPOSE" + + ; Vista Registered Application + WriteRegStr HKLM "Software\RegisteredApplications" "${AppRegNameMail}" "$0\Capabilities" +!macroend +!define SetClientsMail "!insertmacro SetClientsMail" + +; XXXrstrong - there are several values that will be overwritten by and +; overwrite other installs of the same application. +!macro SetClientsNews + ${GetLongPath} "$INSTDIR\${FileMainEXE}" $8 + ${GetLongPath} "$INSTDIR\uninstall\helper.exe" $7 + ${GetLongPath} "$INSTDIR\mozMapi32_InUse.dll" $6 + + StrCpy $0 "Software\Clients\News\${BrandFullNameInternal}" + WriteRegStr HKLM "$0" "" "${BrandFullNameInternal}" + WriteRegStr HKLM "$0\DefaultIcon" "" "$8,0" + WriteRegStr HKLM "$0" "DLLPath" "$6" + + ; The MapiProxy dll can exist in multiple installs of the application. + ; Registration occurs as follows with the last action to occur being the one + ; that wins: On install and software update when helper.exe runs with the + ; /PostUpdate argument. On setting the application as the system's default + ; application using Window's "Set program access and defaults". + !ifndef NO_LOG + ${LogHeader} "DLL Registration" + !endif + ClearErrors + ${RegisterDLL} "$INSTDIR\MapiProxy_InUse.dll" + !ifndef NO_LOG + ${If} ${Errors} + ${LogMsg} "** ERROR Registering: $INSTDIR\MapiProxy_InUse.dll **" + ${Else} + ${LogUninstall} "DLLReg: \MapiProxy_InUse.dll" + ${LogMsg} "Registered: $INSTDIR\MapiProxy_InUse.dll" + ${EndIf} + !endif + + StrCpy $1 "Software\Classes\CLSID\{29F458BE-8866-11D5-A3DD-00B0D0F3BAA7}" + WriteRegStr HKLM "$1\LocalServer32" "" "$\"$8$\" /MAPIStartup" + WriteRegStr HKLM "$1\ProgID" "" "MozillaMapi.1" + WriteRegStr HKLM "$1\VersionIndependentProgID" "" "MozillaMAPI" + StrCpy $1 "SOFTWARE\Classes" + WriteRegStr HKLM "$1\MozillaMapi" "" "Mozilla MAPI" + WriteRegStr HKLM "$1\MozillaMapi\CLSID" "" "{29F458BE-8866-11D5-A3DD-00B0D0F3BAA7}" + WriteRegStr HKLM "$1\MozillaMapi\CurVer" "" "MozillaMapi.1" + WriteRegStr HKLM "$1\MozillaMapi.1" "" "Mozilla MAPI" + WriteRegStr HKLM "$1\MozillaMapi.1\CLSID" "" "{29F458BE-8866-11D5-A3DD-00B0D0F3BAA7}" + + ; Mail shell/open/command + WriteRegStr HKLM "$0\shell\open\command" "" "$\"$8$\" -mail" + + ; Vista Capabilities registry keys + WriteRegStr HKLM "$0\Capabilities" "ApplicationDescription" "$(REG_APP_DESC)" + WriteRegStr HKLM "$0\Capabilities" "ApplicationIcon" "$8,0" + WriteRegStr HKLM "$0\Capabilities" "ApplicationName" "${AppRegNameNews}" + WriteRegStr HKLM "$0\Capabilities\URLAssociations" "nntp" "SeaMonkeyNEWS" + WriteRegStr HKLM "$0\Capabilities\URLAssociations" "news" "SeaMonkeyNEWS" + WriteRegStr HKLM "$0\Capabilities\URLAssociations" "snews" "SeaMonkeyNEWS" + + ; Protocols + StrCpy $1 "$\"$8$\" -osint -mail $\"%1$\"" + ${AddHandlerValues} "$0\Protocols\nntp" "$1" "$8,0" "${AppRegNameNews} URL" "true" "" + ${AddHandlerValues} "$0\Protocols\news" "$1" "$8,0" "${AppRegNameNews} URL" "true" "" + ${AddHandlerValues} "$0\Protocols\snews" "$1" "$8,0" "${AppRegNameNews} URL" "true" "" + + ; Vista Registered Application + WriteRegStr HKLM "Software\RegisteredApplications" "${AppRegNameNews}" "$0\Capabilities" +!macroend +!define SetClientsNews "!insertmacro SetClientsNews" + +!macro SetAppKeys + ${GetLongPath} "$INSTDIR" $8 + StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}\${AppVersion} (${AB_CD})\Main" + ${WriteRegStr2} $TmpVal "$0" "Install Directory" "$8" 0 + ${WriteRegStr2} $TmpVal "$0" "PathToExe" "$8\${FileMainEXE}" 0 + + StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}\${AppVersion} (${AB_CD})\Uninstall" + ${WriteRegStr2} $TmpVal "$0" "Description" "${BrandFullNameInternal} ${AppVersion} (${ARCH} ${AB_CD})" 0 + + StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}\${AppVersion} (${AB_CD})" + ${WriteRegStr2} $TmpVal "$0" "" "${AppVersion} (${AB_CD})" 0 + + StrCpy $0 "Software\Mozilla\${BrandFullNameInternal} ${AppVersion}\bin" + ${WriteRegStr2} $TmpVal "$0" "PathToExe" "$8\${FileMainEXE}" 0 + + StrCpy $0 "Software\Mozilla\${BrandFullNameInternal} ${AppVersion}\extensions" + ${WriteRegStr2} $TmpVal "$0" "Components" "$8\components" 0 + ${WriteRegStr2} $TmpVal "$0" "Plugins" "$8\plugins" 0 + + StrCpy $0 "Software\Mozilla\${BrandFullNameInternal} ${AppVersion}" + ${WriteRegStr2} $TmpVal "$0" "GeckoVer" "${GREVersion}" 0 + + StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}" + ${WriteRegStr2} $TmpVal "$0" "" "${GREVersion}" 0 + ${WriteRegStr2} $TmpVal "$0" "CurrentVersion" "${AppVersion} (${AB_CD})" 0 +!macroend +!define SetAppKeys "!insertmacro SetAppKeys" + +!macro SetUninstallKeys + StrCpy $0 "Software\Microsoft\Windows\CurrentVersion\Uninstall\${BrandFullNameInternal} ${AppVersion} (${ARCH} ${AB_CD})" + + WriteRegStr HKLM "$0" "${BrandShortName}InstallerTest" "Write Test" + ${If} ${Errors} + StrCpy $1 "HKCU" + SetShellVarContext current ; Set SHCTX to the current user (e.g. HKCU) + ${Else} + StrCpy $1 "HKLM" + SetShellVarContext all ; Set SHCTX to all users (e.g. HKLM) + DeleteRegValue HKLM "$0" "${BrandShortName}InstallerTest" + ${EndIf} + + ${GetLongPath} "$INSTDIR" $8 + + ; Write the uninstall registry keys + ${WriteRegStr2} $1 "$0" "Comments" "${BrandFullNameInternal} ${AppVersion} (${ARCH} ${AB_CD})" 0 + ${WriteRegStr2} $1 "$0" "DisplayIcon" "$8\${FileMainEXE},0" 0 + ${WriteRegStr2} $1 "$0" "DisplayName" "${BrandFullNameInternal} ${AppVersion} (${ARCH} ${AB_CD})" 0 + ${WriteRegStr2} $1 "$0" "DisplayVersion" "${AppVersion}" 0 + ${WriteRegStr2} $1 "$0" "InstallLocation" "$8" 0 + ${WriteRegStr2} $1 "$0" "Publisher" "Mozilla" 0 + ${WriteRegStr2} $1 "$0" "UninstallString" "$8\uninstall\helper.exe" 0 + ${WriteRegStr2} $1 "$0" "URLInfoAbout" "${URLInfoAbout}" 0 + ${WriteRegStr2} $1 "$0" "URLUpdateInfo" "${URLUpdateInfo}" 0 + ${WriteRegDWORD2} $1 "$0" "NoModify" 1 0 + ${WriteRegDWORD2} $1 "$0" "NoRepair" 1 0 + + ${GetSize} "$8" "/S=0K" $R2 $R3 $R4 + ${WriteRegDWORD2} $1 "$0" "EstimatedSize" $R2 0 + + ${If} "$TmpVal" == "HKLM" + SetShellVarContext all ; Set SHCTX to all users (e.g. HKLM) + ${Else} + SetShellVarContext current ; Set SHCTX to the current user (e.g. HKCU) + ${EndIf} +!macroend +!define SetUninstallKeys "!insertmacro SetUninstallKeys" + +; Updates protocol handlers if their registry open command value is for this +; install location +!macro UpdateProtocolHandlers + ; Store the command to open the app with an url in a register for easy access. + ${GetLongPath} "$INSTDIR\${FileMainEXE}" $8 + StrCpy $0 "SOFTWARE\Classes" + StrCpy $1 "$\"$8$\" -osint -compose $\"%1$\"" + StrCpy $2 "$\"$8$\" -osint -mail $\"%1$\"" + StrCpy $3 "$\"$8$\" -requestPending -osint -url $\"%1$\"" + StrCpy $4 "$\"%1$\",,0,0,,,," + StrCpy $5 "$\"$8$\" -url $\"%1$\"" + + ; Only set the file and protocol handlers if the existing one under HKCR is + ; for this install location. + ${IsHandlerForInstallDir} "SeaMonkeyHTML" $R9 + ${If} "$R9" == "true" + ; An empty string is used for the 5th param because SeaMonkeyHTML is not a + ; protocol handler. + ${AddHandlerValues} "$0\SeaMonkeyHTML" "$5" \ + "$INSTDIR\chrome\icons\default\html-file.ico,0" \ + "${AppRegName} Document" "" "" + ${EndIf} + + ${IsHandlerForInstallDir} "SeaMonkeyURL" $R9 + ${If} "$R9" == "true" + ${AddDisabledDDEHandlerValues} "SeaMonkeyURL" "$3" "$8,0" \ + "${AppRegName} URL" "delete" + ${EndIf} + + ${IsHandlerForInstallDir} "ftp" $R9 + ${If} "$R9" == "true" + ${AddDisabledDDEHandlerValues} "ftp" "$3" "$8,0" "" "" + ${EndIf} + + ${IsHandlerForInstallDir} "http" $R9 + ${If} "$R9" == "true" + ${AddDisabledDDEHandlerValues} "http" "$3" "$8,0" "" "" + ${EndIf} + + ${IsHandlerForInstallDir} "https" $R9 + ${If} "$R9" == "true" + ${AddDisabledDDEHandlerValues} "https" "$3" "$8,0" "" "" + ${EndIf} + + ${IsHandlerForInstallDir} "SeaMonkeyEML" $R9 + ${If} "$R9" == "true" + ${AddHandlerValues} "SOFTWARE\Classes\SeaMonkeyEML" "$2" \ + "$INSTDIR\chrome\icons\default\html-file.ico,0" \ + "${AppRegNameMail} Document" "" "" + ${EndIf} + + ${IsHandlerForInstallDir} "SeaMonkeyMAIL" $R9 + ${If} "$R9" == "true" + ${AddHandlerValues} "SOFTWARE\Classes\SeaMonkeyMAIL" "$2" "$8,0" \ + "${AppRegNameMail} URL" "delete" "" + ${EndIf} + + ${IsHandlerForInstallDir} "mailto" $R9 + ${If} "$R9" == "true" + ${AddHandlerValues} "SOFTWARE\Classes\mailto" "$1" "$8,0" "" "" "" + ${EndIf} + + ${IsHandlerForInstallDir} "SeaMonkeyNEWS" $R9 + ${If} "$R9" == "true" + ${AddHandlerValues} "SOFTWARE\Classes\SeaMonkeyNEWS" "$2" "$8,0" \ + "${AppRegNameMail} URL" "delete" "" + ${EndIf} + + ${IsHandlerForInstallDir} "news" $R9 + ${If} "$R9" == "true" + ${AddHandlerValues} "SOFTWARE\Classes\news" "$2" "$8,0" "" "" "" + ${EndIf} + + ${IsHandlerForInstallDir} "snews" $R9 + ${If} "$R9" == "true" + ${AddHandlerValues} "SOFTWARE\Classes\snews" "$2" "$8,0" "" "" "" + ${EndIf} + + ${IsHandlerForInstallDir} "nntp" $R9 + ${If} "$R9" == "true" + ${AddHandlerValues} "SOFTWARE\Classes\nntp" "$2" "$8,0" "" "" "" + ${EndIf} +!macroend +!define UpdateProtocolHandlers "!insertmacro UpdateProtocolHandlers" +!insertmacro RegCleanAppHandler + +!macro RegisterAccessibleHandler + ${RegisterDLL} "$INSTDIR\AccessibleHandler.dll" +!macroend +!define RegisterAccessibleHandler "!insertmacro RegisterAccessibleHandler" + +; Removes various registry entries for reasons noted below (does not use SHCTX). +!macro RemoveDeprecatedKeys + StrCpy $0 "SOFTWARE\Classes" + ; Remove support for launching gopher urls from the shell during install or + ; update if the DefaultIcon is from seamonkey.exe. + ${RegCleanAppHandler} "gopher" + + ; Remove support for launching chrome urls from the shell during install or + ; update if the DefaultIcon is from seamonkey.exe (Bug 301073). + ${RegCleanAppHandler} "chrome" + + ; Delete gopher from Capabilities\URLAssociations if it is present. + ${StrFilter} "${FileMainEXE}" "+" "" "" $R9 + StrCpy $0 "Software\Clients\StartMenuInternet\$R9" + ClearErrors + ReadRegStr $2 HKLM "$0\Capabilities\URLAssociations" "gopher" + ${Unless} ${Errors} + DeleteRegValue HKLM "$0\Capabilities\URLAssociations" "gopher" + ${EndUnless} + + ; Delete gopher from the user's UrlAssociations if it points to SeamonkeyURL. + StrCpy $0 "Software\Microsoft\Windows\Shell\Associations\UrlAssociations\gopher" + ReadRegStr $2 HKCU "$0\UserChoice" "Progid" + ${If} "$2" == "SeamonkeyURL" + DeleteRegKey HKCU "$0" + ${EndIf} + + ; Remove the SupportUTF8 registry value as it causes MAPI issues on some locales + ; with non-ASCII characters in file names. + StrCpy $0 "Software\Clients\Mail\${ClientsRegName}" + DeleteRegValue HKLM $0 "SupportUTF8" +!macroend +!define RemoveDeprecatedKeys "!insertmacro RemoveDeprecatedKeys" + +; Removes various directories and files for reasons noted below. +!macro RemoveDeprecatedFiles + ; Remove the Java Console extension (bug 1165156) + FindFirst $0 $1 "$INSTDIR\extensions\{CAFEEFAC-00*-0000-*-ABCDEFFEDCBA}" + loopDirs: + StrCmp $1 "" doneDirs + ${If} ${FileExists} "$INSTDIR\extensions\$1" + !ifndef NO_LOG + ${LogMsg} "Removing Java console edition in: $INSTDIR\extensions\$1" + !endif + RmDir /r /REBOOTOK "$INSTDIR\extensions\$1" + ${EndIf} + FindNext $0 $1 + Goto loopDirs + doneDirs: + FindClose $0 +!macroend +!define RemoveDeprecatedFiles "!insertmacro RemoveDeprecatedFiles" + +!macro FixClassKeys + StrCpy $0 "SOFTWARE\Classes" + + ; BROWSER part + ; File handler keys and name value pairs that may need to be created during + ; install or upgrade. + ReadRegStr $2 SHCTX "$0\.shtml" "Content Type" + ${If} $2 == "" + StrCpy $2 "$0\.shtml" + ${WriteRegStr2} $TmpVal "$0\.shtml" "" "shtmlfile" 0 + ${WriteRegStr2} $TmpVal "$0\.shtml" "Content Type" "text/html" 0 + ${WriteRegStr2} $TmpVal "$0\.shtml" "PerceivedType" "text" 0 + ${EndIf} + + ReadRegStr $2 SHCTX "$0\.xht" "Content Type" + ${If} $2 == "" + ${WriteRegStr2} $TmpVal "$0\.xht" "" "xhtfile" 0 + ${WriteRegStr2} $TmpVal "$0\.xht" "Content Type" "application/xhtml+xml" 0 + ${EndIf} + + ReadRegStr $2 SHCTX "$0\.xhtml" "Content Type" + ${If} $2 == "" + ${WriteRegStr2} $TmpVal "$0\.xhtml" "" "xhtmlfile" 0 + ${WriteRegStr2} $TmpVal "$0\.xhtml" "Content Type" "application/xhtml+xml" 0 + ${EndIf} + + ; Protocol handler keys and name value pairs that may need to be updated during + ; install or upgrade. + + ; Store the command to open the app with an url in a register for easy access. + GetFullPathName $8 "$INSTDIR\${FileMainEXE}" + StrCpy $1 "$\"$8$\" -requestPending -osint -url $\"%1$\"" + StrCpy $2 "$\"$8$\" -url $\"%1$\"" + + ; Always set the file and protocol handlers since they may specify a + ; different path and the path is used by Vista when setting associations. + ${AddHandlerValues} "$0\SeaMonkeyURL" "$1" "$8,0" "${AppRegName} URL" "delete" "true" + + ; An empty string is used for the 5th param because SeaMonkeyHTML is not a + ; protocol handler + ${AddHandlerValues} "$0\SeaMonkeyHTML" "$2" \ + "$INSTDIR\chrome\icons\default\html-file.ico,0" \ + "${AppRegName} Document" "" "" + + ReadRegStr $2 SHCTX "$0\http\shell\open\command" "" + ClearErrors + ${WordFind} "$2" "${FileMainEXE}" "E+1{" $R1 + ${Unless} ${Errors} + ${AddHandlerValues} "$0\http" "$1" "$8,0" "" "" "true" + ${EndUnless} + + ReadRegStr $2 SHCTX "$0\https\shell\open\command" "" + ClearErrors + ${WordFind} "$2" "${FileMainEXE}" "E+1{" $R1 + ${Unless} ${Errors} + ${AddHandlerValues} "$0\https" "$1" "$8,0" "" "" "true" + ${EndUnless} + + ReadRegStr $2 SHCTX "$0\ftp\shell\open\command" "" + ClearErrors + ${WordFind} "$2" "${FileMainEXE}" "E+1{" $R1 + ${Unless} ${Errors} + ${AddHandlerValues} "$0\ftp" "$1" "$8,0" "" "" "true" + ${EndUnless} + + ; MAIL/NEWS part + GetFullPathName $8 "$INSTDIR\${FileMainEXE}" + + StrCpy $1 "$\"$8$\" -compose $\"%1$\"" + ${AddHandlerValues} "$0\SeaMonkeyCOMPOSE" "$1" "$8,0" "${AppRegNameMail} URL" "delete" "" + + ReadRegStr $2 SHCTX "$0\mailto\shell\open\command" "" + ${GetPathFromString} "$2" $3 + GetFullPathName $2 "$3" + ClearErrors + ${WordFind} "$2" "${FileMainEXE}" "E+1{" $R1 + ${Unless} ${Errors} + ${AddHandlerValues} "$0\mailto" "$1" "$8,0" "" "" "" + ${EndUnless} + + StrCpy $1 "$\"$8$\" $\"%1$\"" + ${AddHandlerValues} "$0\SeaMonkeyEML" "$1" "$INSTDIR\chrome\icons\default\html-file.ico,0" "${AppRegNameMail} Document" "" "" + + StrCpy $1 "$\"$8$\" -osint -mail $\"%1$\"" + ${AddHandlerValues} "$0\SeaMonkeyNEWS" "$1" "$8,0" "${AppRegNameNews} URL" "delete" "" + + ReadRegStr $2 SHCTX "$0\news\shell\open\command" "" + ${GetPathFromString} "$2" $3 + GetFullPathName $2 "$3" + ClearErrors + ${WordFind} "$2" "${FileMainEXE}" "E+1{" $R1 + ${Unless} ${Errors} + ${AddHandlerValues} "$0\news" "$1" "$8,0" "" "" "" + ${EndUnless} + + ReadRegStr $2 SHCTX "$0\snews\shell\open\command" "" + ${GetPathFromString} "$2" $3 + GetFullPathName $2 "$3" + ClearErrors + ${WordFind} "$2" "${FileMainEXE}" "E+1{" $R1 + ${Unless} ${Errors} + ${AddHandlerValues} "$0\snews" "$1" "$8,0" "" "" "" + ${EndUnless} + + ReadRegStr $2 SHCTX "$0\nntp\shell\open\command" "" + ${GetPathFromString} "$2" $3 + GetFullPathName $2 "$3" + ClearErrors + ${WordFind} "$2" "${FileMainEXE}" "E+1{" $R1 + ${Unless} ${Errors} + ${AddHandlerValues} "$0\nntp" "$1" "$8,0" "" "" "" + ${EndUnless} + + ; remove DI and SOC from the .eml class if it exists + ReadRegStr $2 SHCTX "$0\.eml\shell\open\command" "" + ${GetPathFromString} "$2" $3 + GetFullPathName $2 "$3" + ClearErrors + ${WordFind} "$2" "${FileMainEXE}" "E+1{" $R1 + ${Unless} ${Errors} + DeleteRegKey HKLM "$0\.eml\shell\open\command" + ${EndUnless} + + ReadRegStr $2 SHCTX "$0\.eml\DefaultIcon" "" + ${GetPathFromString} "$2" $3 + GetFullPathName $2 "$3" + ClearErrors + ${WordFind} "$2" "${FileMainEXE}" "E+1{" $R1 + ${Unless} ${Errors} + DeleteRegKey HKLM "$0\.eml\DefaultIcon" + ${EndUnless} + +!macroend +!define FixClassKeys "!insertmacro FixClassKeys" + +; Creates the shortcuts log ini file with the appropriate entries if it doesn't +; already exist. +!macro CreateShortcutsLog + ${GetShortcutsLogPath} $0 + ${Unless} ${FileExists} "$0" + ; Default to ${BrandFullName} for the Start Menu Folder + StrCpy $TmpVal "${BrandFullName}" + ; Prior to Unicode installer the Start Menu directory was written to the + ; registry and this value can be used to set the Start Menu directory. + ClearErrors + ReadRegStr $0 SHCTX "Software\Mozilla\${BrandFullNameInternal}\${AppVersion} (${AB_CD})\Main" "Start Menu Folder" + ${If} ${Errors} + ${FindSMProgramsDir} $0 + ${If} "$0" != "" + StrCpy $TmpVal "$0" + ${EndIf} + ${Else} + StrCpy $TmpVal "$0" + ${EndUnless} + + ${LogSMProgramsDirRelPath} "$TmpVal" + ${LogSMProgramsShortcut} "${BrandFullName}.lnk" + ${LogSMProgramsShortcut} "${BrandFullName} ($(SAFE_MODE)).lnk" + ${LogSMProgramsShortcut} "${BrandFullNameInternal} $(MAILNEWS_TEXT).lnk" + ${LogSMProgramsShortcut} "$(PROFILE_TEXT).lnk" + ${LogQuickLaunchShortcut} "${BrandFullName}.lnk" + ${LogDesktopShortcut} "${BrandFullName}.lnk" + ${EndUnless} +!macroend +!define CreateShortcutsLog "!insertmacro CreateShortcutsLog" + +; The MAPI DLLs are copied and the copies are used for the MAPI registration +; to lessen file in use errors on application update. +!macro UpgradeMapiDLLs + ClearErrors + ${DeleteFile} "$INSTDIR\MapiProxy_InUse.dll" + ${If} ${Errors} + ${DeleteFile} "$INSTDIR\MapiProxy_InUse.dll.moz-delete" ; shouldn't exist + Rename "$INSTDIR\MapiProxy_InUse.dll" "$INSTDIR\MapiProxy_InUse.dll.moz-delete" + Delete /REBOOTOK "$INSTDIR\MapiProxy_InUse.dll.moz-delete" + ${EndIf} + CopyFiles /SILENT "$INSTDIR\MapiProxy.dll" "$INSTDIR\MapiProxy_InUse.dll" + + ClearErrors + ${DeleteFile} "$INSTDIR\mozMapi32_InUse.dll" + ${If} ${Errors} + ${DeleteFile} "$INSTDIR\mozMapi32_InUse.dll.moz-delete" ; shouldn't exist + Rename "$INSTDIR\mozMapi32_InUse.dll" "$INSTDIR\mozMapi32_InUse.dll.moz-delete" + Delete /REBOOTOK "$INSTDIR\mozMapi32_InUse.dll.moz-delete" + ${EndIf} + CopyFiles /SILENT "$INSTDIR\mozMapi32.dll" "$INSTDIR\mozMapi32_InUse.dll" +!macroend +!define UpgradeMapiDLLs "!insertmacro UpgradeMapiDLLs" + +; The files to check if they are in use during (un)install so the restart is +; required message is displayed. All files must be located in the $INSTDIR +; directory. +!macro PushFilesToCheck + ; The first string to be pushed onto the stack MUST be "end" to indicate + ; that there are no more files to check in $INSTDIR and the last string + ; should be ${FileMainEXE} so if it is in use the CheckForFilesInUse macro + ; returns after the first check. + Push "end" + Push "AccessibleHandler.dll" + Push "AccessibleMarshal.dll" + Push "IA2Marshal.dll" + Push "freebl3.dll" + Push "nssckbi.dll" + Push "nspr4.dll" + Push "nssdbm3.dll" + Push "sqlite3.dll" + Push "mozsqlite3.dll" + Push "xpcom.dll" + Push "crashreporter.exe" + Push "minidump-analyzer.exe" + Push "pingsender.exe" + Push "updater.exe" + Push "xpicleanup.exe" + Push "MapiProxy.dll" + Push "MapiProxy_InUse.dll" + Push "mozMapi32.dll" + Push "mozMapi32_InUse.dll" + Push "${FileMainEXE}" +!macroend +!define PushFilesToCheck "!insertmacro PushFilesToCheck" + +; The !ifdef NO_LOG prevents warnings when compiling the installer since these +; functions are currently only used by the uninstaller. +!ifdef NO_LOG +Function SetAsDefaultMailAppUser + SetShellVarContext current ; Set SHCTX to the current user (e.g. HKCU) + ${SetHandlersMail} + ClearErrors + ReadRegStr $0 HKLM "Software\RegisteredApplications" "${AppRegNameMail}" + ; Only register as the handler if the app registry name exists + ; under the RegisteredApplications registry key. + ${Unless} ${Errors} + AppAssocReg::SetAppAsDefaultAll "${AppRegNameMail}" + ${EndUnless} +FunctionEnd + +Function SetAsDefaultNewsAppUser + SetShellVarContext current ; Set SHCTX to the current user (e.g. HKCU) + ${SetHandlersNews} + ClearErrors + ReadRegStr $0 HKLM "Software\RegisteredApplications" "${AppRegNameNews}" + ; Only register as the handler if the app registry name exists + ; under the RegisteredApplications registry key. + ${Unless} ${Errors} + AppAssocReg::SetAppAsDefaultAll "${AppRegNameNews}" + ${EndUnless} +FunctionEnd +!endif + diff --git a/comm/suite/installer/windows/nsis/uninstaller.nsi b/comm/suite/installer/windows/nsis/uninstaller.nsi new file mode 100644 index 0000000000..8a6a312e59 --- /dev/null +++ b/comm/suite/installer/windows/nsis/uninstaller.nsi @@ -0,0 +1,580 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# Also requires: +# AppAssocReg http://nsis.sourceforge.net/Application_Association_Registration_plug-in +# CityHash http://mxr.mozilla.org/mozilla-central/source/other-licenses/nsis/Contrib/CityHash +# ShellLink http://nsis.sourceforge.net/ShellLink_plug-in +# UAC http://nsis.sourceforge.net/UAC_plug-in + + +; Set verbosity to 3 (e.g. no script) to lessen the noise in the build logs +!verbose 3 + +; 7-Zip provides better compression than the lzma from NSIS so we add the files +; uncompressed and use 7-Zip to create a SFX archive of it +SetDatablockOptimize on +SetCompress off +CRCCheck on + +RequestExecutionLevel user + +Unicode true +ManifestSupportedOS all +ManifestDPIAware true + +!addplugindir ./ + +; prevents compiling of the reg write logging. +!define NO_LOG + +Var TmpVal + +; Other included files may depend upon these includes! +; The following includes are provided by NSIS. +!include FileFunc.nsh +!include LogicLib.nsh +!include MUI.nsh +!include WinMessages.nsh +!include WinVer.nsh +!include WordFunc.nsh + +!insertmacro GetSize +!insertmacro GetOptions +!insertmacro GetParameters +!insertmacro GetParent +!insertmacro StrFilter +!insertmacro WordFind + +!insertmacro un.GetParent + +; The following includes are custom. +!include branding.nsi +!include defines.nsi +!include common.nsh +!include locales.nsi + +; This is named BrandShortName helper because we use this for software update +; post update cleanup. +VIAddVersionKey "FileDescription" "${BrandShortName} Helper" +VIAddVersionKey "OriginalFilename" "helper.exe" + +; Most commonly used macros for managing shortcuts +!insertmacro _LoggingShortcutsCommon + +!insertmacro AddDisabledDDEHandlerValues +!insertmacro AddHandlerValues +!insertmacro CheckIfRegistryKeyExists +!insertmacro CleanUpdateDirectories +!insertmacro CleanVirtualStore +!insertmacro FindSMProgramsDir +!insertmacro GetLongPath +!insertmacro GetPathFromString +!insertmacro InitHashAppModelId +!insertmacro IsHandlerForInstallDir +!insertmacro RegCleanMain +!insertmacro RegCleanUninstall +!insertmacro SetBrandNameVars +!insertmacro UnloadUAC +!insertmacro UpdateShortcutAppModelIDs +!insertmacro WordReplace +!insertmacro WriteRegDWORD2 +!insertmacro WriteRegStr2 + +!insertmacro un.ChangeMUIHeaderImage +!insertmacro un.CheckForFilesInUse +!insertmacro un.CleanUpdateDirectories +!insertmacro un.CleanVirtualStore +!insertmacro un.DeleteShortcuts +!insertmacro un.GetLongPath +!insertmacro un.GetSecondInstallPath +!insertmacro un.InitHashAppModelId +!insertmacro un.ManualCloseAppPrompt +!insertmacro un.ParseUninstallLog +!insertmacro un.RegCleanAppHandler +!insertmacro un.RegCleanFileHandler +!insertmacro un.RegCleanMain +!insertmacro un.RegCleanProtocolHandler +!insertmacro un.RegCleanUninstall +!insertmacro un.RemoveQuotesFromPath +!insertmacro un.SetBrandNameVars + +!include shared.nsh + +; Helper macros for ui callbacks. Insert these after shared.nsh +!insertmacro OnEndCommon +!insertmacro UninstallOnInitCommon + +!insertmacro un.OnEndCommon +!insertmacro un.UninstallUnOnInitCommon + +Name "${BrandFullName}" +OutFile "helper.exe" +!ifdef HAVE_64BIT_BUILD + InstallDir "$PROGRAMFILES64\${BrandFullName}\" +!else + InstallDir "$PROGRAMFILES32\${BrandFullName}\" +!endif +ShowUnInstDetails nevershow + +################################################################################ +# Modern User Interface - MUI + +!define MUI_ABORTWARNING +!define MUI_ICON setup.ico +!define MUI_UNICON setup.ico +!define MUI_WELCOMEPAGE_TITLE_3LINES +!define MUI_HEADERIMAGE +!define MUI_HEADERIMAGE_RIGHT +!define MUI_UNWELCOMEFINISHPAGE_BITMAP wizWatermark.bmp + +; Use a right to left header image when the language is right to left +!ifdef ${AB_CD}_rtl +!define MUI_HEADERIMAGE_BITMAP_RTL wizHeaderRTL.bmp +!else +!define MUI_HEADERIMAGE_BITMAP wizHeader.bmp +!endif + +/** + * Uninstall Pages + */ +; Welcome Page +!define MUI_PAGE_CUSTOMFUNCTION_PRE un.preWelcome +!define MUI_PAGE_CUSTOMFUNCTION_LEAVE un.leaveWelcome +!insertmacro MUI_UNPAGE_WELCOME + +; Uninstall Confirm Page +UninstPage custom un.preConfirm un.leaveConfirm + +; Remove Files Page +!insertmacro MUI_UNPAGE_INSTFILES + +; Don't setup the survey controls, functions, etc. when the application has +; defined NO_UNINSTALL_SURVEY +!ifndef NO_UNINSTALL_SURVEY +!define MUI_PAGE_CUSTOMFUNCTION_PRE un.preFinish +!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED +!define MUI_FINISHPAGE_SHOWREADME "" +!define MUI_FINISHPAGE_SHOWREADME_TEXT $(SURVEY_TEXT) +!define MUI_FINISHPAGE_SHOWREADME_FUNCTION un.Survey +!endif + +!insertmacro MUI_UNPAGE_FINISH + +; Use the default dialog for IDD_VERIFY for a simple Banner +ChangeUI IDD_VERIFY "${NSISDIR}\Contrib\UIs\default.exe" + +################################################################################ +# Install Sections +; Empty section required for the installer to compile as an uninstaller +Section "" +SectionEnd + +################################################################################ +# Uninstall Sections + +Section "Uninstall" + SetDetailsPrint textonly + DetailPrint $(STATUS_UNINSTALL_MAIN) + SetDetailsPrint none + + ; Delete the app exe to prevent launching the app while we are uninstalling. + ClearErrors + ${DeleteFile} "$INSTDIR\${FileMainEXE}" + ${If} ${Errors} + ; If the user closed the application it can take several seconds for it to + ; shut down completely. If the application is being used by another user we + ; can still delete the files when the system is restarted. + Sleep 5000 + ${DeleteFile} "$INSTDIR\${FileMainEXE}" + ClearErrors + ${EndIf} + + SetShellVarContext current ; Set SHCTX to HKCU + ${un.RegCleanMain} "Software\Mozilla" + ${un.RegCleanUninstall} + ${un.DeleteShortcuts} + + ; setup the application model id registration value + ${un.InitHashAppModelId} "$INSTDIR" "Software\Mozilla\${AppName}\TaskBarIDs" + + ; Unregister resources associated with Win7 taskbar jump lists. + ${If} "$AppUserModelID" != "" + ApplicationID::UninstallJumpLists "$AppUserModelID" + ${EndIf} + + ; Remove the updates directory for Vista and above + ${un.CleanUpdateDirectories} "Mozilla\SeaMonkey" "Mozilla\updates" + + ; Remove any app model id's stored in the registry for this install path + DeleteRegValue HKCU "Software\Mozilla\${AppName}\TaskBarIDs" "$INSTDIR" + DeleteRegValue HKLM "Software\Mozilla\${AppName}\TaskBarIDs" "$INSTDIR" + + ClearErrors + WriteRegStr HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" "Write Test" + ${If} ${Errors} + StrCpy $TmpVal "HKCU" ; used primarily for logging + ${Else} + SetShellVarContext all ; Set SHCTX to HKLM + DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" + StrCpy $TmpVal "HKLM" ; used primarily for logging + ${un.RegCleanMain} "Software\Mozilla" + ${un.RegCleanUninstall} + ${un.DeleteShortcuts} + ${EndIf} + + ${un.RegCleanAppHandler} "SeaMonkeyURL" + ${un.RegCleanAppHandler} "SeaMonkeyHTML" + ${un.RegCleanAppHandler} "SeaMonkeyMAIL" + ${un.RegCleanAppHandler} "SeaMonkeyNEWS" + ${un.RegCleanAppHandler} "SeaMonkeyEML" + ${un.RegCleanProtocolHandler} "http" + ${un.RegCleanProtocolHandler} "https" + ${un.RegCleanProtocolHandler} "ftp" + ${un.RegCleanProtocolHandler} "mailto" + ${un.RegCleanProtocolHandler} "news" + ${un.RegCleanProtocolHandler} "nntp" + ${un.RegCleanProtocolHandler} "snews" + + ClearErrors + ReadRegStr $R9 HKCR "SeaMonkeyEML" "" + ; Don't clean up the file handlers if the SeaMonkeyEML key still exists since + ; there could be a second installation that may be the default file handler + ${If} ${Errors} + ${un.RegCleanFileHandler} ".eml" "SeaMonkeyEML" + ${EndIf} + + ClearErrors + ReadRegStr $R9 HKCR "SeaMonkeyHTML" "" + ; Don't clean up the file handlers if the SeaMonkeyHTML key still exists since + ; there could be a second installation that may be the default file handler + ${If} ${Errors} + ${un.RegCleanFileHandler} ".htm" "SeaMonkeyHTML" + ${un.RegCleanFileHandler} ".html" "SeaMonkeyHTML" + ${un.RegCleanFileHandler} ".shtml" "SeaMonkeyHTML" + ${un.RegCleanFileHandler} ".webm" "SeaMonkeyHTML" + ${un.RegCleanFileHandler} ".xht" "SeaMonkeyHTML" + ${un.RegCleanFileHandler} ".xhtml" "SeaMonkeyHTML" + ${EndIf} + + SetShellVarContext all ; Set SHCTX to HKLM + ${un.GetSecondInstallPath} "Software\Mozilla" $R9 + ${If} $R9 == "false" + SetShellVarContext current ; Set SHCTX to HKCU + ${un.GetSecondInstallPath} "Software\Mozilla" $R9 + ${EndIf} + + StrCpy $0 "Software\Clients\StartMenuInternet\${FileMainEXE}\shell\open\command" + ReadRegStr $R1 HKLM "$0" "" + ${un.RemoveQuotesFromPath} "$R1" $R1 + ${un.GetParent} "$R1" $R1 + + ; Only remove the StartMenuInternet key if it refers to this install location. + ; The StartMenuInternet registry key is independent of the default browser + ; settings. The XPInstall base un-installer always removes this key if it is + ; uninstalling the default browser and it will always replace the keys when + ; installing even if there is another install of SeaMonkey that is set as the + ; default browser. Now the key is always updated on install but it is only + ; removed if it refers to this install location. + ${If} "$INSTDIR" == "$R1" + DeleteRegKey HKLM "Software\Clients\StartMenuInternet\${FileMainEXE}" + DeleteRegValue HKLM "Software\RegisteredApplications" "${AppRegName}" + ${EndIf} + + StrCpy $0 "Software\Clients\Mail\${BrandFullNameInternal}\shell\open\command" + ReadRegStr $R1 HKLM "$0" "" + ${un.RemoveQuotesFromPath} "$R1" $R1 + ${un.GetParent} "$R1" $R1 + + ; Only remove the Clients\Mail and Clients\News key if it refers to this + ; install location. The Clients\Mail & Clients\News keys are independent + ; of the default app for the OS settings. The XPInstall base un-installer + ; always removes these keys if it is uninstalling the default app and it + ; will always replace the keys when installing even if there is another + ; install of SeaMonkey that is set as the default app. Now the keys are always + ; updated on install but are only removed if they refer to this install + ; location. + ${If} "$INSTDIR" == "$R1" + DeleteRegKey HKLM "Software\Clients\Mail\${BrandFullNameInternal}" + DeleteRegKey HKLM "Software\Clients\News\${BrandFullNameInternal}" + DeleteRegValue HKLM "Software\RegisteredApplications" "${AppRegNameMail}" + DeleteRegValue HKLM "Software\RegisteredApplications" "${AppRegNameNews}" + ${EndIf} + + StrCpy $0 "Software\Microsoft\Windows\CurrentVersion\App Paths\${FileMainEXE}" + ${If} $R9 == "false" + DeleteRegKey HKLM "$0" + DeleteRegKey HKCU "$0" + StrCpy $0 "Software\Microsoft\MediaPlayer\ShimInclusionList\${FileMainEXE}" + DeleteRegKey HKLM "$0" + DeleteRegKey HKCU "$0" + StrCpy $0 "Software\Microsoft\MediaPlayer\ShimInclusionList\plugin-container.exe" + DeleteRegKey HKLM "$0" + DeleteRegKey HKCU "$0" + ${Else} + ReadRegStr $R1 HKLM "$0" "" + ${un.RemoveQuotesFromPath} "$R1" $R1 + ${un.GetParent} "$R1" $R1 + ${If} "$INSTDIR" == "$R1" + WriteRegStr HKLM "$0" "" "$R9" + ${un.GetParent} "$R9" $R1 + WriteRegStr HKLM "$0" "Path" "$R1" + ${EndIf} + ${EndIf} + + ; Remove directories and files we always control before parsing the uninstall + ; log so empty directories can be removed. + ${If} ${FileExists} "$INSTDIR\updates" + RmDir /r /REBOOTOK "$INSTDIR\updates" + ${EndIf} + ${If} ${FileExists} "$INSTDIR\defaults\shortcuts" + RmDir /r /REBOOTOK "$INSTDIR\defaults\shortcuts" + ${EndIf} + ${If} ${FileExists} "$INSTDIR\distribution" + RmDir /r /REBOOTOK "$INSTDIR\distribution" + ${EndIf} + ${If} ${FileExists} "$INSTDIR\removed-files" + Delete /REBOOTOK "$INSTDIR\removed-files" + ${EndIf} + + ; Application update won't add these files to the uninstall log so delete + ; them if they still exist. + ${If} ${FileExists} "$INSTDIR\MapiProxy_InUse.dll" + Delete /REBOOTOK "$INSTDIR\MapiProxy_InUse.dll" + ${EndIf} + ${If} ${FileExists} "$INSTDIR\mozMapi32_InUse.dll" + Delete /REBOOTOK "$INSTDIR\mozMapi32_InUse.dll" + ${EndIf} + + ; Remove files that may be left behind by the application in the + ; VirtualStore directory. + ${un.CleanVirtualStore} + + ; Only unregister the dll if the registration points to this installation + ReadRegStr $R1 HKCR "CLSID\{0D68D6D0-D93D-4D08-A30D-F00DD1F45B24}\InProcServer32" "" + ${If} "$INSTDIR\AccessibleMarshal.dll" == "$R1" + ${UnregisterDLL} "$INSTDIR\AccessibleMarshal.dll" + ${EndIf} + + ; Only unregister the dll if the registration points to this installation + ReadRegStr $R1 HKCR "CLSID\${AccessibleHandlerCLSID}\InProcHandler32" "" + ${If} "$INSTDIR\AccessibleHandler.dll" == "$R1" + ${UnregisterDLL} "$INSTDIR\AccessibleHandler.dll" + ${EndIf} + + ; Parse the uninstall log to unregister dll's and remove all installed + ; files / directories this install is responsible for. + ${un.ParseUninstallLog} + + ; Remove the uninstall directory that we control + RmDir /r /REBOOTOK "$INSTDIR\uninstall" + + ; Remove the installation directory if it is empty + ${RemoveDir} "$INSTDIR" + + ; If seamonkey.exe was successfully deleted yet we still need to restart to + ; remove other files create a dummy seamonkey.exe.moz-delete to prevent the + ; installer from allowing an install without restart when it is required + ; to complete an uninstall. + ${If} ${RebootFlag} + ${Unless} ${FileExists} "$INSTDIR\${FileMainEXE}.moz-delete" + FileOpen $0 "$INSTDIR\${FileMainEXE}.moz-delete" w + FileWrite $0 "Will be deleted on restart" + Delete /REBOOTOK "$INSTDIR\${FileMainEXE}.moz-delete" + FileClose $0 + ${EndUnless} + ${EndIf} + + + ; Refresh desktop icons otherwise the start menu internet item won't be + ; removed and other ugly things will happen like recreation of the app's + ; clients registry key by the OS under some conditions. + System::Call "shell32::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)" +SectionEnd + +################################################################################ +# Helper Functions + +; Don't setup the survey controls, functions, etc. when the application has +; defined NO_UNINSTALL_SURVEY +!ifndef NO_UNINSTALL_SURVEY +Function un.Survey + Exec "$\"$TmpVal$\" $\"${SurveyURL}$\"" +FunctionEnd +!endif + +################################################################################ +# Language + +!insertmacro MOZ_MUI_LANGUAGE 'baseLocale' +!verbose push +!verbose 3 +!include "overrideLocale.nsh" +!include "customLocale.nsh" +!verbose pop + +; Set this after the locale files to override it if it is in the locale. Using +; " " for BrandingText will hide the "Nullsoft Install System..." branding. +BrandingText " " + +################################################################################ +# Page pre, show, and leave functions + +Function un.preWelcome + ${If} ${FileExists} "$INSTDIR\distribution\modern-wizard.bmp" + Delete "$PLUGINSDIR\modern-wizard.bmp" + CopyFiles /SILENT "$INSTDIR\distribution\modern-wizard.bmp" "$PLUGINSDIR\modern-wizard.bmp" + ${EndIf} +FunctionEnd + +Function un.leaveWelcome + ${If} ${FileExists} "$INSTDIR\${FileMainEXE}" + Banner::show /NOUNLOAD "$(BANNER_CHECK_EXISTING)" + + ${If} "$TmpVal" == "FoundMessageWindow" + Sleep 5000 + ${EndIf} + + ${PushFilesToCheck} + + ${un.CheckForFilesInUse} $TmpVal + + Banner::destroy + + ${If} "$TmpVal" == "true" + StrCpy $TmpVal "FoundMessageWindow" + ${un.ManualCloseAppPrompt} "${WindowClass}" "$(WARN_MANUALLY_CLOSE_APP_UNINSTALL)" + StrCpy $TmpVal "true" + ${EndIf} + ${EndIf} +FunctionEnd + +Function un.preConfirm + ${If} ${FileExists} "$INSTDIR\distribution\modern-header.bmp" + ${AndIf} $hHeaderBitmap == "" + Delete "$PLUGINSDIR\modern-header.bmp" + CopyFiles /SILENT "$INSTDIR\distribution\modern-header.bmp" "$PLUGINSDIR\modern-header.bmp" + ${un.ChangeMUIHeaderImage} "$PLUGINSDIR\modern-header.bmp" + ${EndIf} + + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Settings" NumFields "3" + + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 1" Type "label" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 1" Text "$(UN_CONFIRM_UNINSTALLED_FROM)" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 1" Left "0" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 1" Right "-1" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 1" Top "5" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 1" Bottom "15" + + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 2" Type "text" + ; The contents of this control must be set as follows in the pre function + ; ${MUI_INSTALLOPTIONS_READ} $1 "unconfirm.ini" "Field 2" "HWND" + ; SendMessage $1 ${WM_SETTEXT} 0 "STR:$INSTDIR" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 2" State "" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 2" Left "0" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 2" Right "-1" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 2" Top "17" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 2" Bottom "30" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 2" flags "READONLY" + + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Type "label" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Text "$(UN_CONFIRM_CLICK)" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Left "0" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Right "-1" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Top "130" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Bottom "150" + + ${If} "$TmpVal" == "true" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Type "label" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Text "$(SUMMARY_REBOOT_REQUIRED_UNINSTALL)" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Left "0" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Right "-1" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Top "35" + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Bottom "45" + + WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Settings" NumFields "4" + ${EndIf} + + !insertmacro MUI_HEADER_TEXT "$(UN_CONFIRM_PAGE_TITLE)" "$(UN_CONFIRM_PAGE_SUBTITLE)" + ; The Summary custom page has a textbox that will automatically receive + ; focus. This sets the focus to the Install button instead. + !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "unconfirm.ini" + GetDlgItem $0 $HWNDPARENT 1 + System::Call "user32::SetFocus(i r0, i 0x0007, i,i)i" + ${MUI_INSTALLOPTIONS_READ} $1 "unconfirm.ini" "Field 2" "HWND" + SendMessage $1 ${WM_SETTEXT} 0 "STR:$INSTDIR" + !insertmacro MUI_INSTALLOPTIONS_SHOW +FunctionEnd + +Function un.leaveConfirm + ; Try to delete the app executable and if we can't delete it try to find the + ; app's message window and prompt the user to close the app. This allows + ; running an instance that is located in another directory. If for whatever + ; reason there is no message window we will just rename the app's files and + ; then remove them on restart if they are in use. + ClearErrors + ${DeleteFile} "$INSTDIR\${FileMainEXE}" + ${If} ${Errors} + ${un.ManualCloseAppPrompt} "${WindowClass}" "$(WARN_MANUALLY_CLOSE_APP_UNINSTALL)" + ${EndIf} +FunctionEnd + +!ifndef NO_UNINSTALL_SURVEY +Function un.preFinish + ; Do not modify the finish page if there is a reboot pending + ${Unless} ${RebootFlag} + ; Setup the survey controls, functions, etc. + StrCpy $TmpVal "SOFTWARE\Microsoft\IE Setup\Setup" + ClearErrors + ReadRegStr $0 HKLM $TmpVal "Path" + ${If} ${Errors} + !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "settings" "NumFields" "3" + ${Else} + ExpandEnvStrings $0 "$0" ; this value will usually contain %programfiles% + ${If} $0 != "\" + StrCpy $0 "$0\" + ${EndIf} + StrCpy $0 "$0\iexplore.exe" + ClearErrors + GetFullPathName $TmpVal $0 + ${If} ${Errors} + !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "settings" "NumFields" "3" + ${Else} + ; When we add an optional action to the finish page the cancel button + ; is enabled. This disables it and leaves the finish button as the + ; only choice. + !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "settings" "cancelenabled" "0" + ${EndIf} + ${EndIf} + ${EndUnless} +FunctionEnd +!endif + +################################################################################ +# Initialization Functions + +Function .onInit + ; We need this set up for most of the helper.exe operations. + !ifdef AppName + ${InitHashAppModelId} "$INSTDIR" "Software\Mozilla\${AppName}\TaskBarIDs" + !endif + ${UninstallOnInitCommon} +FunctionEnd + +Function un.onInit + StrCpy $LANGUAGE 0 + + ${un.UninstallUnOnInitCommon} + + !insertmacro InitInstallOptionsFile "unconfirm.ini" +FunctionEnd + +Function .onGUIEnd + ${OnEndCommon} +FunctionEnd + +Function un.onGUIEnd + ${un.OnEndCommon} +FunctionEnd + diff --git a/comm/suite/installer/windows/nsis/updater_append.ini b/comm/suite/installer/windows/nsis/updater_append.ini new file mode 100644 index 0000000000..1b4bc1be7d --- /dev/null +++ b/comm/suite/installer/windows/nsis/updater_append.ini @@ -0,0 +1,16 @@ +; This Source Code Form is subject to the terms of the Mozilla Public +; License, v. 2.0. If a copy of the MPL was not distributed with this +; file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +; IMPORTANT: This file should always start with a newline in case a locale +; provided updater.ini does not end with a newline. +; Application to launch after an update has been successfully applied. This +; must be in the same directory or a sub-directory of the directory of the +; application executable that initiated the software update. +[PostUpdateWin] +; ExeRelPath is the path to the PostUpdateWin executable relative to the +; application executable. +ExeRelPath=uninstall\helper.exe +; ExeArg is the argument to pass to the PostUpdateWin exe +ExeArg=/PostUpdate |