mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-27 09:37:31 +09:00
[PALEMOON] Update the Windows Installer
This commit is contained in:
parent
c74b6d7548
commit
a15df7790e
8 changed files with 1157 additions and 416 deletions
|
|
@ -5,9 +5,7 @@
|
||||||
include $(topsrcdir)/toolkit/mozapps/installer/package-name.mk
|
include $(topsrcdir)/toolkit/mozapps/installer/package-name.mk
|
||||||
|
|
||||||
CONFIG_DIR = instgen
|
CONFIG_DIR = instgen
|
||||||
SFX_MODULE = $(topsrcdir)/other-licenses/7zstub/firefox/7zSD.sfx
|
SFX_MODULE = $(topsrcdir)/other-licenses/7zstub/uxp/7zSD.sfx
|
||||||
APP_VERSION := $(shell cat $(srcdir)/../../config/version.txt)
|
|
||||||
DEFINES += -DAPP_VERSION=$(APP_VERSION)
|
|
||||||
|
|
||||||
INSTALLER_FILES = \
|
INSTALLER_FILES = \
|
||||||
app.tag \
|
app.tag \
|
||||||
|
|
@ -16,6 +14,12 @@ INSTALLER_FILES = \
|
||||||
nsis/shared.nsh \
|
nsis/shared.nsh \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
|
ifdef MOZ_MAINTENANCE_SERVICE
|
||||||
|
INSTALLER_FILES += \
|
||||||
|
nsis/maintenanceservice_installer.nsi \
|
||||||
|
$(NULL)
|
||||||
|
endif
|
||||||
|
|
||||||
BRANDING_FILES = \
|
BRANDING_FILES = \
|
||||||
branding.nsi \
|
branding.nsi \
|
||||||
appname.bmp \
|
appname.bmp \
|
||||||
|
|
@ -24,13 +28,6 @@ BRANDING_FILES = \
|
||||||
wizWatermark.bmp \
|
wizWatermark.bmp \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
DEFINES += \
|
|
||||||
-DAB_CD=$(AB_CD) \
|
|
||||||
-DMOZ_APP_NAME=$(MOZ_APP_NAME) \
|
|
||||||
-DMOZ_APP_DISPLAYNAME="${MOZ_APP_DISPLAYNAME}" \
|
|
||||||
-DMOZILLA_VERSION=${MOZILLA_VERSION} \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
include $(topsrcdir)/config/config.mk
|
include $(topsrcdir)/config/config.mk
|
||||||
|
|
||||||
ifdef LOCALE_MERGEDIR
|
ifdef LOCALE_MERGEDIR
|
||||||
|
|
@ -61,6 +58,17 @@ uninstaller::
|
||||||
--preprocess-locale $(topsrcdir) \
|
--preprocess-locale $(topsrcdir) \
|
||||||
$(PPL_LOCALE_ARGS) $(AB_CD) $(CONFIG_DIR)
|
$(PPL_LOCALE_ARGS) $(AB_CD) $(CONFIG_DIR)
|
||||||
|
|
||||||
|
# For building the maintenanceservice installer
|
||||||
|
ifdef MOZ_MAINTENANCE_SERVICE
|
||||||
|
maintenanceservice_installer::
|
||||||
|
$(INSTALL) $(addprefix $(srcdir)/,$(INSTALLER_FILES)) $(CONFIG_DIR)
|
||||||
|
$(call py_action,preprocessor,-Fsubstitution $(DEFINES) $(ACDEFINES) \
|
||||||
|
$(srcdir)/nsis/defines.nsi.in -o $(CONFIG_DIR)/defines.nsi)
|
||||||
|
$(PYTHON) $(topsrcdir)/toolkit/mozapps/installer/windows/nsis/preprocess-locale.py \
|
||||||
|
--preprocess-locale $(topsrcdir) \
|
||||||
|
$(PPL_LOCALE_ARGS) $(AB_CD) $(CONFIG_DIR)
|
||||||
|
endif
|
||||||
|
|
||||||
$(CONFIG_DIR)/setup.exe::
|
$(CONFIG_DIR)/setup.exe::
|
||||||
$(RM) -r $(CONFIG_DIR)
|
$(RM) -r $(CONFIG_DIR)
|
||||||
$(MKDIR) $(CONFIG_DIR)
|
$(MKDIR) $(CONFIG_DIR)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
|
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||||
# vim: set filetype=python:
|
# vim: set filetype=python:
|
||||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
# 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
|
# 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/.
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
|
DEFINES['APP_VERSION'] = CONFIG['MOZ_APP_VERSION']
|
||||||
|
|
||||||
|
DEFINES['MOZ_APP_NAME'] = CONFIG['MOZ_APP_NAME']
|
||||||
|
DEFINES['MOZ_APP_DISPLAYNAME'] = CONFIG['MOZ_APP_DISPLAYNAME']
|
||||||
|
DEFINES['MOZILLA_VERSION'] = CONFIG['MOZILLA_VERSION']
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,23 @@
|
||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
# 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/.
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
|
# Defining FunnelcakeVersion will append the value of StubURLVersionAppend to
|
||||||
|
# StubURLVersion, append the value of URLManualDownloadAppend to
|
||||||
|
# URLManualDownload, and append the value of URLStubDownloadAppend to
|
||||||
|
# URLStubDownload. The value of FunnelcakeVersion should not be defined when it
|
||||||
|
# is not used and when it is defined its value should never be empty.
|
||||||
|
# !define FunnelcakeVersion "999"
|
||||||
|
|
||||||
|
!ifdef FunnelcakeVersion
|
||||||
|
!define URLManualDownloadAppend "&f=${FunnelcakeVersion}"
|
||||||
|
!define URLStubDownloadAppend "-f${FunnelcakeVersion}"
|
||||||
|
!define StubURLVersionAppend "-${FunnelcakeVersion}"
|
||||||
|
!else
|
||||||
|
!define URLManualDownloadAppend ""
|
||||||
|
!define URLStubDownloadAppend ""
|
||||||
|
!define StubURLVersionAppend ""
|
||||||
|
!endif
|
||||||
|
|
||||||
# These defines should match application.ini settings
|
# These defines should match application.ini settings
|
||||||
!define AppName "Pale Moon"
|
!define AppName "Pale Moon"
|
||||||
!define AppVersion "@APP_VERSION@"
|
!define AppVersion "@APP_VERSION@"
|
||||||
|
|
@ -14,13 +31,17 @@
|
||||||
!define DDEApplication "Pale Moon"
|
!define DDEApplication "Pale Moon"
|
||||||
!define AppRegName "Pale Moon"
|
!define AppRegName "Pale Moon"
|
||||||
|
|
||||||
|
!ifndef DEV_EDITION
|
||||||
!define BrandShortName "@MOZ_APP_DISPLAYNAME@"
|
!define BrandShortName "@MOZ_APP_DISPLAYNAME@"
|
||||||
|
!endif
|
||||||
!define BrandFullName "${BrandFullNameInternal}"
|
!define BrandFullName "${BrandFullNameInternal}"
|
||||||
|
|
||||||
!define NO_UNINSTALL_SURVEY
|
!define CERTIFICATE_NAME "Mozilla Corporation"
|
||||||
|
!define CERTIFICATE_ISSUER "DigiCert SHA2 Assured ID Code Signing CA"
|
||||||
# !define CERTIFICATE_NAME "Mozilla Corporation"
|
; Changing the name or issuer requires us to have both the old and the new
|
||||||
# !define CERTIFICATE_ISSUER "Thawte Code Signing CA - G2"
|
; in the registry at the same time, temporarily.
|
||||||
|
!define CERTIFICATE_NAME_PREVIOUS "Mozilla Corporation"
|
||||||
|
!define CERTIFICATE_ISSUER_PREVIOUS "DigiCert Assured ID Code Signing CA-1"
|
||||||
|
|
||||||
# LSP_CATEGORIES is the permitted LSP categories for the application. Each LSP
|
# LSP_CATEGORIES is the permitted LSP categories for the application. Each LSP
|
||||||
# category value is ANDed together to set multiple permitted categories.
|
# category value is ANDed together to set multiple permitted categories.
|
||||||
|
|
@ -39,20 +60,26 @@
|
||||||
#ifdef HAVE_64BIT_BUILD
|
#ifdef HAVE_64BIT_BUILD
|
||||||
!define HAVE_64BIT_BUILD
|
!define HAVE_64BIT_BUILD
|
||||||
!define ARCH "x64"
|
!define ARCH "x64"
|
||||||
!define MinSupportedVer "Microsoft Windows Vista x64"
|
!define MinSupportedVer "Microsoft Windows 7 x64"
|
||||||
#else
|
#else
|
||||||
!define ARCH "x86"
|
!define ARCH "x86"
|
||||||
!define MinSupportedVer "Microsoft Windows Vista"
|
!define MinSupportedVer "Microsoft Windows 7"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
!define MinSupportedCPU "SSE2"
|
||||||
|
|
||||||
|
#ifdef MOZ_MAINTENANCE_SERVICE
|
||||||
|
!define MOZ_MAINTENANCE_SERVICE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# File details shared by both the installer and uninstaller
|
# File details shared by both the installer and uninstaller
|
||||||
VIProductVersion "1.0.0.0"
|
VIProductVersion "1.0.0.0"
|
||||||
VIAddVersionKey "ProductName" "Pale Moon"
|
VIAddVersionKey "ProductName" "${BrandShortName}"
|
||||||
VIAddVersionKey "CompanyName" "Moonchild Productions"
|
VIAddVersionKey "CompanyName" "${CompanyName}"
|
||||||
#ifdef MOZ_OFFICIAL_BRANDING
|
#ifdef MOZ_OFFICIAL_BRANDING
|
||||||
VIAddVersionKey "LegalTrademarks" "Pale Moon is the intellectual property of Moonchild Productions."
|
VIAddVersionKey "LegalTrademarks" "${BrandShortName} is a Trademark of Moonchild Productions."
|
||||||
#endif
|
#endif
|
||||||
VIAddVersionKey "LegalCopyright" "Moonchild Productions"
|
VIAddVersionKey "LegalCopyright" "${CompanyName}"
|
||||||
VIAddVersionKey "FileVersion" "${AppVersion}"
|
VIAddVersionKey "FileVersion" "${AppVersion}"
|
||||||
VIAddVersionKey "ProductVersion" "${AppVersion}"
|
VIAddVersionKey "ProductVersion" "${AppVersion}"
|
||||||
# Comments is not used but left below commented out for future reference
|
# Comments is not used but left below commented out for future reference
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
# Required Plugins:
|
# Required Plugins:
|
||||||
# AppAssocReg http://nsis.sourceforge.net/Application_Association_Registration_plug-in
|
# AppAssocReg http://nsis.sourceforge.net/Application_Association_Registration_plug-in
|
||||||
# ApplicationID http://nsis.sourceforge.net/ApplicationID_plug-in
|
# ApplicationID http://nsis.sourceforge.net/ApplicationID_plug-in
|
||||||
# CityHash http://mxr.mozilla.org/mozilla-central/source/other-licenses/nsis/Contrib/CityHash
|
# CityHash http://dxr.mozilla.org/mozilla-central/source/other-licenses/nsis/Contrib/CityHash
|
||||||
# ShellLink http://nsis.sourceforge.net/ShellLink_plug-in
|
# ShellLink http://nsis.sourceforge.net/ShellLink_plug-in
|
||||||
# UAC http://nsis.sourceforge.net/UAC_plug-in
|
# UAC http://nsis.sourceforge.net/UAC_plug-in
|
||||||
# ServicesHelper Mozilla specific plugin that is located in /other-licenses/nsis
|
# ServicesHelper Mozilla specific plugin that is located in /other-licenses/nsis
|
||||||
|
|
@ -21,15 +21,25 @@ CRCCheck on
|
||||||
|
|
||||||
RequestExecutionLevel user
|
RequestExecutionLevel user
|
||||||
|
|
||||||
|
; The commands inside this ifdef require NSIS 3.0a2 or greater so the ifdef can
|
||||||
|
; be removed after we require NSIS 3.0a2 or greater.
|
||||||
|
!ifdef NSIS_PACKEDVERSION
|
||||||
|
Unicode true
|
||||||
|
ManifestSupportedOS all
|
||||||
|
ManifestDPIAware true
|
||||||
|
!endif
|
||||||
|
|
||||||
!addplugindir ./
|
!addplugindir ./
|
||||||
|
|
||||||
Var TmpVal
|
Var TmpVal
|
||||||
Var InstallType
|
Var InstallType
|
||||||
Var AddStartMenuSC
|
Var AddStartMenuSC
|
||||||
|
Var AddTaskbarSC
|
||||||
Var AddQuickLaunchSC
|
Var AddQuickLaunchSC
|
||||||
Var AddDesktopSC
|
Var AddDesktopSC
|
||||||
Var InstallMaintenanceService
|
Var InstallMaintenanceService
|
||||||
Var PageName
|
Var PageName
|
||||||
|
Var PreventRebootRequired
|
||||||
|
|
||||||
; By defining NO_STARTMENU_DIR an installer that doesn't provide an option for
|
; By defining NO_STARTMENU_DIR an installer that doesn't provide an option for
|
||||||
; an application's Start Menu PROGRAMS directory and doesn't define the
|
; an application's Start Menu PROGRAMS directory and doesn't define the
|
||||||
|
|
@ -82,6 +92,7 @@ VIAddVersionKey "OriginalFilename" "setup.exe"
|
||||||
!insertmacro InitHashAppModelId
|
!insertmacro InitHashAppModelId
|
||||||
!insertmacro IsHandlerForInstallDir
|
!insertmacro IsHandlerForInstallDir
|
||||||
!insertmacro IsPinnedToTaskBar
|
!insertmacro IsPinnedToTaskBar
|
||||||
|
!insertmacro IsUserAdmin
|
||||||
!insertmacro LogDesktopShortcut
|
!insertmacro LogDesktopShortcut
|
||||||
!insertmacro LogQuickLaunchShortcut
|
!insertmacro LogQuickLaunchShortcut
|
||||||
!insertmacro LogStartMenuShortcut
|
!insertmacro LogStartMenuShortcut
|
||||||
|
|
@ -90,6 +101,7 @@ VIAddVersionKey "OriginalFilename" "setup.exe"
|
||||||
!insertmacro RegCleanAppHandler
|
!insertmacro RegCleanAppHandler
|
||||||
!insertmacro RegCleanMain
|
!insertmacro RegCleanMain
|
||||||
!insertmacro RegCleanUninstall
|
!insertmacro RegCleanUninstall
|
||||||
|
!insertmacro RemovePrecompleteEntries
|
||||||
!insertmacro SetAppLSPCategories
|
!insertmacro SetAppLSPCategories
|
||||||
!insertmacro SetBrandNameVars
|
!insertmacro SetBrandNameVars
|
||||||
!insertmacro UpdateShortcutAppModelIDs
|
!insertmacro UpdateShortcutAppModelIDs
|
||||||
|
|
@ -153,6 +165,11 @@ Page custom preOptions leaveOptions
|
||||||
!define MUI_DIRECTORYPAGE_VERIFYONLEAVE
|
!define MUI_DIRECTORYPAGE_VERIFYONLEAVE
|
||||||
!insertmacro MUI_PAGE_DIRECTORY
|
!insertmacro MUI_PAGE_DIRECTORY
|
||||||
|
|
||||||
|
; Custom Components Page
|
||||||
|
!ifdef MOZ_MAINTENANCE_SERVICE
|
||||||
|
Page custom preComponents leaveComponents
|
||||||
|
!endif
|
||||||
|
|
||||||
; Custom Shortcuts Page
|
; Custom Shortcuts Page
|
||||||
Page custom preShortcuts leaveShortcuts
|
Page custom preShortcuts leaveShortcuts
|
||||||
|
|
||||||
|
|
@ -185,7 +202,42 @@ Section "-InstallStartCleanup"
|
||||||
SetOutPath "$INSTDIR"
|
SetOutPath "$INSTDIR"
|
||||||
${StartInstallLog} "${BrandFullName}" "${AB_CD}" "${AppVersion}" "${GREVersion}"
|
${StartInstallLog} "${BrandFullName}" "${AB_CD}" "${AppVersion}" "${GREVersion}"
|
||||||
|
|
||||||
; Delete the app exe to prevent launching the app while we are installing.
|
StrCpy $R9 "true"
|
||||||
|
StrCpy $PreventRebootRequired "false"
|
||||||
|
${GetParameters} $R8
|
||||||
|
${GetOptions} "$R8" "/INI=" $R7
|
||||||
|
${Unless} ${Errors}
|
||||||
|
; The configuration file must also exist
|
||||||
|
${If} ${FileExists} "$R7"
|
||||||
|
ReadINIStr $R9 $R7 "Install" "RemoveDistributionDir"
|
||||||
|
ReadINIStr $R8 $R7 "Install" "PreventRebootRequired"
|
||||||
|
${If} $R8 == "true"
|
||||||
|
StrCpy $PreventRebootRequired "true"
|
||||||
|
${EndIf}
|
||||||
|
${EndIf}
|
||||||
|
${EndUnless}
|
||||||
|
|
||||||
|
; Remove directories and files we always control before parsing the uninstall
|
||||||
|
; log so empty directories can be removed.
|
||||||
|
${If} ${FileExists} "$INSTDIR\updates"
|
||||||
|
RmDir /r "$INSTDIR\updates"
|
||||||
|
${EndIf}
|
||||||
|
${If} ${FileExists} "$INSTDIR\updated"
|
||||||
|
RmDir /r "$INSTDIR\updated"
|
||||||
|
${EndIf}
|
||||||
|
${If} ${FileExists} "$INSTDIR\defaults\shortcuts"
|
||||||
|
RmDir /r "$INSTDIR\defaults\shortcuts"
|
||||||
|
${EndIf}
|
||||||
|
; Only remove the distribution directory if it exists and if the installer
|
||||||
|
; isn't launched with an ini file that has RemoveDistributionDir=false in the
|
||||||
|
; install section.
|
||||||
|
${If} ${FileExists} "$INSTDIR\distribution"
|
||||||
|
${AndIf} $R9 != "false"
|
||||||
|
RmDir /r "$INSTDIR\distribution"
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
|
; Delete the app exe if present to prevent launching the app while we are
|
||||||
|
; installing.
|
||||||
ClearErrors
|
ClearErrors
|
||||||
${DeleteFile} "$INSTDIR\${FileMainEXE}"
|
${DeleteFile} "$INSTDIR\${FileMainEXE}"
|
||||||
${If} ${Errors}
|
${If} ${Errors}
|
||||||
|
|
@ -201,9 +253,31 @@ Section "-InstallStartCleanup"
|
||||||
${InitHashAppModelId} "$INSTDIR" "Software\Mozilla\${AppName}\TaskBarIDs"
|
${InitHashAppModelId} "$INSTDIR" "Software\Mozilla\${AppName}\TaskBarIDs"
|
||||||
|
|
||||||
; Remove the updates directory for Vista and above
|
; Remove the updates directory for Vista and above
|
||||||
${CleanUpdateDirectories} "Mozilla\Firefox" "Mozilla\updates"
|
${CleanUpdateDirectories} "Mozilla\Pale Moon" "Mozilla\updates"
|
||||||
|
|
||||||
${RemoveDeprecatedFiles}
|
${RemoveDeprecatedFiles}
|
||||||
|
${RemovePrecompleteEntries} "false"
|
||||||
|
|
||||||
|
${If} ${FileExists} "$INSTDIR\defaults\pref\channel-prefs.js"
|
||||||
|
Delete "$INSTDIR\defaults\pref\channel-prefs.js"
|
||||||
|
${EndIf}
|
||||||
|
${If} ${FileExists} "$INSTDIR\defaults\pref"
|
||||||
|
RmDir "$INSTDIR\defaults\pref"
|
||||||
|
${EndIf}
|
||||||
|
${If} ${FileExists} "$INSTDIR\defaults"
|
||||||
|
RmDir "$INSTDIR\defaults"
|
||||||
|
${EndIf}
|
||||||
|
${If} ${FileExists} "$INSTDIR\uninstall"
|
||||||
|
; Remove the uninstall directory that we control
|
||||||
|
RmDir /r "$INSTDIR\uninstall"
|
||||||
|
${EndIf}
|
||||||
|
${If} ${FileExists} "$INSTDIR\update-settings.ini"
|
||||||
|
Delete "$INSTDIR\update-settings.ini"
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
|
; Explictly remove empty webapprt dir in case it exists (bug 757978).
|
||||||
|
RmDir "$INSTDIR\webapprt\components"
|
||||||
|
RmDir "$INSTDIR\webapprt"
|
||||||
|
|
||||||
${InstallStartCleanupCommon}
|
${InstallStartCleanupCommon}
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
@ -215,8 +289,6 @@ Section "-Application" APP_IDX
|
||||||
DetailPrint $(STATUS_INSTALL_APP)
|
DetailPrint $(STATUS_INSTALL_APP)
|
||||||
SetDetailsPrint none
|
SetDetailsPrint none
|
||||||
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\${TO_BE_DELETED}"
|
|
||||||
|
|
||||||
${LogHeader} "Installing Main Files"
|
${LogHeader} "Installing Main Files"
|
||||||
${CopyFilesFromDir} "$EXEDIR\core" "$INSTDIR" \
|
${CopyFilesFromDir} "$EXEDIR\core" "$INSTDIR" \
|
||||||
"$(ERROR_CREATE_DIRECTORY_PREFIX)" \
|
"$(ERROR_CREATE_DIRECTORY_PREFIX)" \
|
||||||
|
|
@ -237,18 +309,6 @@ Section "-Application" APP_IDX
|
||||||
${LogMsg} "Registered: $INSTDIR\AccessibleMarshal.dll"
|
${LogMsg} "Registered: $INSTDIR\AccessibleMarshal.dll"
|
||||||
${EndIf}
|
${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"
|
|
||||||
|
|
||||||
ClearErrors
|
ClearErrors
|
||||||
|
|
||||||
; Default for creating Start Menu shortcut
|
; Default for creating Start Menu shortcut
|
||||||
|
|
@ -336,10 +396,12 @@ Section "-Application" APP_IDX
|
||||||
|
|
||||||
; If we are writing to HKLM and create either the desktop or start menu
|
; If we are writing to HKLM and create either the desktop or start menu
|
||||||
; shortcuts set IconsVisible to 1 otherwise to 0.
|
; shortcuts set IconsVisible to 1 otherwise to 0.
|
||||||
|
; Taskbar shortcuts imply having a start menu shortcut.
|
||||||
${StrFilter} "${FileMainEXE}" "+" "" "" $R9
|
${StrFilter} "${FileMainEXE}" "+" "" "" $R9
|
||||||
StrCpy $0 "Software\Clients\StartMenuInternet\$R9\InstallInfo"
|
StrCpy $0 "Software\Clients\StartMenuInternet\$R9\InstallInfo"
|
||||||
${If} $AddDesktopSC == 1
|
${If} $AddDesktopSC == 1
|
||||||
${OrIf} $AddStartMenuSC == 1
|
${OrIf} $AddStartMenuSC == 1
|
||||||
|
${OrIf} $AddTaskbarSC == 1
|
||||||
WriteRegDWORD HKLM "$0" "IconsVisible" 1
|
WriteRegDWORD HKLM "$0" "IconsVisible" 1
|
||||||
${Else}
|
${Else}
|
||||||
WriteRegDWORD HKLM "$0" "IconsVisible" 0
|
WriteRegDWORD HKLM "$0" "IconsVisible" 0
|
||||||
|
|
@ -353,16 +415,53 @@ Section "-Application" APP_IDX
|
||||||
|
|
||||||
; If we create either the desktop or start menu shortcuts, then
|
; If we create either the desktop or start menu shortcuts, then
|
||||||
; set IconsVisible to 1 otherwise to 0.
|
; set IconsVisible to 1 otherwise to 0.
|
||||||
|
; Taskbar shortcuts imply having a start menu shortcut.
|
||||||
${StrFilter} "${FileMainEXE}" "+" "" "" $R9
|
${StrFilter} "${FileMainEXE}" "+" "" "" $R9
|
||||||
StrCpy $0 "Software\Clients\StartMenuInternet\$R9\InstallInfo"
|
StrCpy $0 "Software\Clients\StartMenuInternet\$R9\InstallInfo"
|
||||||
${If} $AddDesktopSC == 1
|
${If} $AddDesktopSC == 1
|
||||||
${OrIf} $AddStartMenuSC == 1
|
${OrIf} $AddStartMenuSC == 1
|
||||||
|
${OrIf} $AddTaskbarSC == 1
|
||||||
WriteRegDWORD HKCU "$0" "IconsVisible" 1
|
WriteRegDWORD HKCU "$0" "IconsVisible" 1
|
||||||
${Else}
|
${Else}
|
||||||
WriteRegDWORD HKCU "$0" "IconsVisible" 0
|
WriteRegDWORD HKCU "$0" "IconsVisible" 0
|
||||||
${EndIf}
|
${EndIf}
|
||||||
${EndIf}
|
${EndIf}
|
||||||
|
|
||||||
|
!ifdef MOZ_MAINTENANCE_SERVICE
|
||||||
|
; If the maintenance service page was displayed then a value was already
|
||||||
|
; explicitly selected for installing the maintenance service and
|
||||||
|
; and so InstallMaintenanceService will already be 0 or 1.
|
||||||
|
; If the maintenance service page was not displayed then
|
||||||
|
; InstallMaintenanceService will be equal to "".
|
||||||
|
${If} $InstallMaintenanceService == ""
|
||||||
|
Call IsUserAdmin
|
||||||
|
Pop $R0
|
||||||
|
${If} $R0 == "true"
|
||||||
|
; Only proceed if we have HKLM write access
|
||||||
|
${AndIf} $TmpVal == "HKLM"
|
||||||
|
; On Windows < XP SP3 we do not install the maintenance service.
|
||||||
|
${If} ${IsWinXP}
|
||||||
|
${AndIf} ${AtMostServicePack} 2
|
||||||
|
StrCpy $InstallMaintenanceService "0"
|
||||||
|
${Else}
|
||||||
|
; The user is an admin, so we should default to installing the service.
|
||||||
|
StrCpy $InstallMaintenanceService "1"
|
||||||
|
${EndIf}
|
||||||
|
${Else}
|
||||||
|
; The user is not admin, so we can't install the service.
|
||||||
|
StrCpy $InstallMaintenanceService "0"
|
||||||
|
${EndIf}
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
|
${If} $InstallMaintenanceService == "1"
|
||||||
|
; The user wants to install the maintenance service, so execute
|
||||||
|
; the pre-packaged maintenance service installer.
|
||||||
|
; This option can only be turned on if the user is an admin so there
|
||||||
|
; is no need to use ExecShell w/ verb runas to enforce elevated.
|
||||||
|
nsExec::Exec "$\"$INSTDIR\maintenanceservice_installer.exe$\""
|
||||||
|
${EndIf}
|
||||||
|
!endif
|
||||||
|
|
||||||
; These need special handling on uninstall since they may be overwritten by
|
; These need special handling on uninstall since they may be overwritten by
|
||||||
; an install into a different location.
|
; an install into a different location.
|
||||||
StrCpy $0 "Software\Microsoft\Windows\CurrentVersion\App Paths\${FileMainEXE}"
|
StrCpy $0 "Software\Microsoft\Windows\CurrentVersion\App Paths\${FileMainEXE}"
|
||||||
|
|
@ -437,6 +536,13 @@ Section "-Application" APP_IDX
|
||||||
${EndIf}
|
${EndIf}
|
||||||
${EndIf}
|
${EndIf}
|
||||||
|
|
||||||
|
; Update lastwritetime of the Start Menu shortcut to clear the tile cache.
|
||||||
|
${If} ${AtLeastWin8}
|
||||||
|
${AndIf} ${FileExists} "$SMPROGRAMS\${BrandFullName}.lnk"
|
||||||
|
FileOpen $0 "$SMPROGRAMS\${BrandFullName}.lnk" a
|
||||||
|
FileClose $0
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
${If} $AddDesktopSC == 1
|
${If} $AddDesktopSC == 1
|
||||||
CreateShortCut "$DESKTOP\${BrandFullName}.lnk" "$INSTDIR\${FileMainEXE}"
|
CreateShortCut "$DESKTOP\${BrandFullName}.lnk" "$INSTDIR\${FileMainEXE}"
|
||||||
${If} ${FileExists} "$DESKTOP\${BrandFullName}.lnk"
|
${If} ${FileExists} "$DESKTOP\${BrandFullName}.lnk"
|
||||||
|
|
@ -472,6 +578,13 @@ Section "-Application" APP_IDX
|
||||||
${EndIf}
|
${EndIf}
|
||||||
${EndUnless}
|
${EndUnless}
|
||||||
${EndIf}
|
${EndIf}
|
||||||
|
|
||||||
|
!ifdef MOZ_MAINTENANCE_SERVICE
|
||||||
|
${If} $TmpVal == "HKLM"
|
||||||
|
; Add the registry keys for allowed certificates.
|
||||||
|
${AddMaintCertKeys}
|
||||||
|
${EndIf}
|
||||||
|
!endif
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
||||||
; Cleanup operations to perform at the end of the installation.
|
; Cleanup operations to perform at the end of the installation.
|
||||||
|
|
@ -481,8 +594,35 @@ Section "-InstallEndCleanup"
|
||||||
SetDetailsPrint none
|
SetDetailsPrint none
|
||||||
|
|
||||||
${Unless} ${Silent}
|
${Unless} ${Silent}
|
||||||
|
ClearErrors
|
||||||
${MUI_INSTALLOPTIONS_READ} $0 "summary.ini" "Field 4" "State"
|
${MUI_INSTALLOPTIONS_READ} $0 "summary.ini" "Field 4" "State"
|
||||||
${If} "$0" == "1"
|
${If} "$0" == "1"
|
||||||
|
; NB: this code is duplicated in stub.nsi. Please keep in sync.
|
||||||
|
; For data migration in the app, we want to know what the default browser
|
||||||
|
; value was before we changed it. To do so, we read it here and store it
|
||||||
|
; in our own registry key.
|
||||||
|
StrCpy $0 ""
|
||||||
|
${If} ${AtLeastWinVista}
|
||||||
|
AppAssocReg::QueryCurrentDefault "http" "protocol" "effective"
|
||||||
|
Pop $1
|
||||||
|
; If the method hasn't failed, $1 will contain the progid. Check:
|
||||||
|
${If} "$1" != "method failed"
|
||||||
|
${AndIf} "$1" != "method not available"
|
||||||
|
; Read the actual command from the progid
|
||||||
|
ReadRegStr $0 HKCR "$1\shell\open\command" ""
|
||||||
|
${EndIf}
|
||||||
|
${EndIf}
|
||||||
|
; If using the App Association Registry didn't happen or failed, fall back
|
||||||
|
; to the effective http default:
|
||||||
|
${If} "$0" == ""
|
||||||
|
ReadRegStr $0 HKCR "http\shell\open\command" ""
|
||||||
|
${EndIf}
|
||||||
|
; If we have something other than empty string now, write the value.
|
||||||
|
${If} "$0" != ""
|
||||||
|
ClearErrors
|
||||||
|
WriteRegStr HKCU "Software\Mozilla\Pale Moon" "OldDefaultBrowserCommand" "$0"
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
${LogHeader} "Setting as the default browser"
|
${LogHeader} "Setting as the default browser"
|
||||||
ClearErrors
|
ClearErrors
|
||||||
${GetParameters} $0
|
${GetParameters} $0
|
||||||
|
|
@ -493,46 +633,64 @@ Section "-InstallEndCleanup"
|
||||||
GetFunctionAddress $0 SetAsDefaultAppUserHKCU
|
GetFunctionAddress $0 SetAsDefaultAppUserHKCU
|
||||||
UAC::ExecCodeSegment $0
|
UAC::ExecCodeSegment $0
|
||||||
${EndIf}
|
${EndIf}
|
||||||
|
${ElseIfNot} ${Errors}
|
||||||
|
${LogHeader} "Writing default-browser opt-out"
|
||||||
|
ClearErrors
|
||||||
|
WriteRegStr HKCU "Software\Mozilla\Pale Moon" "DefaultBrowserOptOut" "True"
|
||||||
|
${If} ${Errors}
|
||||||
|
${LogMsg} "Error writing default-browser opt-out"
|
||||||
|
${EndIf}
|
||||||
${EndIf}
|
${EndIf}
|
||||||
; Adds a pinned Task Bar shortcut (see MigrateTaskBarShortcut for details).
|
|
||||||
${MigrateTaskBarShortcut}
|
|
||||||
${EndUnless}
|
${EndUnless}
|
||||||
|
|
||||||
${GetShortcutsLogPath} $0
|
; Adds a pinned Task Bar shortcut (see MigrateTaskBarShortcut for details).
|
||||||
WriteIniStr "$0" "TASKBAR" "Migrated" "true"
|
${MigrateTaskBarShortcut}
|
||||||
|
|
||||||
|
; Add the Firewall entries during install
|
||||||
|
Call AddFirewallEntries
|
||||||
|
|
||||||
; Refresh desktop icons
|
; Refresh desktop icons
|
||||||
System::Call "shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_DWORDFLUSH}, i 0, i 0)"
|
System::Call "shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_DWORDFLUSH}, i 0, i 0)"
|
||||||
|
|
||||||
${InstallEndCleanupCommon}
|
${InstallEndCleanupCommon}
|
||||||
|
|
||||||
${If} ${RebootFlag}
|
${If} $PreventRebootRequired == "true"
|
||||||
; When a reboot is required give SHChangeNotify time to finish the
|
SetRebootFlag false
|
||||||
; refreshing the icons so the OS doesn't display the icons from helper.exe
|
${EndIf}
|
||||||
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}"
|
${If} ${RebootFlag}
|
||||||
ClearErrors
|
; Admin is required to delete files on reboot so only add the moz-delete if
|
||||||
Rename "$INSTDIR\${FileMainEXE}" "$INSTDIR\${FileMainEXE}.moz-delete"
|
; the user is an admin. After calling UAC::IsAdmin $0 will equal 1 if the
|
||||||
${Unless} ${Errors}
|
; user is an admin.
|
||||||
Delete /REBOOTOK "$INSTDIR\${FileMainEXE}.moz-delete"
|
UAC::IsAdmin
|
||||||
|
${If} "$0" == "1"
|
||||||
|
; When a reboot is required give SHChangeNotify time to finish the
|
||||||
|
; refreshing the icons so the OS doesn't display the icons from helper.exe
|
||||||
|
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}
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
|
${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}
|
${EndUnless}
|
||||||
${EndIf}
|
${EndIf}
|
||||||
|
|
||||||
${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}
|
${EndIf}
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
||||||
|
|
@ -669,7 +827,9 @@ Function CheckExistingInstall
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
||||||
Function LaunchApp
|
Function LaunchApp
|
||||||
|
!ifndef DEV_EDITION
|
||||||
${ManualCloseAppPrompt} "${WindowClass}" "$(WARN_MANUALLY_CLOSE_APP_LAUNCH)"
|
${ManualCloseAppPrompt} "${WindowClass}" "$(WARN_MANUALLY_CLOSE_APP_LAUNCH)"
|
||||||
|
!endif
|
||||||
|
|
||||||
ClearErrors
|
ClearErrors
|
||||||
${GetParameters} $0
|
${GetParameters} $0
|
||||||
|
|
@ -776,9 +936,7 @@ Function leaveShortcuts
|
||||||
Abort
|
Abort
|
||||||
${EndIf}
|
${EndIf}
|
||||||
${MUI_INSTALLOPTIONS_READ} $AddDesktopSC "shortcuts.ini" "Field 2" "State"
|
${MUI_INSTALLOPTIONS_READ} $AddDesktopSC "shortcuts.ini" "Field 2" "State"
|
||||||
|
${MUI_INSTALLOPTIONS_READ} $AddStartMenuSC "shortcuts.ini" "Field 3" "State"
|
||||||
; If we have a Metro browser and are Win8, then we don't have a Field 3
|
|
||||||
${MUI_INSTALLOPTIONS_READ} $AddStartMenuSC "shortcuts.ini" "Field 3" "State"
|
|
||||||
|
|
||||||
; Don't install the quick launch shortcut on Windows 7
|
; Don't install the quick launch shortcut on Windows 7
|
||||||
${Unless} ${AtLeastWin7}
|
${Unless} ${AtLeastWin7}
|
||||||
|
|
@ -790,6 +948,59 @@ Function leaveShortcuts
|
||||||
${EndIf}
|
${EndIf}
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
||||||
|
!ifdef MOZ_MAINTENANCE_SERVICE
|
||||||
|
Function preComponents
|
||||||
|
; If the service already exists, don't show this page
|
||||||
|
ServicesHelper::IsInstalled "MozillaMaintenance"
|
||||||
|
Pop $R9
|
||||||
|
${If} $R9 == 1
|
||||||
|
; The service already exists so don't show this page.
|
||||||
|
Abort
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
|
; On Windows < XP SP3 we do not install the maintenance service.
|
||||||
|
${If} ${IsWinXP}
|
||||||
|
${AndIf} ${AtMostServicePack} 2
|
||||||
|
Abort
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
|
; Don't show the custom components page if the
|
||||||
|
; user is not an admin
|
||||||
|
Call IsUserAdmin
|
||||||
|
Pop $R9
|
||||||
|
${If} $R9 != "true"
|
||||||
|
Abort
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
|
; Only show the maintenance service page if we have write access to HKLM
|
||||||
|
ClearErrors
|
||||||
|
WriteRegStr HKLM "Software\Mozilla" \
|
||||||
|
"${BrandShortName}InstallerTest" "Write Test"
|
||||||
|
${If} ${Errors}
|
||||||
|
ClearErrors
|
||||||
|
Abort
|
||||||
|
${Else}
|
||||||
|
DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest"
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
|
StrCpy $PageName "Components"
|
||||||
|
${CheckCustomCommon}
|
||||||
|
!insertmacro MUI_HEADER_TEXT "$(COMPONENTS_PAGE_TITLE)" "$(COMPONENTS_PAGE_SUBTITLE)"
|
||||||
|
!insertmacro MUI_INSTALLOPTIONS_DISPLAY "components.ini"
|
||||||
|
FunctionEnd
|
||||||
|
|
||||||
|
Function leaveComponents
|
||||||
|
${MUI_INSTALLOPTIONS_READ} $0 "components.ini" "Settings" "State"
|
||||||
|
${If} $0 != 0
|
||||||
|
Abort
|
||||||
|
${EndIf}
|
||||||
|
${MUI_INSTALLOPTIONS_READ} $InstallMaintenanceService "components.ini" "Field 2" "State"
|
||||||
|
${If} $InstallType == ${INSTALLTYPE_CUSTOM}
|
||||||
|
Call CheckExistingInstall
|
||||||
|
${EndIf}
|
||||||
|
FunctionEnd
|
||||||
|
!endif
|
||||||
|
|
||||||
Function preSummary
|
Function preSummary
|
||||||
StrCpy $PageName "Summary"
|
StrCpy $PageName "Summary"
|
||||||
; Setup the summary.ini file for the Custom Summary Page
|
; Setup the summary.ini file for the Custom Summary Page
|
||||||
|
|
@ -838,14 +1049,14 @@ Function preSummary
|
||||||
WriteRegStr HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" "Write Test"
|
WriteRegStr HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" "Write Test"
|
||||||
${Unless} ${Errors}
|
${Unless} ${Errors}
|
||||||
DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest"
|
DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest"
|
||||||
; Check if Firefox is the http handler for this user.
|
; Check if Pale Moon is the http handler for this user.
|
||||||
SetShellVarContext current ; Set SHCTX to the current user
|
SetShellVarContext current ; Set SHCTX to the current user
|
||||||
${IsHandlerForInstallDir} "http" $R9
|
${IsHandlerForInstallDir} "http" $R9
|
||||||
${If} $TmpVal == "HKLM"
|
${If} $TmpVal == "HKLM"
|
||||||
SetShellVarContext all ; Set SHCTX to all users
|
SetShellVarContext all ; Set SHCTX to all users
|
||||||
${EndIf}
|
${EndIf}
|
||||||
; If Firefox isn't the http handler for this user show the option to set
|
; If Pale Moon isn't the http handler for this user show the option to set
|
||||||
; Firefox as the default browser.
|
; Pale Moon as the default browser.
|
||||||
${If} "$R9" != "true"
|
${If} "$R9" != "true"
|
||||||
${AndIf} ${AtMostWin2008R2}
|
${AndIf} ${AtMostWin2008R2}
|
||||||
WriteINIStr "$PLUGINSDIR\summary.ini" "Settings" NumFields "4"
|
WriteINIStr "$PLUGINSDIR\summary.ini" "Settings" NumFields "4"
|
||||||
|
|
@ -926,7 +1137,46 @@ Function .onInit
|
||||||
StrCpy $LANGUAGE 0
|
StrCpy $LANGUAGE 0
|
||||||
${SetBrandNameVars} "$EXEDIR\core\distribution\setup.ini"
|
${SetBrandNameVars} "$EXEDIR\core\distribution\setup.ini"
|
||||||
|
|
||||||
${InstallOnInitCommon} "$(WARN_MIN_SUPPORTED_OS_MSG)"
|
; 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 and lower are not supported on any architecture.
|
||||||
|
${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 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)"
|
||||||
|
|
||||||
|
; The commands inside this ifndef are needed prior to NSIS 3.0a2 and can be
|
||||||
|
; removed after we require NSIS 3.0a2 or greater.
|
||||||
|
!ifndef NSIS_PACKEDVERSION
|
||||||
|
System::Call 'user32::SetProcessDPIAware()'
|
||||||
|
!endif
|
||||||
|
|
||||||
!insertmacro InitInstallOptionsFile "options.ini"
|
!insertmacro InitInstallOptionsFile "options.ini"
|
||||||
!insertmacro InitInstallOptionsFile "shortcuts.ini"
|
!insertmacro InitInstallOptionsFile "shortcuts.ini"
|
||||||
|
|
@ -1016,6 +1266,25 @@ Function .onInit
|
||||||
WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" State "1"
|
WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" State "1"
|
||||||
${EndUnless}
|
${EndUnless}
|
||||||
|
|
||||||
|
; Setup the components.ini file for the Components Page
|
||||||
|
WriteINIStr "$PLUGINSDIR\components.ini" "Settings" NumFields "2"
|
||||||
|
|
||||||
|
WriteINIStr "$PLUGINSDIR\components.ini" "Field 1" Type "label"
|
||||||
|
WriteINIStr "$PLUGINSDIR\components.ini" "Field 1" Text "$(OPTIONAL_COMPONENTS_DESC)"
|
||||||
|
WriteINIStr "$PLUGINSDIR\components.ini" "Field 1" Left "0"
|
||||||
|
WriteINIStr "$PLUGINSDIR\components.ini" "Field 1" Right "-1"
|
||||||
|
WriteINIStr "$PLUGINSDIR\components.ini" "Field 1" Top "5"
|
||||||
|
WriteINIStr "$PLUGINSDIR\components.ini" "Field 1" Bottom "25"
|
||||||
|
|
||||||
|
WriteINIStr "$PLUGINSDIR\components.ini" "Field 2" Type "checkbox"
|
||||||
|
WriteINIStr "$PLUGINSDIR\components.ini" "Field 2" Text "$(MAINTENANCE_SERVICE_CHECKBOX_DESC)"
|
||||||
|
WriteINIStr "$PLUGINSDIR\components.ini" "Field 2" Left "0"
|
||||||
|
WriteINIStr "$PLUGINSDIR\components.ini" "Field 2" Right "-1"
|
||||||
|
WriteINIStr "$PLUGINSDIR\components.ini" "Field 2" Top "27"
|
||||||
|
WriteINIStr "$PLUGINSDIR\components.ini" "Field 2" Bottom "37"
|
||||||
|
WriteINIStr "$PLUGINSDIR\components.ini" "Field 2" State "1"
|
||||||
|
WriteINIStr "$PLUGINSDIR\components.ini" "Field 2" Flags "GROUP"
|
||||||
|
|
||||||
; There must always be a core directory.
|
; There must always be a core directory.
|
||||||
${GetSize} "$EXEDIR\core\" "/S=0K" $R5 $R7 $R8
|
${GetSize} "$EXEDIR\core\" "/S=0K" $R5 $R7 $R8
|
||||||
SectionSetSize ${APP_IDX} $R5
|
SectionSetSize ${APP_IDX} $R5
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,332 @@
|
||||||
|
# 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/.
|
||||||
|
|
||||||
|
; 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 admin
|
||||||
|
|
||||||
|
; The commands inside this ifdef require NSIS 3.0a2 or greater so the ifdef can
|
||||||
|
; be removed after we require NSIS 3.0a2 or greater.
|
||||||
|
!ifdef NSIS_PACKEDVERSION
|
||||||
|
Unicode true
|
||||||
|
ManifestSupportedOS all
|
||||||
|
ManifestDPIAware true
|
||||||
|
!endif
|
||||||
|
|
||||||
|
!addplugindir ./
|
||||||
|
|
||||||
|
; Variables
|
||||||
|
Var TempMaintServiceName
|
||||||
|
Var BrandFullNameDA
|
||||||
|
Var BrandFullName
|
||||||
|
|
||||||
|
; 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 GetOptions
|
||||||
|
!insertmacro GetParameters
|
||||||
|
!insertmacro GetSize
|
||||||
|
|
||||||
|
; The test slaves use this fallback key to run tests.
|
||||||
|
; And anyone that wants to run tests themselves should already have
|
||||||
|
; this installed.
|
||||||
|
!define FallbackKey \
|
||||||
|
"SOFTWARE\Mozilla\MaintenanceService\3932ecacee736d366d6436db0f55bce4"
|
||||||
|
|
||||||
|
!define CompanyName "Mozilla Corporation"
|
||||||
|
!define BrandFullNameInternal ""
|
||||||
|
|
||||||
|
; The following includes are custom.
|
||||||
|
!include defines.nsi
|
||||||
|
; We keep defines.nsi defined so that we get other things like
|
||||||
|
; the version number, but we redefine BrandFullName
|
||||||
|
!define MaintFullName "Mozilla Maintenance Service"
|
||||||
|
!undef BrandFullName
|
||||||
|
!define BrandFullName "${MaintFullName}"
|
||||||
|
|
||||||
|
!include common.nsh
|
||||||
|
!include locales.nsi
|
||||||
|
|
||||||
|
VIAddVersionKey "FileDescription" "${MaintFullName} Installer"
|
||||||
|
VIAddVersionKey "OriginalFilename" "maintenanceservice_installer.exe"
|
||||||
|
|
||||||
|
Name "${MaintFullName}"
|
||||||
|
OutFile "maintenanceservice_installer.exe"
|
||||||
|
|
||||||
|
; Get installation folder from registry if available
|
||||||
|
InstallDirRegKey HKLM "Software\Mozilla\MaintenanceService" ""
|
||||||
|
|
||||||
|
SetOverwrite on
|
||||||
|
|
||||||
|
; serviceinstall.cpp also uses this key, in case the path is changed, update
|
||||||
|
; there too.
|
||||||
|
!define MaintUninstallKey \
|
||||||
|
"Software\Microsoft\Windows\CurrentVersion\Uninstall\MozillaMaintenanceService"
|
||||||
|
|
||||||
|
; Always install into the 32-bit location even if we have a 64-bit build.
|
||||||
|
; This is because we use only 1 service for all Basilisk channels.
|
||||||
|
; Allow either x86 and x64 builds to exist at this location, depending on
|
||||||
|
; what is the latest build.
|
||||||
|
InstallDir "$PROGRAMFILES32\${MaintFullName}\"
|
||||||
|
ShowUnInstDetails nevershow
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Modern User Interface - MUI
|
||||||
|
|
||||||
|
!define MUI_ICON setup.ico
|
||||||
|
!define MUI_UNICON setup.ico
|
||||||
|
!define MUI_WELCOMEPAGE_TITLE_3LINES
|
||||||
|
!define MUI_UNWELCOMEFINISHPAGE_BITMAP wizWatermark.bmp
|
||||||
|
|
||||||
|
;Interface Settings
|
||||||
|
!define MUI_ABORTWARNING
|
||||||
|
|
||||||
|
; Uninstaller Pages
|
||||||
|
!insertmacro MUI_UNPAGE_CONFIRM
|
||||||
|
!insertmacro MUI_UNPAGE_INSTFILES
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# 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 " "
|
||||||
|
|
||||||
|
Function .onInit
|
||||||
|
; Remove the current exe directory from the search order.
|
||||||
|
; This only effects LoadLibrary calls and not implicitly loaded DLLs.
|
||||||
|
System::Call 'kernel32::SetDllDirectoryW(w "")'
|
||||||
|
|
||||||
|
SetSilent silent
|
||||||
|
|
||||||
|
${Unless} ${AtLeastWin7}
|
||||||
|
Abort
|
||||||
|
${EndUnless}
|
||||||
|
FunctionEnd
|
||||||
|
|
||||||
|
Function un.onInit
|
||||||
|
; Remove the current exe directory from the search order.
|
||||||
|
; This only effects LoadLibrary calls and not implicitly loaded DLLs.
|
||||||
|
System::Call 'kernel32::SetDllDirectoryW(w "")'
|
||||||
|
|
||||||
|
; The commands inside this ifndef are needed prior to NSIS 3.0a2 and can be
|
||||||
|
; removed after we require NSIS 3.0a2 or greater.
|
||||||
|
!ifndef NSIS_PACKEDVERSION
|
||||||
|
${If} ${AtLeastWinVista}
|
||||||
|
System::Call 'user32::SetProcessDPIAware()'
|
||||||
|
${EndIf}
|
||||||
|
!endif
|
||||||
|
|
||||||
|
StrCpy $BrandFullNameDA "${MaintFullName}"
|
||||||
|
StrCpy $BrandFullName "${MaintFullName}"
|
||||||
|
FunctionEnd
|
||||||
|
|
||||||
|
Section "MaintenanceService"
|
||||||
|
AllowSkipFiles off
|
||||||
|
|
||||||
|
CreateDirectory $INSTDIR
|
||||||
|
SetOutPath $INSTDIR
|
||||||
|
|
||||||
|
; If the service already exists, then it will be stopped when upgrading it
|
||||||
|
; via the maintenanceservice_tmp.exe command executed below.
|
||||||
|
; The maintenanceservice_tmp.exe command will rename the file to
|
||||||
|
; maintenanceservice.exe if maintenanceservice_tmp.exe is newer.
|
||||||
|
; If the service does not exist yet, we install it and drop the file on
|
||||||
|
; disk as maintenanceservice.exe directly.
|
||||||
|
StrCpy $TempMaintServiceName "maintenanceservice.exe"
|
||||||
|
IfFileExists "$INSTDIR\maintenanceservice.exe" 0 skipAlreadyExists
|
||||||
|
StrCpy $TempMaintServiceName "maintenanceservice_tmp.exe"
|
||||||
|
skipAlreadyExists:
|
||||||
|
|
||||||
|
; We always write out a copy and then decide whether to install it or
|
||||||
|
; not via calling its 'install' cmdline which works by version comparison.
|
||||||
|
CopyFiles "$EXEDIR\maintenanceservice.exe" "$INSTDIR\$TempMaintServiceName"
|
||||||
|
|
||||||
|
; The updater.ini file is only used when performing an install or upgrade,
|
||||||
|
; and only if that install or upgrade is successful. If an old updater.ini
|
||||||
|
; happened to be copied into the maintenance service installation directory
|
||||||
|
; but the service was not newer, the updater.ini file would be unused.
|
||||||
|
; It is used to fill the description of the service on success.
|
||||||
|
CopyFiles "$EXEDIR\updater.ini" "$INSTDIR\updater.ini"
|
||||||
|
|
||||||
|
; Install the application maintenance service.
|
||||||
|
; If a service already exists, the command line parameter will stop the
|
||||||
|
; service and only install itself if it is newer than the already installed
|
||||||
|
; service. If successful it will remove the old maintenanceservice.exe
|
||||||
|
; and replace it with maintenanceservice_tmp.exe.
|
||||||
|
ClearErrors
|
||||||
|
${GetParameters} $0
|
||||||
|
${GetOptions} "$0" "/Upgrade" $0
|
||||||
|
${If} ${Errors}
|
||||||
|
ExecWait '"$INSTDIR\$TempMaintServiceName" install'
|
||||||
|
${Else}
|
||||||
|
; The upgrade cmdline is the same as install except
|
||||||
|
; It will fail if the service isn't already installed.
|
||||||
|
ExecWait '"$INSTDIR\$TempMaintServiceName" upgrade'
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
|
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
||||||
|
WriteRegStr HKLM "${MaintUninstallKey}" "DisplayName" "${MaintFullName}"
|
||||||
|
WriteRegStr HKLM "${MaintUninstallKey}" "UninstallString" \
|
||||||
|
'"$INSTDIR\uninstall.exe"'
|
||||||
|
WriteRegStr HKLM "${MaintUninstallKey}" "DisplayIcon" \
|
||||||
|
"$INSTDIR\Uninstall.exe,0"
|
||||||
|
WriteRegStr HKLM "${MaintUninstallKey}" "DisplayVersion" "${AppVersion}"
|
||||||
|
WriteRegStr HKLM "${MaintUninstallKey}" "Publisher" "Mozilla"
|
||||||
|
WriteRegStr HKLM "${MaintUninstallKey}" "Comments" "${BrandFullName}"
|
||||||
|
WriteRegDWORD HKLM "${MaintUninstallKey}" "NoModify" 1
|
||||||
|
${GetSize} "$INSTDIR" "/S=0K" $R2 $R3 $R4
|
||||||
|
WriteRegDWORD HKLM "${MaintUninstallKey}" "EstimatedSize" $R2
|
||||||
|
|
||||||
|
; Write out that a maintenance service was attempted.
|
||||||
|
; We do this because on upgrades we will check this value and we only
|
||||||
|
; want to install once on the first upgrade to maintenance service.
|
||||||
|
; Also write out that we are currently installed, preferences will check
|
||||||
|
; this value to determine if we should show the service update pref.
|
||||||
|
; Since the Maintenance service can be installed either x86 or x64,
|
||||||
|
; always use the 64-bit registry for checking if an attempt was made.
|
||||||
|
${If} ${RunningX64}
|
||||||
|
SetRegView 64
|
||||||
|
${EndIf}
|
||||||
|
WriteRegDWORD HKLM "Software\Mozilla\MaintenanceService" "Attempted" 1
|
||||||
|
WriteRegDWORD HKLM "Software\Mozilla\MaintenanceService" "Installed" 1
|
||||||
|
DeleteRegValue HKLM "Software\Mozilla\MaintenanceService" "FFPrefetchDisabled"
|
||||||
|
|
||||||
|
; Included here for debug purposes only.
|
||||||
|
; These keys are used to bypass the installation dir is a valid installation
|
||||||
|
; check from the service so that tests can be run.
|
||||||
|
; WriteRegStr HKLM "${FallbackKey}\0" "name" "Mozilla Corporation"
|
||||||
|
; WriteRegStr HKLM "${FallbackKey}\0" "issuer" "DigiCert SHA2 Assured ID Code Signing CA"
|
||||||
|
${If} ${RunningX64}
|
||||||
|
SetRegView lastused
|
||||||
|
${EndIf}
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
; By renaming before deleting we improve things slightly in case
|
||||||
|
; there is a file in use error. In this case a new install can happen.
|
||||||
|
Function un.RenameDelete
|
||||||
|
Pop $9
|
||||||
|
; If the .moz-delete file already exists previously, delete it
|
||||||
|
; If it doesn't exist, the call is ignored.
|
||||||
|
; We don't need to pass /REBOOTOK here since it was already marked that way
|
||||||
|
; if it exists.
|
||||||
|
Delete "$9.moz-delete"
|
||||||
|
Rename "$9" "$9.moz-delete"
|
||||||
|
${If} ${Errors}
|
||||||
|
Delete /REBOOTOK "$9"
|
||||||
|
${Else}
|
||||||
|
Delete /REBOOTOK "$9.moz-delete"
|
||||||
|
${EndIf}
|
||||||
|
ClearErrors
|
||||||
|
FunctionEnd
|
||||||
|
|
||||||
|
Section "Uninstall"
|
||||||
|
; Delete the service so that no updates will be attempted
|
||||||
|
ExecWait '"$INSTDIR\maintenanceservice.exe" uninstall'
|
||||||
|
|
||||||
|
Push "$INSTDIR\updater.ini"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$INSTDIR\maintenanceservice.exe"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$INSTDIR\maintenanceservice_tmp.exe"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$INSTDIR\maintenanceservice.old"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$INSTDIR\Uninstall.exe"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$INSTDIR\update\updater.ini"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$INSTDIR\update\updater.exe"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$INSTDIR\logs\maintenanceservice.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$INSTDIR\logs\maintenanceservice-1.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$INSTDIR\logs\maintenanceservice-2.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$INSTDIR\logs\maintenanceservice-3.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$INSTDIR\logs\maintenanceservice-4.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$INSTDIR\logs\maintenanceservice-5.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$INSTDIR\logs\maintenanceservice-6.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$INSTDIR\logs\maintenanceservice-7.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$INSTDIR\logs\maintenanceservice-8.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$INSTDIR\logs\maintenanceservice-9.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$INSTDIR\logs\maintenanceservice-10.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$INSTDIR\logs\maintenanceservice-install.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$INSTDIR\logs\maintenanceservice-uninstall.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
SetShellVarContext all
|
||||||
|
Push "$APPDATA\Mozilla\logs\maintenanceservice.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$APPDATA\Mozilla\logs\maintenanceservice-1.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$APPDATA\Mozilla\logs\maintenanceservice-2.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$APPDATA\Mozilla\logs\maintenanceservice-3.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$APPDATA\Mozilla\logs\maintenanceservice-4.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$APPDATA\Mozilla\logs\maintenanceservice-5.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$APPDATA\Mozilla\logs\maintenanceservice-6.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$APPDATA\Mozilla\logs\maintenanceservice-7.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$APPDATA\Mozilla\logs\maintenanceservice-8.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$APPDATA\Mozilla\logs\maintenanceservice-9.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$APPDATA\Mozilla\logs\maintenanceservice-10.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$APPDATA\Mozilla\logs\maintenanceservice-install.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
Push "$APPDATA\Mozilla\logs\maintenanceservice-uninstall.log"
|
||||||
|
Call un.RenameDelete
|
||||||
|
RMDir /REBOOTOK "$APPDATA\Mozilla\logs"
|
||||||
|
RMDir /REBOOTOK "$APPDATA\Mozilla"
|
||||||
|
RMDir /REBOOTOK "$INSTDIR\logs"
|
||||||
|
RMDir /REBOOTOK "$INSTDIR\update"
|
||||||
|
RMDir /REBOOTOK "$INSTDIR"
|
||||||
|
|
||||||
|
DeleteRegKey HKLM "${MaintUninstallKey}"
|
||||||
|
|
||||||
|
${If} ${RunningX64}
|
||||||
|
SetRegView 64
|
||||||
|
${EndIf}
|
||||||
|
DeleteRegValue HKLM "Software\Mozilla\MaintenanceService" "Installed"
|
||||||
|
DeleteRegValue HKLM "Software\Mozilla\MaintenanceService" "FFPrefetchDisabled"
|
||||||
|
DeleteRegKey HKLM "${FallbackKey}\"
|
||||||
|
${If} ${RunningX64}
|
||||||
|
SetRegView lastused
|
||||||
|
${EndIf}
|
||||||
|
SectionEnd
|
||||||
|
|
@ -2,12 +2,7 @@
|
||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
# 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/.
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
; The registration ID of the COM server which is used for choosing wether
|
|
||||||
; to launch the Win8 metro browser or desktop browser.
|
|
||||||
!define DELEGATE_EXECUTE_HANDLER_ID {5100FEC1-212B-4BF5-9BF8-3E650FD794A3}
|
|
||||||
|
|
||||||
!macro PostUpdate
|
!macro PostUpdate
|
||||||
|
|
||||||
; PostUpdate is called from both session 0 and from the user session
|
; PostUpdate is called from both session 0 and from the user session
|
||||||
; for service updates, make sure that we only register with the user session
|
; for service updates, make sure that we only register with the user session
|
||||||
; Otherwise ApplicationID::Set can fail intermittently with a file in use error.
|
; Otherwise ApplicationID::Set can fail intermittently with a file in use error.
|
||||||
|
|
@ -15,7 +10,7 @@
|
||||||
System::Call "kernel32::ProcessIdToSessionId(i $0, *i ${NSIS_MAX_STRLEN} r9)"
|
System::Call "kernel32::ProcessIdToSessionId(i $0, *i ${NSIS_MAX_STRLEN} r9)"
|
||||||
|
|
||||||
; Determine if we're the protected UserChoice default or not. If so fix the
|
; Determine if we're the protected UserChoice default or not. If so fix the
|
||||||
; start menu tile. In case there are 2 Pale Moon installations, we only do
|
; start menu tile. In case there are 2 PaleMoon installations, we only do
|
||||||
; this if the application being updated is the default.
|
; this if the application being updated is the default.
|
||||||
ReadRegStr $0 HKCU "Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice" "ProgId"
|
ReadRegStr $0 HKCU "Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice" "ProgId"
|
||||||
${If} $0 == "PaleMoonURL"
|
${If} $0 == "PaleMoonURL"
|
||||||
|
|
@ -61,6 +56,9 @@
|
||||||
; Win7 taskbar and start menu link maintenance
|
; Win7 taskbar and start menu link maintenance
|
||||||
Call FixShortcutAppModelIDs
|
Call FixShortcutAppModelIDs
|
||||||
|
|
||||||
|
; Add the Firewall entries after an update
|
||||||
|
Call AddFirewallEntries
|
||||||
|
|
||||||
; Only update the Clients\StartMenuInternet registry key values in HKLM if
|
; Only update the Clients\StartMenuInternet registry key values in HKLM if
|
||||||
; they don't exist or this installation is the same as the one set in those
|
; they don't exist or this installation is the same as the one set in those
|
||||||
; keys.
|
; keys.
|
||||||
|
|
@ -100,6 +98,13 @@
|
||||||
; root of the Start Menu Programs directory.
|
; root of the Start Menu Programs directory.
|
||||||
${MigrateStartMenuShortcut}
|
${MigrateStartMenuShortcut}
|
||||||
|
|
||||||
|
; Update lastwritetime of the Start Menu shortcut to clear the tile cache.
|
||||||
|
${If} ${AtLeastWin8}
|
||||||
|
${AndIf} ${FileExists} "$SMPROGRAMS\${BrandFullName}.lnk"
|
||||||
|
FileOpen $0 "$SMPROGRAMS\${BrandFullName}.lnk" a
|
||||||
|
FileClose $0
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
; Adds a pinned Task Bar shortcut (see MigrateTaskBarShortcut for details).
|
; Adds a pinned Task Bar shortcut (see MigrateTaskBarShortcut for details).
|
||||||
${MigrateTaskBarShortcut}
|
${MigrateTaskBarShortcut}
|
||||||
|
|
||||||
|
|
@ -120,6 +125,50 @@
|
||||||
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\${TO_BE_DELETED}"
|
RmDir /r /REBOOTOK "$INSTDIR\${TO_BE_DELETED}"
|
||||||
|
|
||||||
|
!ifdef MOZ_MAINTENANCE_SERVICE
|
||||||
|
Call IsUserAdmin
|
||||||
|
Pop $R0
|
||||||
|
${If} $R0 == "true"
|
||||||
|
; Only proceed if we have HKLM write access
|
||||||
|
${AndIf} $TmpVal == "HKLM"
|
||||||
|
; On Windows 2000 we do not install the maintenance service.
|
||||||
|
${AndIf} ${AtLeastWinXP}
|
||||||
|
; We check to see if the maintenance service install was already attempted.
|
||||||
|
; Since the Maintenance service can be installed either x86 or x64,
|
||||||
|
; always use the 64-bit registry for checking if an attempt was made.
|
||||||
|
${If} ${RunningX64}
|
||||||
|
SetRegView 64
|
||||||
|
${EndIf}
|
||||||
|
ReadRegDWORD $5 HKLM "Software\Mozilla\MaintenanceService" "Attempted"
|
||||||
|
ClearErrors
|
||||||
|
${If} ${RunningX64}
|
||||||
|
SetRegView lastused
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
|
; Add the registry keys for allowed certificates.
|
||||||
|
${AddMaintCertKeys}
|
||||||
|
|
||||||
|
; If the maintenance service is already installed, do nothing.
|
||||||
|
; The maintenance service will launch:
|
||||||
|
; maintenanceservice_installer.exe /Upgrade to upgrade the maintenance
|
||||||
|
; service if necessary. If the update was done from updater.exe without
|
||||||
|
; the service (i.e. service is failing), updater.exe will do the update of
|
||||||
|
; the service. The reasons we do not do it here is because we don't want
|
||||||
|
; to have to prompt for limited user accounts when the service isn't used
|
||||||
|
; and we currently call the PostUpdate twice, once for the user and once
|
||||||
|
; for the SYSTEM account. Also, this would stop the maintenance service
|
||||||
|
; and we need a return result back to the service when run that way.
|
||||||
|
${If} $5 == ""
|
||||||
|
; An install of maintenance service was never attempted.
|
||||||
|
; We know we are an Admin and that we have write access into HKLM
|
||||||
|
; based on the above checks, so attempt to just run the EXE.
|
||||||
|
; In the worst case, in case there is some edge case with the
|
||||||
|
; IsAdmin check and the permissions check, the maintenance service
|
||||||
|
; will just fail to be attempted to be installed.
|
||||||
|
nsExec::Exec "$\"$INSTDIR\maintenanceservice_installer.exe$\""
|
||||||
|
${EndIf}
|
||||||
|
${EndIf}
|
||||||
|
!endif
|
||||||
!macroend
|
!macroend
|
||||||
!define PostUpdate "!insertmacro PostUpdate"
|
!define PostUpdate "!insertmacro PostUpdate"
|
||||||
|
|
||||||
|
|
@ -280,11 +329,11 @@
|
||||||
${If} ${Errors}
|
${If} ${Errors}
|
||||||
WriteRegStr SHCTX "SOFTWARE\Classes\${FILE_TYPE}" "" "PaleMoonHTML"
|
WriteRegStr SHCTX "SOFTWARE\Classes\${FILE_TYPE}" "" "PaleMoonHTML"
|
||||||
${EndIf}
|
${EndIf}
|
||||||
|
WriteRegStr SHCTX "SOFTWARE\Classes\${FILE_TYPE}\OpenWithProgids" "PaleMoonHTML" ""
|
||||||
!macroend
|
!macroend
|
||||||
!define AddAssociationIfNoneExist "!insertmacro AddAssociationIfNoneExist"
|
!define AddAssociationIfNoneExist "!insertmacro AddAssociationIfNoneExist"
|
||||||
|
|
||||||
|
; Adds the protocol and file handler registry entries for making PaleMoon the
|
||||||
; Adds the protocol and file handler registry entries for making Pale Moon the
|
|
||||||
; default handler (uses SHCTX).
|
; default handler (uses SHCTX).
|
||||||
!macro SetHandlers
|
!macro SetHandlers
|
||||||
${GetLongPath} "$INSTDIR\${FileMainEXE}" $8
|
${GetLongPath} "$INSTDIR\${FileMainEXE}" $8
|
||||||
|
|
@ -318,10 +367,11 @@
|
||||||
WriteRegStr SHCTX "$0\.xhtml" "" "PaleMoonHTML"
|
WriteRegStr SHCTX "$0\.xhtml" "" "PaleMoonHTML"
|
||||||
${EndIf}
|
${EndIf}
|
||||||
|
|
||||||
;Register file associations, but only if they don't exist yet.
|
${AddAssociationIfNoneExist} ".pdf"
|
||||||
${AddAssociationIfNoneExist} ".oga"
|
${AddAssociationIfNoneExist} ".oga"
|
||||||
${AddAssociationIfNoneExist} ".ogg"
|
${AddAssociationIfNoneExist} ".ogg"
|
||||||
${AddAssociationIfNoneExist} ".ogv"
|
${AddAssociationIfNoneExist} ".ogv"
|
||||||
|
${AddAssociationIfNoneExist} ".pdf"
|
||||||
${AddAssociationIfNoneExist} ".webm"
|
${AddAssociationIfNoneExist} ".webm"
|
||||||
|
|
||||||
; An empty string is used for the 5th param because PaleMoonHTML is not a
|
; An empty string is used for the 5th param because PaleMoonHTML is not a
|
||||||
|
|
@ -331,7 +381,6 @@
|
||||||
|
|
||||||
${AddDisabledDDEHandlerValues} "PaleMoonURL" "$2" "$8,1" "${AppRegName} URL" \
|
${AddDisabledDDEHandlerValues} "PaleMoonURL" "$2" "$8,1" "${AppRegName} URL" \
|
||||||
"true"
|
"true"
|
||||||
|
|
||||||
; An empty string is used for the 4th & 5th params because the following
|
; An empty string is used for the 4th & 5th params because the following
|
||||||
; protocol handlers already have a display name and the additional keys
|
; protocol handlers already have a display name and the additional keys
|
||||||
; required for a protocol handler.
|
; required for a protocol handler.
|
||||||
|
|
@ -341,7 +390,7 @@
|
||||||
!macroend
|
!macroend
|
||||||
!define SetHandlers "!insertmacro SetHandlers"
|
!define SetHandlers "!insertmacro SetHandlers"
|
||||||
|
|
||||||
; Adds the HKLM\Software\Clients\StartMenuInternet\{EXE} registry
|
; Adds the HKLM\Software\Clients\StartMenuInternet\FIREFOX.EXE registry
|
||||||
; entries (does not use SHCTX).
|
; entries (does not use SHCTX).
|
||||||
;
|
;
|
||||||
; The values for StartMenuInternet are only valid under HKLM and there can only
|
; The values for StartMenuInternet are only valid under HKLM and there can only
|
||||||
|
|
@ -420,7 +469,7 @@
|
||||||
; The IconHandler reference for PaleMoonHTML can end up in an inconsistent state
|
; The IconHandler reference for PaleMoonHTML can end up in an inconsistent state
|
||||||
; due to changes not being detected by the IconHandler for side by side
|
; due to changes not being detected by the IconHandler for side by side
|
||||||
; installs (see bug 268512). The symptoms can be either an incorrect icon or no
|
; installs (see bug 268512). The symptoms can be either an incorrect icon or no
|
||||||
; icon being displayed for files associated with Pale Moon (does not use SHCTX).
|
; icon being displayed for files associated with PaleMoon (does not use SHCTX).
|
||||||
!macro FixShellIconHandler RegKey
|
!macro FixShellIconHandler RegKey
|
||||||
ClearErrors
|
ClearErrors
|
||||||
ReadRegStr $1 ${RegKey} "Software\Classes\PaleMoonHTML\ShellEx\IconHandler" ""
|
ReadRegStr $1 ${RegKey} "Software\Classes\PaleMoonHTML\ShellEx\IconHandler" ""
|
||||||
|
|
@ -436,37 +485,67 @@
|
||||||
|
|
||||||
; Add Software\Mozilla\ registry entries (uses SHCTX).
|
; Add Software\Mozilla\ registry entries (uses SHCTX).
|
||||||
!macro SetAppKeys
|
!macro SetAppKeys
|
||||||
|
; Check if this is an ESR release and if so add registry values so it is
|
||||||
|
; possible to determine that this is an ESR install (bug 726781).
|
||||||
|
ClearErrors
|
||||||
|
${WordFind} "${UpdateChannel}" "esr" "E#" $3
|
||||||
|
${If} ${Errors}
|
||||||
|
StrCpy $3 ""
|
||||||
|
${Else}
|
||||||
|
StrCpy $3 " ESR"
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
${GetLongPath} "$INSTDIR" $8
|
${GetLongPath} "$INSTDIR" $8
|
||||||
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}\${AppVersion} (${AB_CD})\Main"
|
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}\${AppVersion}$3 (${ARCH} ${AB_CD})\Main"
|
||||||
${WriteRegStr2} $TmpVal "$0" "Install Directory" "$8" 0
|
${WriteRegStr2} $TmpVal "$0" "Install Directory" "$8" 0
|
||||||
${WriteRegStr2} $TmpVal "$0" "PathToExe" "$8\${FileMainEXE}" 0
|
${WriteRegStr2} $TmpVal "$0" "PathToExe" "$8\${FileMainEXE}" 0
|
||||||
|
|
||||||
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}\${AppVersion} (${AB_CD})\Uninstall"
|
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}\${AppVersion}$3 (${ARCH} ${AB_CD})\Uninstall"
|
||||||
${WriteRegStr2} $TmpVal "$0" "Description" "${BrandFullNameInternal} (${ARCH} ${AB_CD})" 0
|
${WriteRegStr2} $TmpVal "$0" "Description" "${BrandFullNameInternal} ${AppVersion}$3 (${ARCH} ${AB_CD})" 0
|
||||||
|
|
||||||
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}\${AppVersion} (${AB_CD})"
|
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}\${AppVersion}$3 (${ARCH} ${AB_CD})"
|
||||||
${WriteRegStr2} $TmpVal "$0" "" "${AppVersion} (${AB_CD})" 0
|
${WriteRegStr2} $TmpVal "$0" "" "${AppVersion}$3 (${ARCH} ${AB_CD})" 0
|
||||||
|
${If} "$3" == ""
|
||||||
|
DeleteRegValue SHCTX "$0" "ESR"
|
||||||
|
${Else}
|
||||||
|
${WriteRegDWORD2} $TmpVal "$0" "ESR" 1 0
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal} ${AppVersion}\bin"
|
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal} ${AppVersion}$3\bin"
|
||||||
${WriteRegStr2} $TmpVal "$0" "PathToExe" "$8\${FileMainEXE}" 0
|
${WriteRegStr2} $TmpVal "$0" "PathToExe" "$8\${FileMainEXE}" 0
|
||||||
|
|
||||||
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal} ${AppVersion}\extensions"
|
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal} ${AppVersion}$3\extensions"
|
||||||
${WriteRegStr2} $TmpVal "$0" "Components" "$8\components" 0
|
${WriteRegStr2} $TmpVal "$0" "Components" "$8\components" 0
|
||||||
${WriteRegStr2} $TmpVal "$0" "Plugins" "$8\plugins" 0
|
${WriteRegStr2} $TmpVal "$0" "Plugins" "$8\plugins" 0
|
||||||
|
|
||||||
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal} ${AppVersion}"
|
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal} ${AppVersion}$3"
|
||||||
${WriteRegStr2} $TmpVal "$0" "GoannaVer" "${GREVersion}" 0
|
${WriteRegStr2} $TmpVal "$0" "GeckoVer" "${GREVersion}" 0
|
||||||
|
${If} "$3" == ""
|
||||||
|
DeleteRegValue SHCTX "$0" "ESR"
|
||||||
|
${Else}
|
||||||
|
${WriteRegDWORD2} $TmpVal "$0" "ESR" 1 0
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}"
|
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}$3"
|
||||||
${WriteRegStr2} $TmpVal "$0" "" "${GREVersion}" 0
|
${WriteRegStr2} $TmpVal "$0" "" "${GREVersion}" 0
|
||||||
${WriteRegStr2} $TmpVal "$0" "CurrentVersion" "${AppVersion} (${AB_CD})" 0
|
${WriteRegStr2} $TmpVal "$0" "CurrentVersion" "${AppVersion}$3 (${ARCH} ${AB_CD})" 0
|
||||||
!macroend
|
!macroend
|
||||||
!define SetAppKeys "!insertmacro SetAppKeys"
|
!define SetAppKeys "!insertmacro SetAppKeys"
|
||||||
|
|
||||||
; Add uninstall registry entries. This macro tests for write access to determine
|
; Add uninstall registry entries. This macro tests for write access to determine
|
||||||
; if the uninstall keys should be added to HKLM or HKCU.
|
; if the uninstall keys should be added to HKLM or HKCU.
|
||||||
!macro SetUninstallKeys
|
!macro SetUninstallKeys
|
||||||
StrCpy $0 "Software\Microsoft\Windows\CurrentVersion\Uninstall\${BrandFullNameInternal} (${ARCH} ${AB_CD})"
|
; Check if this is an ESR release and if so add registry values so it is
|
||||||
|
; possible to determine that this is an ESR install (bug 726781).
|
||||||
|
ClearErrors
|
||||||
|
${WordFind} "${UpdateChannel}" "esr" "E#" $3
|
||||||
|
${If} ${Errors}
|
||||||
|
StrCpy $3 ""
|
||||||
|
${Else}
|
||||||
|
StrCpy $3 " ESR"
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
|
StrCpy $0 "Software\Microsoft\Windows\CurrentVersion\Uninstall\${BrandFullNameInternal} ${AppVersion}$3 (${ARCH} ${AB_CD})"
|
||||||
|
|
||||||
StrCpy $2 ""
|
StrCpy $2 ""
|
||||||
ClearErrors
|
ClearErrors
|
||||||
|
|
@ -493,15 +572,24 @@
|
||||||
${GetLongPath} "$INSTDIR" $8
|
${GetLongPath} "$INSTDIR" $8
|
||||||
|
|
||||||
; Write the uninstall registry keys
|
; Write the uninstall registry keys
|
||||||
${WriteRegStr2} $1 "$0" "Comments" "${BrandFullNameInternal} (${ARCH} ${AB_CD})" 0
|
${WriteRegStr2} $1 "$0" "Comments" "${BrandFullNameInternal} ${AppVersion}$3 (${ARCH} ${AB_CD})" 0
|
||||||
${WriteRegStr2} $1 "$0" "DisplayIcon" "$8\${FileMainEXE},0" 0
|
${WriteRegStr2} $1 "$0" "DisplayIcon" "$8\${FileMainEXE},0" 0
|
||||||
${WriteRegStr2} $1 "$0" "DisplayName" "${BrandFullNameInternal} (${ARCH} ${AB_CD})" 0
|
${WriteRegStr2} $1 "$0" "DisplayName" "${BrandFullNameInternal} ${AppVersion}$3 (${ARCH} ${AB_CD})" 0
|
||||||
${WriteRegStr2} $1 "$0" "DisplayVersion" "${AppVersion}" 0
|
${WriteRegStr2} $1 "$0" "DisplayVersion" "${AppVersion}" 0
|
||||||
|
${WriteRegStr2} $1 "$0" "HelpLink" "${HelpLink}" 0
|
||||||
${WriteRegStr2} $1 "$0" "InstallLocation" "$8" 0
|
${WriteRegStr2} $1 "$0" "InstallLocation" "$8" 0
|
||||||
${WriteRegStr2} $1 "$0" "Publisher" "Moonchild Productions" 0
|
${WriteRegStr2} $1 "$0" "Publisher" "Moonchild Productions" 0
|
||||||
${WriteRegStr2} $1 "$0" "UninstallString" "$\"$8\uninstall\helper.exe$\"" 0
|
${WriteRegStr2} $1 "$0" "UninstallString" "$\"$8\uninstall\helper.exe$\"" 0
|
||||||
${WriteRegStr2} $1 "$0" "URLInfoAbout" "${URLInfoAbout}" 0
|
DeleteRegValue SHCTX "$0" "URLInfoAbout"
|
||||||
|
; Don't add URLUpdateInfo which is the release notes url except for the release
|
||||||
|
; and esr channels since nightly, aurora, and beta do not have release notes.
|
||||||
|
; Note: URLUpdateInfo is only defined in the official branding.nsi.
|
||||||
|
!ifdef URLUpdateInfo
|
||||||
|
!ifndef BETA_UPDATE_CHANNEL
|
||||||
${WriteRegStr2} $1 "$0" "URLUpdateInfo" "${URLUpdateInfo}" 0
|
${WriteRegStr2} $1 "$0" "URLUpdateInfo" "${URLUpdateInfo}" 0
|
||||||
|
!endif
|
||||||
|
!endif
|
||||||
|
${WriteRegStr2} $1 "$0" "URLInfoAbout" "${URLInfoAbout}" 0
|
||||||
${WriteRegDWORD2} $1 "$0" "NoModify" 1 0
|
${WriteRegDWORD2} $1 "$0" "NoModify" 1 0
|
||||||
${WriteRegDWORD2} $1 "$0" "NoRepair" 1 0
|
${WriteRegDWORD2} $1 "$0" "NoRepair" 1 0
|
||||||
|
|
||||||
|
|
@ -518,7 +606,7 @@
|
||||||
!define SetUninstallKeys "!insertmacro SetUninstallKeys"
|
!define SetUninstallKeys "!insertmacro SetUninstallKeys"
|
||||||
|
|
||||||
; Due to a bug when associating some file handlers, only SHCTX was checked for
|
; Due to a bug when associating some file handlers, only SHCTX was checked for
|
||||||
; some file types such as ".webm". SHCTX is set to HKCU or HKLM depending on
|
; some file types such as ".pdf". SHCTX is set to HKCU or HKLM depending on
|
||||||
; whether the installer has write access to HKLM. The bug would happen when
|
; whether the installer has write access to HKLM. The bug would happen when
|
||||||
; HCKU was checked and didn't exist since programs aren't required to set the
|
; HCKU was checked and didn't exist since programs aren't required to set the
|
||||||
; HKCU Software\Classes keys when associating handlers. The fix uses the merged
|
; HKCU Software\Classes keys when associating handlers. The fix uses the merged
|
||||||
|
|
@ -534,7 +622,7 @@
|
||||||
ReadRegStr $2 HKCR "${FILE_TYPE}\PersistentHandler" ""
|
ReadRegStr $2 HKCR "${FILE_TYPE}\PersistentHandler" ""
|
||||||
${If} "$2" != ""
|
${If} "$2" != ""
|
||||||
; Since there is a persistent handler remove PaleMoonHTML as the default
|
; Since there is a persistent handler remove PaleMoonHTML as the default
|
||||||
; value from both HKCU and HKLM if it is set to PaleMoonHTML.
|
; value from both HKCU and HKLM if it set to PaleMoonHTML.
|
||||||
${If} "$0" == "PaleMoonHTML"
|
${If} "$0" == "PaleMoonHTML"
|
||||||
DeleteRegValue HKCU "Software\Classes\${FILE_TYPE}" ""
|
DeleteRegValue HKCU "Software\Classes\${FILE_TYPE}" ""
|
||||||
${EndIf}
|
${EndIf}
|
||||||
|
|
@ -542,7 +630,7 @@
|
||||||
DeleteRegValue HKLM "Software\Classes\${FILE_TYPE}" ""
|
DeleteRegValue HKLM "Software\Classes\${FILE_TYPE}" ""
|
||||||
${EndIf}
|
${EndIf}
|
||||||
${ElseIf} "$0" == "PaleMoonHTML"
|
${ElseIf} "$0" == "PaleMoonHTML"
|
||||||
; Since KHCU is set to PaleMoonHTML, remove it as the default value
|
; Since KHCU is set to PaleMoonHTML remove PaleMoonHTML as the default value
|
||||||
; from HKCU if HKLM is set to a value other than an empty string.
|
; from HKCU if HKLM is set to a value other than an empty string.
|
||||||
${If} "$1" != ""
|
${If} "$1" != ""
|
||||||
DeleteRegValue HKCU "Software\Classes\${FILE_TYPE}" ""
|
DeleteRegValue HKCU "Software\Classes\${FILE_TYPE}" ""
|
||||||
|
|
@ -630,21 +718,68 @@
|
||||||
!macroend
|
!macroend
|
||||||
!define UpdateProtocolHandlers "!insertmacro UpdateProtocolHandlers"
|
!define UpdateProtocolHandlers "!insertmacro UpdateProtocolHandlers"
|
||||||
|
|
||||||
|
!ifdef MOZ_MAINTENANCE_SERVICE
|
||||||
|
; Adds maintenance service certificate keys for the install dir.
|
||||||
|
; For the cert to work, it must also be signed by a trusted cert for the user.
|
||||||
|
!macro AddMaintCertKeys
|
||||||
|
Push $R0
|
||||||
|
; Allow main Mozilla cert information for updates
|
||||||
|
; This call will push the needed key on the stack
|
||||||
|
ServicesHelper::PathToUniqueRegistryPath "$INSTDIR"
|
||||||
|
Pop $R0
|
||||||
|
${If} $R0 != ""
|
||||||
|
; More than one certificate can be specified in a different subfolder
|
||||||
|
; for example: $R0\1, but each individual binary can be signed
|
||||||
|
; with at most one certificate. A fallback certificate can only be used
|
||||||
|
; if the binary is replaced with a different certificate.
|
||||||
|
; We always use the 64bit registry for certs.
|
||||||
|
${If} ${RunningX64}
|
||||||
|
SetRegView 64
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
|
; PrefetchProcessName was originally used to experiment with deleting
|
||||||
|
; Windows prefetch as a speed optimization. It is no longer used though.
|
||||||
|
DeleteRegValue HKLM "$R0" "prefetchProcessName"
|
||||||
|
|
||||||
|
; Setting the Attempted value will ensure that a new Maintenance Service
|
||||||
|
; install will never be attempted again after this from updates. The value
|
||||||
|
; is used only to see if updates should attempt new service installs.
|
||||||
|
WriteRegDWORD HKLM "Software\Mozilla\MaintenanceService" "Attempted" 1
|
||||||
|
|
||||||
|
; These values associate the allowed certificates for the current
|
||||||
|
; installation.
|
||||||
|
WriteRegStr HKLM "$R0\0" "name" "${CERTIFICATE_NAME}"
|
||||||
|
WriteRegStr HKLM "$R0\0" "issuer" "${CERTIFICATE_ISSUER}"
|
||||||
|
; These values associate the allowed certificates for the previous
|
||||||
|
; installation, so that we can update from it cleanly using the
|
||||||
|
; old updater.exe (which will still have this signature).
|
||||||
|
WriteRegStr HKLM "$R0\1" "name" "${CERTIFICATE_NAME_PREVIOUS}"
|
||||||
|
WriteRegStr HKLM "$R0\1" "issuer" "${CERTIFICATE_ISSUER_PREVIOUS}"
|
||||||
|
${If} ${RunningX64}
|
||||||
|
SetRegView lastused
|
||||||
|
${EndIf}
|
||||||
|
ClearErrors
|
||||||
|
${EndIf}
|
||||||
|
; Restore the previously used value back
|
||||||
|
Pop $R0
|
||||||
|
!macroend
|
||||||
|
!define AddMaintCertKeys "!insertmacro AddMaintCertKeys"
|
||||||
|
!endif
|
||||||
|
|
||||||
; Removes various registry entries for reasons noted below (does not use SHCTX).
|
; Removes various registry entries for reasons noted below (does not use SHCTX).
|
||||||
!macro RemoveDeprecatedKeys
|
!macro RemoveDeprecatedKeys
|
||||||
StrCpy $0 "SOFTWARE\Classes"
|
StrCpy $0 "SOFTWARE\Classes"
|
||||||
; Remove support for launching gopher urls from the shell during install or
|
; Remove support for launching gopher urls from the shell during install or
|
||||||
; update if the DefaultIcon is from palemoon.exe.
|
; update if the DefaultIcon is from firefox.exe.
|
||||||
${RegCleanAppHandler} "gopher"
|
${RegCleanAppHandler} "gopher"
|
||||||
|
|
||||||
; Remove support for launching chrome urls from the shell during install or
|
; Remove support for launching chrome urls from the shell during install or
|
||||||
; update if the DefaultIcon is from palemoon.exe (Bug 301073).
|
; update if the DefaultIcon is from firefox.exe (Bug 301073).
|
||||||
${RegCleanAppHandler} "chrome"
|
${RegCleanAppHandler} "chrome"
|
||||||
|
|
||||||
; Remove the app compatibility registry key
|
; Remove protocol handler registry keys added by the MS shim
|
||||||
StrCpy $0 "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"
|
DeleteRegKey HKLM "Software\Classes\PaleMoon.URL"
|
||||||
DeleteRegValue HKLM "$0" "$INSTDIR\${FileMainEXE}"
|
DeleteRegKey HKCU "Software\Classes\PaleMoon.URL"
|
||||||
DeleteRegValue HKCU "$0" "$INSTDIR\${FileMainEXE}"
|
|
||||||
|
|
||||||
; Delete gopher from Capabilities\URLAssociations if it is present.
|
; Delete gopher from Capabilities\URLAssociations if it is present.
|
||||||
${StrFilter} "${FileMainEXE}" "+" "" "" $R9
|
${StrFilter} "${FileMainEXE}" "+" "" "" $R9
|
||||||
|
|
@ -671,148 +806,22 @@
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\talkback@mozilla.org"
|
RmDir /r /REBOOTOK "$INSTDIR\extensions\talkback@mozilla.org"
|
||||||
${EndIf}
|
${EndIf}
|
||||||
|
|
||||||
; Remove the Java Console extension (bug 597235)
|
; Remove the Java Console extension (bug 1165156)
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0012-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0012-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0013-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0013-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0014-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0014-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0015-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0015-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0016-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0016-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0017-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0017-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0018-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0018-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0019-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0019-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0020-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0020-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0021-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0021-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0022-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0015-0000-0022-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0000-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0000-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0001-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0001-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0002-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0002-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0003-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0003-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0004-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0004-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0005-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0005-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0006-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0006-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0007-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0007-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0010-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0010-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0011-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0011-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0012-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0012-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0013-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0013-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0014-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0014-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0015-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0015-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0016-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0016-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0017-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0017-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0018-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0018-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0019-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0019-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0020-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0020-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0021-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0021-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0022-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0022-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0023-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0023-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0024-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0024-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0025-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0025-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0026-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0026-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0027-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0027-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0028-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0028-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0029-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0029-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0030-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0030-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0031-ABCDEFFEDCBA}"
|
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0031-ABCDEFFEDCBA}"
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0031-ABCDEFFEDCBA}"
|
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0031-ABCDEFFEDCBA}"
|
||||||
${EndIf}
|
${EndIf}
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0032-ABCDEFFEDCBA}"
|
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0034-ABCDEFFEDCBA}"
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0032-ABCDEFFEDCBA}"
|
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0034-ABCDEFFEDCBA}"
|
||||||
|
${EndIf}
|
||||||
|
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0039-ABCDEFFEDCBA}"
|
||||||
|
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0039-ABCDEFFEDCBA}"
|
||||||
|
${EndIf}
|
||||||
|
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0045-ABCDEFFEDCBA}"
|
||||||
|
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0045-ABCDEFFEDCBA}"
|
||||||
${EndIf}
|
${EndIf}
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0017-0000-0000-ABCDEFFEDCBA}"
|
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0017-0000-0000-ABCDEFFEDCBA}"
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0017-0000-0000-ABCDEFFEDCBA}"
|
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0017-0000-0000-ABCDEFFEDCBA}"
|
||||||
${EndIf}
|
${EndIf}
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0017-0000-0001-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0017-0000-0001-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0017-0000-0002-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0017-0000-0002-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0017-0000-0003-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0017-0000-0003-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0017-0000-0004-ABCDEFFEDCBA}"
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0017-0000-0004-ABCDEFFEDCBA}"
|
|
||||||
${EndIf}
|
|
||||||
!macroend
|
!macroend
|
||||||
!define RemoveDeprecatedFiles "!insertmacro RemoveDeprecatedFiles"
|
!define RemoveDeprecatedFiles "!insertmacro RemoveDeprecatedFiles"
|
||||||
|
|
||||||
|
|
@ -876,15 +885,15 @@
|
||||||
${If} $5 == ""
|
${If} $5 == ""
|
||||||
${Break}
|
${Break}
|
||||||
${EndIf}
|
${EndIf}
|
||||||
${If} $5 == 233 ; ansi ??
|
${If} $5 == 233 ; ansi é
|
||||||
StrCpy $0 "1"
|
StrCpy $0 "1"
|
||||||
FileWriteByte $4 195
|
FileWriteByte $4 195
|
||||||
FileWriteByte $4 169
|
FileWriteByte $4 169
|
||||||
${ElseIf} $5 == 241 ; ansi ??
|
${ElseIf} $5 == 241 ; ansi ñ
|
||||||
StrCpy $0 "1"
|
StrCpy $0 "1"
|
||||||
FileWriteByte $4 195
|
FileWriteByte $4 195
|
||||||
FileWriteByte $4 177
|
FileWriteByte $4 177
|
||||||
${ElseIf} $5 == 252 ; ansi ??
|
${ElseIf} $5 == 252 ; ansi ü
|
||||||
StrCpy $0 "1"
|
StrCpy $0 "1"
|
||||||
FileWriteByte $4 195
|
FileWriteByte $4 195
|
||||||
FileWriteByte $4 188
|
FileWriteByte $4 188
|
||||||
|
|
@ -926,17 +935,24 @@
|
||||||
ClearErrors
|
ClearErrors
|
||||||
WriteIniStr "$0" "TASKBAR" "Migrated" "true"
|
WriteIniStr "$0" "TASKBAR" "Migrated" "true"
|
||||||
${If} ${AtLeastWin7}
|
${If} ${AtLeastWin7}
|
||||||
; No need to check the default on Win8 and later
|
; If we didn't run the stub installer, AddTaskbarSC will be empty.
|
||||||
${If} ${AtMostWin2008R2}
|
; We determine whether to pin based on whether we're the default
|
||||||
; Check if Pale Moon is the http handler for this user
|
; browser, or if we're on win8 or later, we always pin.
|
||||||
SetShellVarContext current ; Set SHCTX to the current user
|
${If} $AddTaskbarSC == ""
|
||||||
${IsHandlerForInstallDir} "http" $R9
|
; No need to check the default on Win8 and later
|
||||||
${If} $TmpVal == "HKLM"
|
${If} ${AtMostWin2008R2}
|
||||||
SetShellVarContext all ; Set SHCTX to all users
|
; Check if the PaleMoon is the http handler for this user
|
||||||
|
SetShellVarContext current ; Set SHCTX to the current user
|
||||||
|
${IsHandlerForInstallDir} "http" $R9
|
||||||
|
${If} $TmpVal == "HKLM"
|
||||||
|
SetShellVarContext all ; Set SHCTX to all users
|
||||||
|
${EndIf}
|
||||||
${EndIf}
|
${EndIf}
|
||||||
${EndIf}
|
${If} "$R9" == "true"
|
||||||
${If} "$R9" == "true"
|
${OrIf} ${AtLeastWin8}
|
||||||
${OrIf} ${AtLeastWin8}
|
${PinToTaskBar}
|
||||||
|
${EndIf}
|
||||||
|
${ElseIf} $AddTaskbarSC == "1"
|
||||||
${PinToTaskBar}
|
${PinToTaskBar}
|
||||||
${EndIf}
|
${EndIf}
|
||||||
${EndIf}
|
${EndIf}
|
||||||
|
|
@ -1152,17 +1168,86 @@
|
||||||
; returns after the first check.
|
; returns after the first check.
|
||||||
Push "end"
|
Push "end"
|
||||||
Push "AccessibleMarshal.dll"
|
Push "AccessibleMarshal.dll"
|
||||||
|
Push "IA2Marshal.dll"
|
||||||
Push "freebl3.dll"
|
Push "freebl3.dll"
|
||||||
Push "nssckbi.dll"
|
Push "nssckbi.dll"
|
||||||
Push "nspr4.dll"
|
Push "nspr4.dll"
|
||||||
Push "nssdbm3.dll"
|
Push "nssdbm3.dll"
|
||||||
Push "mozsqlite3.dll"
|
Push "mozsqlite3.dll"
|
||||||
Push "xpcom.dll"
|
Push "xpcom.dll"
|
||||||
|
Push "crashreporter.exe"
|
||||||
|
Push "minidump-analyzer.exe"
|
||||||
Push "updater.exe"
|
Push "updater.exe"
|
||||||
Push "${FileMainEXE}"
|
Push "${FileMainEXE}"
|
||||||
!macroend
|
!macroend
|
||||||
!define PushFilesToCheck "!insertmacro PushFilesToCheck"
|
!define PushFilesToCheck "!insertmacro PushFilesToCheck"
|
||||||
|
|
||||||
|
|
||||||
|
; Pushes the string "true" to the top of the stack if the Firewall service is
|
||||||
|
; running and pushes the string "false" to the top of the stack if it isn't.
|
||||||
|
!define SC_MANAGER_ALL_ACCESS 0x3F
|
||||||
|
!define SERVICE_QUERY_CONFIG 0x0001
|
||||||
|
!define SERVICE_QUERY_STATUS 0x0004
|
||||||
|
!define SERVICE_RUNNING 0x4
|
||||||
|
|
||||||
|
!macro IsFirewallSvcRunning
|
||||||
|
Push $R9
|
||||||
|
Push $R8
|
||||||
|
Push $R7
|
||||||
|
Push $R6
|
||||||
|
Push "false"
|
||||||
|
|
||||||
|
System::Call 'advapi32::OpenSCManagerW(n, n, i ${SC_MANAGER_ALL_ACCESS}) i.R6'
|
||||||
|
${If} $R6 != 0
|
||||||
|
; MpsSvc is the Firewall service on Windows Vista and above.
|
||||||
|
; When opening the service with SERVICE_QUERY_CONFIG the return value will
|
||||||
|
; be 0 if the service is not installed.
|
||||||
|
System::Call 'advapi32::OpenServiceW(i R6, t "MpsSvc", i ${SERVICE_QUERY_CONFIG}) i.R7'
|
||||||
|
${If} $R7 != 0
|
||||||
|
System::Call 'advapi32::CloseServiceHandle(i R7) n'
|
||||||
|
; Open the service with SERVICE_QUERY_CONFIG so its status can be queried.
|
||||||
|
System::Call 'advapi32::OpenServiceW(i R6, t "MpsSvc", i ${SERVICE_QUERY_STATUS}) i.R7'
|
||||||
|
${Else}
|
||||||
|
; SharedAccess is the Firewall service on Windows XP.
|
||||||
|
; When opening the service with SERVICE_QUERY_CONFIG the return value will
|
||||||
|
; be 0 if the service is not installed.
|
||||||
|
System::Call 'advapi32::OpenServiceW(i R6, t "SharedAccess", i ${SERVICE_QUERY_CONFIG}) i.R7'
|
||||||
|
${If} $R7 != 0
|
||||||
|
System::Call 'advapi32::CloseServiceHandle(i R7) n'
|
||||||
|
; Open the service with SERVICE_QUERY_CONFIG so its status can be
|
||||||
|
; queried.
|
||||||
|
System::Call 'advapi32::OpenServiceW(i R6, t "SharedAccess", i ${SERVICE_QUERY_STATUS}) i.R7'
|
||||||
|
${EndIf}
|
||||||
|
${EndIf}
|
||||||
|
; Did the calls to OpenServiceW succeed?
|
||||||
|
${If} $R7 != 0
|
||||||
|
System::Call '*(i,i,i,i,i,i,i) i.R9'
|
||||||
|
; Query the current status of the service.
|
||||||
|
System::Call 'advapi32::QueryServiceStatus(i R7, i $R9) i'
|
||||||
|
System::Call '*$R9(i, i.R8)'
|
||||||
|
System::Free $R9
|
||||||
|
System::Call 'advapi32::CloseServiceHandle(i R7) n'
|
||||||
|
IntFmt $R8 "0x%X" $R8
|
||||||
|
${If} $R8 == ${SERVICE_RUNNING}
|
||||||
|
Pop $R9
|
||||||
|
Push "true"
|
||||||
|
${EndIf}
|
||||||
|
${EndIf}
|
||||||
|
System::Call 'advapi32::CloseServiceHandle(i R6) n'
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
|
Exch 1
|
||||||
|
Pop $R6
|
||||||
|
Exch 1
|
||||||
|
Pop $R7
|
||||||
|
Exch 1
|
||||||
|
Pop $R8
|
||||||
|
Exch 1
|
||||||
|
Pop $R9
|
||||||
|
!macroend
|
||||||
|
!define IsFirewallSvcRunning "!insertmacro IsFirewallSvcRunning"
|
||||||
|
!define un.IsFirewallSvcRunning "!insertmacro IsFirewallSvcRunning"
|
||||||
|
|
||||||
; Sets this installation as the default browser by setting the registry keys
|
; Sets this installation as the default browser by setting the registry keys
|
||||||
; under HKEY_CURRENT_USER via registry calls and using the AppAssocReg NSIS
|
; under HKEY_CURRENT_USER via registry calls and using the AppAssocReg NSIS
|
||||||
; plugin for Vista and above. This is a function instead of a macro so it is
|
; plugin for Vista and above. This is a function instead of a macro so it is
|
||||||
|
|
@ -1214,7 +1299,7 @@ Function SetAsDefaultAppUserHKCU
|
||||||
${EndUnless}
|
${EndUnless}
|
||||||
${EndIf}
|
${EndIf}
|
||||||
${RemoveDeprecatedKeys}
|
${RemoveDeprecatedKeys}
|
||||||
${PinToTaskBar}
|
${MigrateTaskBarShortcut}
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
||||||
; Helper for updating the shortcut application model IDs.
|
; Helper for updating the shortcut application model IDs.
|
||||||
|
|
@ -1225,6 +1310,15 @@ Function FixShortcutAppModelIDs
|
||||||
${EndIf}
|
${EndIf}
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
||||||
|
; Helper for adding Firewall exceptions during install and after app update.
|
||||||
|
Function AddFirewallEntries
|
||||||
|
${IsFirewallSvcRunning}
|
||||||
|
Pop $0
|
||||||
|
${If} "$0" == "true"
|
||||||
|
liteFirewallW::AddRule "$INSTDIR\${FileMainEXE}" "${BrandShortName} ($INSTDIR)"
|
||||||
|
${EndIf}
|
||||||
|
FunctionEnd
|
||||||
|
|
||||||
; The !ifdef NO_LOG prevents warnings when compiling the installer.nsi due to
|
; The !ifdef NO_LOG prevents warnings when compiling the installer.nsi due to
|
||||||
; this function only being used by the uninstaller.nsi.
|
; this function only being used by the uninstaller.nsi.
|
||||||
!ifdef NO_LOG
|
!ifdef NO_LOG
|
||||||
|
|
@ -1311,4 +1405,4 @@ Function SetAsDefaultAppUser
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
!define SetAsDefaultAppUser "Call SetAsDefaultAppUser"
|
!define SetAsDefaultAppUser "Call SetAsDefaultAppUser"
|
||||||
|
|
||||||
!endif
|
!endif ; NO_LOG
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
# Required Plugins:
|
# Required Plugins:
|
||||||
# AppAssocReg http://nsis.sourceforge.net/Application_Association_Registration_plug-in
|
# AppAssocReg http://nsis.sourceforge.net/Application_Association_Registration_plug-in
|
||||||
# CityHash http://mxr.mozilla.org/mozilla-central/source/other-licenses/nsis/Contrib/CityHash
|
# CityHash http://dxr.mozilla.org/mozilla-central/source/other-licenses/nsis/Contrib/CityHash
|
||||||
# ShellLink http://nsis.sourceforge.net/ShellLink_plug-in
|
# ShellLink http://nsis.sourceforge.net/ShellLink_plug-in
|
||||||
# UAC http://nsis.sourceforge.net/UAC_plug-in
|
# UAC http://nsis.sourceforge.net/UAC_plug-in
|
||||||
|
|
||||||
|
|
@ -19,6 +19,14 @@ CRCCheck on
|
||||||
|
|
||||||
RequestExecutionLevel user
|
RequestExecutionLevel user
|
||||||
|
|
||||||
|
; The commands inside this ifdef require NSIS 3.0a2 or greater so the ifdef can
|
||||||
|
; be removed after we require NSIS 3.0a2 or greater.
|
||||||
|
!ifdef NSIS_PACKEDVERSION
|
||||||
|
Unicode true
|
||||||
|
ManifestSupportedOS all
|
||||||
|
ManifestDPIAware true
|
||||||
|
!endif
|
||||||
|
|
||||||
!addplugindir ./
|
!addplugindir ./
|
||||||
|
|
||||||
; On Vista and above attempt to elevate Standard Users in addition to users that
|
; On Vista and above attempt to elevate Standard Users in addition to users that
|
||||||
|
|
@ -32,6 +40,7 @@ RequestExecutionLevel user
|
||||||
"Software\Microsoft\Windows\CurrentVersion\Uninstall\MozillaMaintenanceService"
|
"Software\Microsoft\Windows\CurrentVersion\Uninstall\MozillaMaintenanceService"
|
||||||
|
|
||||||
Var TmpVal
|
Var TmpVal
|
||||||
|
Var MaintCertKey
|
||||||
|
|
||||||
; Other included files may depend upon these includes!
|
; Other included files may depend upon these includes!
|
||||||
; The following includes are provided by NSIS.
|
; The following includes are provided by NSIS.
|
||||||
|
|
@ -67,6 +76,7 @@ VIAddVersionKey "OriginalFilename" "helper.exe"
|
||||||
!insertmacro InitHashAppModelId
|
!insertmacro InitHashAppModelId
|
||||||
!insertmacro IsHandlerForInstallDir
|
!insertmacro IsHandlerForInstallDir
|
||||||
!insertmacro IsPinnedToTaskBar
|
!insertmacro IsPinnedToTaskBar
|
||||||
|
!insertmacro IsUserAdmin
|
||||||
!insertmacro LogDesktopShortcut
|
!insertmacro LogDesktopShortcut
|
||||||
!insertmacro LogQuickLaunchShortcut
|
!insertmacro LogQuickLaunchShortcut
|
||||||
!insertmacro LogStartMenuShortcut
|
!insertmacro LogStartMenuShortcut
|
||||||
|
|
@ -85,19 +95,18 @@ VIAddVersionKey "OriginalFilename" "helper.exe"
|
||||||
!insertmacro un.CheckForFilesInUse
|
!insertmacro un.CheckForFilesInUse
|
||||||
!insertmacro un.CleanUpdateDirectories
|
!insertmacro un.CleanUpdateDirectories
|
||||||
!insertmacro un.CleanVirtualStore
|
!insertmacro un.CleanVirtualStore
|
||||||
!insertmacro un.DeleteRelativeProfiles
|
|
||||||
!insertmacro un.DeleteShortcuts
|
!insertmacro un.DeleteShortcuts
|
||||||
!insertmacro un.GetLongPath
|
!insertmacro un.GetLongPath
|
||||||
!insertmacro un.GetSecondInstallPath
|
!insertmacro un.GetSecondInstallPath
|
||||||
!insertmacro un.InitHashAppModelId
|
!insertmacro un.InitHashAppModelId
|
||||||
!insertmacro un.ManualCloseAppPrompt
|
!insertmacro un.ManualCloseAppPrompt
|
||||||
!insertmacro un.ParseUninstallLog
|
|
||||||
!insertmacro un.RegCleanAppHandler
|
!insertmacro un.RegCleanAppHandler
|
||||||
!insertmacro un.RegCleanFileHandler
|
!insertmacro un.RegCleanFileHandler
|
||||||
!insertmacro un.RegCleanMain
|
!insertmacro un.RegCleanMain
|
||||||
!insertmacro un.RegCleanUninstall
|
!insertmacro un.RegCleanUninstall
|
||||||
!insertmacro un.RegCleanProtocolHandler
|
!insertmacro un.RegCleanProtocolHandler
|
||||||
!insertmacro un.RemoveQuotesFromPath
|
!insertmacro un.RemoveQuotesFromPath
|
||||||
|
!insertmacro un.RemovePrecompleteEntries
|
||||||
!insertmacro un.SetAppLSPCategories
|
!insertmacro un.SetAppLSPCategories
|
||||||
!insertmacro un.SetBrandNameVars
|
!insertmacro un.SetBrandNameVars
|
||||||
|
|
||||||
|
|
@ -146,28 +155,68 @@ ShowUnInstDetails nevershow
|
||||||
!insertmacro MUI_UNPAGE_WELCOME
|
!insertmacro MUI_UNPAGE_WELCOME
|
||||||
|
|
||||||
; Custom Uninstall Confirm Page
|
; Custom Uninstall Confirm Page
|
||||||
UninstPage custom un.preConfirm un.leaveConfirm
|
UninstPage custom un.preConfirm
|
||||||
|
|
||||||
; Remove Files Page
|
; Remove Files Page
|
||||||
!insertmacro MUI_UNPAGE_INSTFILES
|
!insertmacro MUI_UNPAGE_INSTFILES
|
||||||
|
|
||||||
; Finish Page
|
; Finish Page
|
||||||
|
|
||||||
; 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
|
!insertmacro MUI_UNPAGE_FINISH
|
||||||
|
|
||||||
; Use the default dialog for IDD_VERIFY for a simple Banner
|
; Use the default dialog for IDD_VERIFY for a simple Banner
|
||||||
ChangeUI IDD_VERIFY "${NSISDIR}\Contrib\UIs\default.exe"
|
ChangeUI IDD_VERIFY "${NSISDIR}\Contrib\UIs\default.exe"
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Helper Functions
|
||||||
|
|
||||||
|
; This function is used to uninstall the maintenance service if the
|
||||||
|
; application currently being uninstalled is the last application to use the
|
||||||
|
; maintenance service.
|
||||||
|
Function un.UninstallServiceIfNotUsed
|
||||||
|
; $0 will store if a subkey exists
|
||||||
|
; $1 will store the first subkey if it exists or an empty string if it doesn't
|
||||||
|
; Backup the old values
|
||||||
|
Push $0
|
||||||
|
Push $1
|
||||||
|
|
||||||
|
; The maintenance service always uses the 64-bit registry on x64 systems
|
||||||
|
${If} ${RunningX64}
|
||||||
|
SetRegView 64
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
|
; Figure out the number of subkeys
|
||||||
|
StrCpy $0 0
|
||||||
|
${Do}
|
||||||
|
EnumRegKey $1 HKLM "Software\Mozilla\MaintenanceService" $0
|
||||||
|
${If} "$1" == ""
|
||||||
|
${ExitDo}
|
||||||
|
${EndIf}
|
||||||
|
IntOp $0 $0 + 1
|
||||||
|
${Loop}
|
||||||
|
|
||||||
|
; Restore back the registry view
|
||||||
|
${If} ${RunningX64}
|
||||||
|
SetRegView lastUsed
|
||||||
|
${EndIf}
|
||||||
|
${If} $0 == 0
|
||||||
|
; Get the path of the maintenance service uninstaller
|
||||||
|
ReadRegStr $1 HKLM ${MaintUninstallKey} "UninstallString"
|
||||||
|
|
||||||
|
; If the uninstall string does not exist, skip executing it
|
||||||
|
StrCmp $1 "" doneUninstall
|
||||||
|
|
||||||
|
; $1 is already a quoted string pointing to the install path
|
||||||
|
; so we're already protected against paths with spaces
|
||||||
|
nsExec::Exec "$1 /S"
|
||||||
|
doneUninstall:
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
|
; Restore the old value of $1 and $0
|
||||||
|
Pop $1
|
||||||
|
Pop $0
|
||||||
|
FunctionEnd
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Install Sections
|
# Install Sections
|
||||||
; Empty section required for the installer to compile as an uninstaller
|
; Empty section required for the installer to compile as an uninstaller
|
||||||
|
|
@ -194,15 +243,6 @@ Section "Uninstall"
|
||||||
ClearErrors
|
ClearErrors
|
||||||
${EndIf}
|
${EndIf}
|
||||||
|
|
||||||
${MUI_INSTALLOPTIONS_READ} $0 "unconfirm.ini" "Field 3" "State"
|
|
||||||
${If} "$0" == "1"
|
|
||||||
${un.DeleteRelativeProfiles} "Moonchild Productions\Pale Moon"
|
|
||||||
${un.DeleteRelativeProfiles} "Moonchild Productions\MetroPM"
|
|
||||||
RmDir "$APPDATA\Mozilla\Extensions\{8de7fcbb-c55c-4fbe-bfc5-fc555c87dbc4}"
|
|
||||||
RmDir "$APPDATA\Mozilla\Extensions"
|
|
||||||
RmDir "$APPDATA\Mozilla"
|
|
||||||
${EndIf}
|
|
||||||
|
|
||||||
; setup the application model id registration value
|
; setup the application model id registration value
|
||||||
${un.InitHashAppModelId} "$INSTDIR" "Software\Mozilla\${AppName}\TaskBarIDs"
|
${un.InitHashAppModelId} "$INSTDIR" "Software\Mozilla\${AppName}\TaskBarIDs"
|
||||||
|
|
||||||
|
|
@ -218,7 +258,7 @@ Section "Uninstall"
|
||||||
${EndIf}
|
${EndIf}
|
||||||
|
|
||||||
; Remove the updates directory for Vista and above
|
; Remove the updates directory for Vista and above
|
||||||
${un.CleanUpdateDirectories} "Moonchild Productions\Pale Moon" "Moonchild Productions\updates"
|
${un.CleanUpdateDirectories} "Mozilla\PaleMoon" "Mozilla\updates"
|
||||||
|
|
||||||
; Remove any app model id's stored in the registry for this install path
|
; Remove any app model id's stored in the registry for this install path
|
||||||
DeleteRegValue HKCU "Software\Mozilla\${AppName}\TaskBarIDs" "$INSTDIR"
|
DeleteRegValue HKCU "Software\Mozilla\${AppName}\TaskBarIDs" "$INSTDIR"
|
||||||
|
|
@ -254,6 +294,10 @@ Section "Uninstall"
|
||||||
${un.RegCleanFileHandler} ".shtml" "PaleMoonHTML"
|
${un.RegCleanFileHandler} ".shtml" "PaleMoonHTML"
|
||||||
${un.RegCleanFileHandler} ".xht" "PaleMoonHTML"
|
${un.RegCleanFileHandler} ".xht" "PaleMoonHTML"
|
||||||
${un.RegCleanFileHandler} ".xhtml" "PaleMoonHTML"
|
${un.RegCleanFileHandler} ".xhtml" "PaleMoonHTML"
|
||||||
|
${un.RegCleanFileHandler} ".oga" "PaleMoonHTML"
|
||||||
|
${un.RegCleanFileHandler} ".ogg" "PaleMoonHTML"
|
||||||
|
${un.RegCleanFileHandler} ".ogv" "PaleMoonHTML"
|
||||||
|
${un.RegCleanFileHandler} ".pdf" "PaleMoonHTML"
|
||||||
${un.RegCleanFileHandler} ".webm" "PaleMoonHTML"
|
${un.RegCleanFileHandler} ".webm" "PaleMoonHTML"
|
||||||
${EndIf}
|
${EndIf}
|
||||||
|
|
||||||
|
|
@ -273,7 +317,7 @@ Section "Uninstall"
|
||||||
; The StartMenuInternet registry key is independent of the default browser
|
; The StartMenuInternet registry key is independent of the default browser
|
||||||
; settings. The XPInstall base un-installer always removes this key if it is
|
; 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
|
; uninstalling the default browser and it will always replace the keys when
|
||||||
; installing even if there is another install of Firefox that is set as the
|
; installing even if there is another install of PaleMoon that is set as the
|
||||||
; default browser. Now the key is always updated on install but it is only
|
; default browser. Now the key is always updated on install but it is only
|
||||||
; removed if it refers to this install location.
|
; removed if it refers to this install location.
|
||||||
${If} "$INSTDIR" == "$R1"
|
${If} "$INSTDIR" == "$R1"
|
||||||
|
|
@ -289,7 +333,7 @@ Section "Uninstall"
|
||||||
; The StartMenuInternet registry key is independent of the default browser
|
; The StartMenuInternet registry key is independent of the default browser
|
||||||
; settings. The XPInstall base un-installer always removes this key if it is
|
; 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
|
; uninstalling the default browser and it will always replace the keys when
|
||||||
; installing even if there is another install of Firefox that is set as the
|
; installing even if there is another install of PaleMoon that is set as the
|
||||||
; default browser. Now the key is always updated on install but it is only
|
; default browser. Now the key is always updated on install but it is only
|
||||||
; removed if it refers to this install location.
|
; removed if it refers to this install location.
|
||||||
${If} "$INSTDIR" == "$R1"
|
${If} "$INSTDIR" == "$R1"
|
||||||
|
|
@ -307,7 +351,7 @@ Section "Uninstall"
|
||||||
StrCpy $0 "Software\Microsoft\MediaPlayer\ShimInclusionList\plugin-container.exe"
|
StrCpy $0 "Software\Microsoft\MediaPlayer\ShimInclusionList\plugin-container.exe"
|
||||||
DeleteRegKey HKLM "$0"
|
DeleteRegKey HKLM "$0"
|
||||||
DeleteRegKey HKCU "$0"
|
DeleteRegKey HKCU "$0"
|
||||||
StrCpy $0 "Software\Classes\MIME\Database\Content Type\application/x-xpinstall;app=firefox"
|
StrCpy $0 "Software\Classes\MIME\Database\Content Type\application/x-xpinstall;app=PaleMoon"
|
||||||
DeleteRegKey HKLM "$0"
|
DeleteRegKey HKLM "$0"
|
||||||
DeleteRegKey HKCU "$0"
|
DeleteRegKey HKCU "$0"
|
||||||
${Else}
|
${Else}
|
||||||
|
|
@ -335,42 +379,63 @@ Section "Uninstall"
|
||||||
${If} ${FileExists} "$INSTDIR\distribution"
|
${If} ${FileExists} "$INSTDIR\distribution"
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\distribution"
|
RmDir /r /REBOOTOK "$INSTDIR\distribution"
|
||||||
${EndIf}
|
${EndIf}
|
||||||
${If} ${FileExists} "$INSTDIR\removed-files"
|
|
||||||
Delete /REBOOTOK "$INSTDIR\removed-files"
|
|
||||||
${EndIf}
|
|
||||||
|
|
||||||
; Remove files that may be left behind by the application in the
|
; Remove files that may be left behind by the application in the
|
||||||
; VirtualStore directory.
|
; VirtualStore directory.
|
||||||
${un.CleanVirtualStore}
|
${un.CleanVirtualStore}
|
||||||
|
|
||||||
; Parse the uninstall log to unregister dll's and remove all installed
|
; Only unregister the dll if the registration points to this installation
|
||||||
; files / directories this install is responsible for.
|
ReadRegStr $R1 HKCR "CLSID\{0D68D6D0-D93D-4D08-A30D-F00DD1F45B24}\InProcServer32" ""
|
||||||
${un.ParseUninstallLog}
|
${If} "$INSTDIR\AccessibleMarshal.dll" == "$R1"
|
||||||
|
${UnregisterDLL} "$INSTDIR\AccessibleMarshal.dll"
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
; Remove the uninstall directory that we control
|
${un.RemovePrecompleteEntries} "false"
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\uninstall"
|
|
||||||
|
|
||||||
; Explictly remove empty webapprt dir in case it exists
|
${If} ${FileExists} "$INSTDIR\defaults\pref\channel-prefs.js"
|
||||||
; See bug 757978
|
Delete /REBOOTOK "$INSTDIR\defaults\pref\channel-prefs.js"
|
||||||
|
${EndIf}
|
||||||
|
${If} ${FileExists} "$INSTDIR\defaults\pref"
|
||||||
|
RmDir /REBOOTOK "$INSTDIR\defaults\pref"
|
||||||
|
${EndIf}
|
||||||
|
${If} ${FileExists} "$INSTDIR\defaults"
|
||||||
|
RmDir /REBOOTOK "$INSTDIR\defaults"
|
||||||
|
${EndIf}
|
||||||
|
${If} ${FileExists} "$INSTDIR\uninstall"
|
||||||
|
; Remove the uninstall directory that we control
|
||||||
|
RmDir /r /REBOOTOK "$INSTDIR\uninstall"
|
||||||
|
${EndIf}
|
||||||
|
${If} ${FileExists} "$INSTDIR\install.log"
|
||||||
|
Delete /REBOOTOK "$INSTDIR\install.log"
|
||||||
|
${EndIf}
|
||||||
|
${If} ${FileExists} "$INSTDIR\update-settings.ini"
|
||||||
|
Delete /REBOOTOK "$INSTDIR\update-settings.ini"
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
|
; Explicitly remove empty webapprt dir in case it exists (bug 757978).
|
||||||
RmDir "$INSTDIR\webapprt\components"
|
RmDir "$INSTDIR\webapprt\components"
|
||||||
RmDir "$INSTDIR\webapprt"
|
RmDir "$INSTDIR\webapprt"
|
||||||
|
|
||||||
RmDir /r /REBOOTOK "$INSTDIR\${TO_BE_DELETED}"
|
|
||||||
|
|
||||||
; Remove the installation directory if it is empty
|
; Remove the installation directory if it is empty
|
||||||
${RemoveDir} "$INSTDIR"
|
RmDir "$INSTDIR"
|
||||||
|
|
||||||
; If firefox.exe was successfully deleted yet we still need to restart to
|
; If PaleMoon.exe was successfully deleted yet we still need to restart to
|
||||||
; remove other files create a dummy firefox.exe.moz-delete to prevent the
|
; remove other files create a dummy PaleMoon.exe.moz-delete to prevent the
|
||||||
; installer from allowing an install without restart when it is required
|
; installer from allowing an install without restart when it is required
|
||||||
; to complete an uninstall.
|
; to complete an uninstall.
|
||||||
${If} ${RebootFlag}
|
${If} ${RebootFlag}
|
||||||
${Unless} ${FileExists} "$INSTDIR\${FileMainEXE}.moz-delete"
|
; Admin is required to delete files on reboot so only add the moz-delete if
|
||||||
FileOpen $0 "$INSTDIR\${FileMainEXE}.moz-delete" w
|
; the user is an admin. After calling UAC::IsAdmin $0 will equal 1 if the
|
||||||
FileWrite $0 "Will be deleted on restart"
|
; user is an admin.
|
||||||
Delete /REBOOTOK "$INSTDIR\${FileMainEXE}.moz-delete"
|
UAC::IsAdmin
|
||||||
FileClose $0
|
${If} "$0" == "1"
|
||||||
${EndUnless}
|
${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}
|
||||||
${EndIf}
|
${EndIf}
|
||||||
|
|
||||||
; Refresh desktop icons otherwise the start menu internet item won't be
|
; Refresh desktop icons otherwise the start menu internet item won't be
|
||||||
|
|
@ -378,19 +443,38 @@ Section "Uninstall"
|
||||||
; clients registry key by the OS under some conditions.
|
; clients registry key by the OS under some conditions.
|
||||||
System::Call "shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i 0, i 0, i 0)"
|
System::Call "shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i 0, i 0, i 0)"
|
||||||
|
|
||||||
SectionEnd
|
; Users who uninstall then reinstall expecting PaleMoon to use a clean profile
|
||||||
|
; may be surprised during first-run. This key is checked during startup of PaleMoon and
|
||||||
|
; subsequently deleted after checking. If the value is found during startup
|
||||||
|
; the browser will offer to Reset PaleMoon. We use the UpdateChannel to match
|
||||||
|
; uninstalls of PaleMoon-release with reinstalls of PaleMoon-release, for example.
|
||||||
|
WriteRegStr HKCU "Software\Mozilla\PaleMoon" "Uninstalled-${UpdateChannel}" "True"
|
||||||
|
|
||||||
################################################################################
|
!ifdef MOZ_MAINTENANCE_SERVICE
|
||||||
# Helper Functions
|
; Get the path the allowed cert is at and remove it
|
||||||
|
; Keep this block of code last since it modfies the reg view
|
||||||
; Don't setup the survey controls, functions, etc. when the application has
|
ServicesHelper::PathToUniqueRegistryPath "$INSTDIR"
|
||||||
; defined NO_UNINSTALL_SURVEY
|
Pop $MaintCertKey
|
||||||
!ifndef NO_UNINSTALL_SURVEY
|
${If} $MaintCertKey != ""
|
||||||
Function un.Survey
|
; Always use the 64bit registry for certs on 64bit systems.
|
||||||
Exec "$\"$TmpVal$\" $\"${SurveyURL}$\""
|
${If} ${RunningX64}
|
||||||
FunctionEnd
|
SetRegView 64
|
||||||
|
${EndIf}
|
||||||
|
DeleteRegKey HKLM "$MaintCertKey"
|
||||||
|
${If} ${RunningX64}
|
||||||
|
SetRegView lastused
|
||||||
|
${EndIf}
|
||||||
|
${EndIf}
|
||||||
|
Call un.UninstallServiceIfNotUsed
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
|
${un.IsFirewallSvcRunning}
|
||||||
|
Pop $0
|
||||||
|
${If} "$0" == "true"
|
||||||
|
liteFirewallW::RemoveRule "$INSTDIR\${FileMainEXE}" "${BrandShortName} ($INSTDIR)"
|
||||||
|
${EndIf}
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Language
|
# Language
|
||||||
|
|
||||||
|
|
@ -453,7 +537,7 @@ Function un.preConfirm
|
||||||
${EndIf}
|
${EndIf}
|
||||||
|
|
||||||
; Setup the unconfirm.ini file for the Custom Uninstall Confirm Page
|
; Setup the unconfirm.ini file for the Custom Uninstall Confirm Page
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Settings" NumFields "5"
|
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Settings" NumFields "3"
|
||||||
|
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 1" Type "label"
|
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" Text "$(UN_CONFIRM_UNINSTALLED_FROM)"
|
||||||
|
|
@ -473,44 +557,22 @@ Function un.preConfirm
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 2" Bottom "30"
|
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 2" Bottom "30"
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 2" flags "READONLY"
|
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 2" flags "READONLY"
|
||||||
|
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Type "checkbox"
|
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Type "label"
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Text "$(UN_REMOVE_PROFILES)"
|
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Text "$(UN_CONFIRM_CLICK)"
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Left "0"
|
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Left "0"
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Right "-1"
|
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Right "-1"
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Top "40"
|
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Top "130"
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Bottom "50"
|
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Bottom "150"
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" State "0"
|
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" flags "NOTIFY"
|
|
||||||
|
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Type "text"
|
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" State "$(UN_REMOVE_PROFILES_DESC)"
|
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Left "0"
|
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Right "-1"
|
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Top "52"
|
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Bottom "120"
|
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" flags "MULTILINE|READONLY"
|
|
||||||
|
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 5" Type "label"
|
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 5" Text "$(UN_CONFIRM_CLICK)"
|
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 5" Left "0"
|
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 5" Right "-1"
|
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 5" Top "130"
|
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 5" Bottom "150"
|
|
||||||
|
|
||||||
${If} "$TmpVal" == "true"
|
${If} "$TmpVal" == "true"
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 6" Type "label"
|
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Type "label"
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 6" Text "$(SUMMARY_REBOOT_REQUIRED_UNINSTALL)"
|
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Text "$(SUMMARY_REBOOT_REQUIRED_UNINSTALL)"
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 6" Left "0"
|
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Left "0"
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 6" Right "-1"
|
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Right "-1"
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 6" Top "35"
|
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Top "35"
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 6" Bottom "45"
|
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Bottom "45"
|
||||||
|
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Settings" NumFields "6"
|
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Settings" NumFields "4"
|
||||||
|
|
||||||
; To insert this control reset Top / Bottom for controls below this one
|
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Top "55"
|
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Bottom "65"
|
|
||||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Top "67"
|
|
||||||
${EndIf}
|
${EndIf}
|
||||||
|
|
||||||
!insertmacro MUI_HEADER_TEXT "$(UN_CONFIRM_PAGE_TITLE)" "$(UN_CONFIRM_PAGE_SUBTITLE)"
|
!insertmacro MUI_HEADER_TEXT "$(UN_CONFIRM_PAGE_TITLE)" "$(UN_CONFIRM_PAGE_SUBTITLE)"
|
||||||
|
|
@ -518,72 +580,12 @@ Function un.preConfirm
|
||||||
; focus. This sets the focus to the Install button instead.
|
; focus. This sets the focus to the Install button instead.
|
||||||
!insertmacro MUI_INSTALLOPTIONS_INITDIALOG "unconfirm.ini"
|
!insertmacro MUI_INSTALLOPTIONS_INITDIALOG "unconfirm.ini"
|
||||||
GetDlgItem $0 $HWNDPARENT 1
|
GetDlgItem $0 $HWNDPARENT 1
|
||||||
${MUI_INSTALLOPTIONS_READ} $1 "unconfirm.ini" "Field 4" "HWND"
|
|
||||||
SetCtlColors $1 0x000000 0xFFFFEE
|
|
||||||
ShowWindow $1 ${SW_HIDE}
|
|
||||||
System::Call "user32::SetFocus(i r0, i 0x0007, i,i)i"
|
System::Call "user32::SetFocus(i r0, i 0x0007, i,i)i"
|
||||||
${MUI_INSTALLOPTIONS_READ} $1 "unconfirm.ini" "Field 2" "HWND"
|
${MUI_INSTALLOPTIONS_READ} $1 "unconfirm.ini" "Field 2" "HWND"
|
||||||
SendMessage $1 ${WM_SETTEXT} 0 "STR:$INSTDIR"
|
SendMessage $1 ${WM_SETTEXT} 0 "STR:$INSTDIR"
|
||||||
!insertmacro MUI_INSTALLOPTIONS_SHOW
|
!insertmacro MUI_INSTALLOPTIONS_SHOW
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
||||||
Function un.leaveConfirm
|
|
||||||
${MUI_INSTALLOPTIONS_READ} $0 "unconfirm.ini" "Settings" "State"
|
|
||||||
StrCmp $0 "3" +1 continue
|
|
||||||
${MUI_INSTALLOPTIONS_READ} $0 "unconfirm.ini" "Field 3" "State"
|
|
||||||
${MUI_INSTALLOPTIONS_READ} $1 "unconfirm.ini" "Field 4" "HWND"
|
|
||||||
StrCmp $0 1 +1 +3
|
|
||||||
ShowWindow $1 ${SW_SHOW}
|
|
||||||
Abort
|
|
||||||
|
|
||||||
ShowWindow $1 ${SW_HIDE}
|
|
||||||
Abort
|
|
||||||
|
|
||||||
continue:
|
|
||||||
|
|
||||||
; 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
|
# Initialization Functions
|
||||||
|
|
||||||
|
|
@ -605,6 +607,14 @@ Function un.onInit
|
||||||
|
|
||||||
${un.UninstallUnOnInitCommon}
|
${un.UninstallUnOnInitCommon}
|
||||||
|
|
||||||
|
; The commands inside this ifndef are needed prior to NSIS 3.0a2 and can be
|
||||||
|
; removed after we require NSIS 3.0a2 or greater.
|
||||||
|
!ifndef NSIS_PACKEDVERSION
|
||||||
|
${If} ${AtLeastWinVista}
|
||||||
|
System::Call 'user32::SetProcessDPIAware()'
|
||||||
|
${EndIf}
|
||||||
|
!endif
|
||||||
|
|
||||||
!insertmacro InitInstallOptionsFile "unconfirm.ini"
|
!insertmacro InitInstallOptionsFile "unconfirm.ini"
|
||||||
FunctionEnd
|
FunctionEnd
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
;!@Install@!UTF-8!
|
|
||||||
Title="Pale Moon"
|
|
||||||
RunProgram="setup-stub.exe"
|
|
||||||
;!@InstallEnd@!
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue