mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-07 16:28:38 +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
|
||||
|
||||
CONFIG_DIR = instgen
|
||||
SFX_MODULE = $(topsrcdir)/other-licenses/7zstub/firefox/7zSD.sfx
|
||||
APP_VERSION := $(shell cat $(srcdir)/../../config/version.txt)
|
||||
DEFINES += -DAPP_VERSION=$(APP_VERSION)
|
||||
SFX_MODULE = $(topsrcdir)/other-licenses/7zstub/uxp/7zSD.sfx
|
||||
|
||||
INSTALLER_FILES = \
|
||||
app.tag \
|
||||
|
|
@ -16,6 +14,12 @@ INSTALLER_FILES = \
|
|||
nsis/shared.nsh \
|
||||
$(NULL)
|
||||
|
||||
ifdef MOZ_MAINTENANCE_SERVICE
|
||||
INSTALLER_FILES += \
|
||||
nsis/maintenanceservice_installer.nsi \
|
||||
$(NULL)
|
||||
endif
|
||||
|
||||
BRANDING_FILES = \
|
||||
branding.nsi \
|
||||
appname.bmp \
|
||||
|
|
@ -24,13 +28,6 @@ BRANDING_FILES = \
|
|||
wizWatermark.bmp \
|
||||
$(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
|
||||
|
||||
ifdef LOCALE_MERGEDIR
|
||||
|
|
@ -61,6 +58,17 @@ uninstaller::
|
|||
--preprocess-locale $(topsrcdir) \
|
||||
$(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::
|
||||
$(RM) -r $(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:
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
DEFINES['APP_VERSION'] = CONFIG['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
|
||||
# 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
|
||||
!define AppName "Pale Moon"
|
||||
!define AppVersion "@APP_VERSION@"
|
||||
|
|
@ -14,13 +31,17 @@
|
|||
!define DDEApplication "Pale Moon"
|
||||
!define AppRegName "Pale Moon"
|
||||
|
||||
!ifndef DEV_EDITION
|
||||
!define BrandShortName "@MOZ_APP_DISPLAYNAME@"
|
||||
!endif
|
||||
!define BrandFullName "${BrandFullNameInternal}"
|
||||
|
||||
!define NO_UNINSTALL_SURVEY
|
||||
|
||||
# !define CERTIFICATE_NAME "Mozilla Corporation"
|
||||
# !define CERTIFICATE_ISSUER "Thawte Code Signing CA - G2"
|
||||
!define CERTIFICATE_NAME "Mozilla Corporation"
|
||||
!define CERTIFICATE_ISSUER "DigiCert SHA2 Assured ID Code Signing CA"
|
||||
; Changing the name or issuer requires us to have both the old and the new
|
||||
; 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
|
||||
# category value is ANDed together to set multiple permitted categories.
|
||||
|
|
@ -39,20 +60,26 @@
|
|||
#ifdef HAVE_64BIT_BUILD
|
||||
!define HAVE_64BIT_BUILD
|
||||
!define ARCH "x64"
|
||||
!define MinSupportedVer "Microsoft Windows Vista x64"
|
||||
!define MinSupportedVer "Microsoft Windows 7 x64"
|
||||
#else
|
||||
!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
|
||||
|
||||
# File details shared by both the installer and uninstaller
|
||||
VIProductVersion "1.0.0.0"
|
||||
VIAddVersionKey "ProductName" "Pale Moon"
|
||||
VIAddVersionKey "CompanyName" "Moonchild Productions"
|
||||
VIAddVersionKey "ProductName" "${BrandShortName}"
|
||||
VIAddVersionKey "CompanyName" "${CompanyName}"
|
||||
#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
|
||||
VIAddVersionKey "LegalCopyright" "Moonchild Productions"
|
||||
VIAddVersionKey "LegalCopyright" "${CompanyName}"
|
||||
VIAddVersionKey "FileVersion" "${AppVersion}"
|
||||
VIAddVersionKey "ProductVersion" "${AppVersion}"
|
||||
# Comments is not used but left below commented out for future reference
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
# Required Plugins:
|
||||
# AppAssocReg http://nsis.sourceforge.net/Application_Association_Registration_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
|
||||
# UAC http://nsis.sourceforge.net/UAC_plug-in
|
||||
# ServicesHelper Mozilla specific plugin that is located in /other-licenses/nsis
|
||||
|
|
@ -21,15 +21,25 @@ CRCCheck on
|
|||
|
||||
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 ./
|
||||
|
||||
Var TmpVal
|
||||
Var InstallType
|
||||
Var AddStartMenuSC
|
||||
Var AddTaskbarSC
|
||||
Var AddQuickLaunchSC
|
||||
Var AddDesktopSC
|
||||
Var InstallMaintenanceService
|
||||
Var PageName
|
||||
Var PreventRebootRequired
|
||||
|
||||
; 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
|
||||
|
|
@ -82,6 +92,7 @@ VIAddVersionKey "OriginalFilename" "setup.exe"
|
|||
!insertmacro InitHashAppModelId
|
||||
!insertmacro IsHandlerForInstallDir
|
||||
!insertmacro IsPinnedToTaskBar
|
||||
!insertmacro IsUserAdmin
|
||||
!insertmacro LogDesktopShortcut
|
||||
!insertmacro LogQuickLaunchShortcut
|
||||
!insertmacro LogStartMenuShortcut
|
||||
|
|
@ -90,6 +101,7 @@ VIAddVersionKey "OriginalFilename" "setup.exe"
|
|||
!insertmacro RegCleanAppHandler
|
||||
!insertmacro RegCleanMain
|
||||
!insertmacro RegCleanUninstall
|
||||
!insertmacro RemovePrecompleteEntries
|
||||
!insertmacro SetAppLSPCategories
|
||||
!insertmacro SetBrandNameVars
|
||||
!insertmacro UpdateShortcutAppModelIDs
|
||||
|
|
@ -153,6 +165,11 @@ Page custom preOptions leaveOptions
|
|||
!define MUI_DIRECTORYPAGE_VERIFYONLEAVE
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
|
||||
; Custom Components Page
|
||||
!ifdef MOZ_MAINTENANCE_SERVICE
|
||||
Page custom preComponents leaveComponents
|
||||
!endif
|
||||
|
||||
; Custom Shortcuts Page
|
||||
Page custom preShortcuts leaveShortcuts
|
||||
|
||||
|
|
@ -185,7 +202,42 @@ Section "-InstallStartCleanup"
|
|||
SetOutPath "$INSTDIR"
|
||||
${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
|
||||
${DeleteFile} "$INSTDIR\${FileMainEXE}"
|
||||
${If} ${Errors}
|
||||
|
|
@ -201,9 +253,31 @@ Section "-InstallStartCleanup"
|
|||
${InitHashAppModelId} "$INSTDIR" "Software\Mozilla\${AppName}\TaskBarIDs"
|
||||
|
||||
; Remove the updates directory for Vista and above
|
||||
${CleanUpdateDirectories} "Mozilla\Firefox" "Mozilla\updates"
|
||||
${CleanUpdateDirectories} "Mozilla\Pale Moon" "Mozilla\updates"
|
||||
|
||||
${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}
|
||||
SectionEnd
|
||||
|
|
@ -215,8 +289,6 @@ Section "-Application" APP_IDX
|
|||
DetailPrint $(STATUS_INSTALL_APP)
|
||||
SetDetailsPrint none
|
||||
|
||||
RmDir /r /REBOOTOK "$INSTDIR\${TO_BE_DELETED}"
|
||||
|
||||
${LogHeader} "Installing Main Files"
|
||||
${CopyFilesFromDir} "$EXEDIR\core" "$INSTDIR" \
|
||||
"$(ERROR_CREATE_DIRECTORY_PREFIX)" \
|
||||
|
|
@ -237,18 +309,6 @@ Section "-Application" APP_IDX
|
|||
${LogMsg} "Registered: $INSTDIR\AccessibleMarshal.dll"
|
||||
${EndIf}
|
||||
|
||||
; Write extra files created by the application to the uninstall log so they
|
||||
; will be removed when the application is uninstalled. To remove an empty
|
||||
; directory write a bogus filename to the deepest directory and all empty
|
||||
; parent directories will be removed.
|
||||
${LogUninstall} "File: \components\compreg.dat"
|
||||
${LogUninstall} "File: \components\xpti.dat"
|
||||
${LogUninstall} "File: \active-update.xml"
|
||||
${LogUninstall} "File: \install.log"
|
||||
${LogUninstall} "File: \install_status.log"
|
||||
${LogUninstall} "File: \install_wizard.log"
|
||||
${LogUninstall} "File: \updates.xml"
|
||||
|
||||
ClearErrors
|
||||
|
||||
; 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
|
||||
; shortcuts set IconsVisible to 1 otherwise to 0.
|
||||
; Taskbar shortcuts imply having a start menu shortcut.
|
||||
${StrFilter} "${FileMainEXE}" "+" "" "" $R9
|
||||
StrCpy $0 "Software\Clients\StartMenuInternet\$R9\InstallInfo"
|
||||
${If} $AddDesktopSC == 1
|
||||
${OrIf} $AddStartMenuSC == 1
|
||||
${OrIf} $AddTaskbarSC == 1
|
||||
WriteRegDWORD HKLM "$0" "IconsVisible" 1
|
||||
${Else}
|
||||
WriteRegDWORD HKLM "$0" "IconsVisible" 0
|
||||
|
|
@ -353,16 +415,53 @@ Section "-Application" APP_IDX
|
|||
|
||||
; If we create either the desktop or start menu shortcuts, then
|
||||
; set IconsVisible to 1 otherwise to 0.
|
||||
; Taskbar shortcuts imply having a start menu shortcut.
|
||||
${StrFilter} "${FileMainEXE}" "+" "" "" $R9
|
||||
StrCpy $0 "Software\Clients\StartMenuInternet\$R9\InstallInfo"
|
||||
${If} $AddDesktopSC == 1
|
||||
${OrIf} $AddStartMenuSC == 1
|
||||
${OrIf} $AddTaskbarSC == 1
|
||||
WriteRegDWORD HKCU "$0" "IconsVisible" 1
|
||||
${Else}
|
||||
WriteRegDWORD HKCU "$0" "IconsVisible" 0
|
||||
${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
|
||||
; an install into a different location.
|
||||
StrCpy $0 "Software\Microsoft\Windows\CurrentVersion\App Paths\${FileMainEXE}"
|
||||
|
|
@ -437,6 +536,13 @@ Section "-Application" APP_IDX
|
|||
${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
|
||||
CreateShortCut "$DESKTOP\${BrandFullName}.lnk" "$INSTDIR\${FileMainEXE}"
|
||||
${If} ${FileExists} "$DESKTOP\${BrandFullName}.lnk"
|
||||
|
|
@ -472,6 +578,13 @@ Section "-Application" APP_IDX
|
|||
${EndIf}
|
||||
${EndUnless}
|
||||
${EndIf}
|
||||
|
||||
!ifdef MOZ_MAINTENANCE_SERVICE
|
||||
${If} $TmpVal == "HKLM"
|
||||
; Add the registry keys for allowed certificates.
|
||||
${AddMaintCertKeys}
|
||||
${EndIf}
|
||||
!endif
|
||||
SectionEnd
|
||||
|
||||
; Cleanup operations to perform at the end of the installation.
|
||||
|
|
@ -481,8 +594,35 @@ Section "-InstallEndCleanup"
|
|||
SetDetailsPrint none
|
||||
|
||||
${Unless} ${Silent}
|
||||
ClearErrors
|
||||
${MUI_INSTALLOPTIONS_READ} $0 "summary.ini" "Field 4" "State"
|
||||
${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"
|
||||
ClearErrors
|
||||
${GetParameters} $0
|
||||
|
|
@ -493,46 +633,64 @@ Section "-InstallEndCleanup"
|
|||
GetFunctionAddress $0 SetAsDefaultAppUserHKCU
|
||||
UAC::ExecCodeSegment $0
|
||||
${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}
|
||||
; Adds a pinned Task Bar shortcut (see MigrateTaskBarShortcut for details).
|
||||
${MigrateTaskBarShortcut}
|
||||
${EndUnless}
|
||||
|
||||
${GetShortcutsLogPath} $0
|
||||
WriteIniStr "$0" "TASKBAR" "Migrated" "true"
|
||||
; Adds a pinned Task Bar shortcut (see MigrateTaskBarShortcut for details).
|
||||
${MigrateTaskBarShortcut}
|
||||
|
||||
; Add the Firewall entries during install
|
||||
Call AddFirewallEntries
|
||||
|
||||
; Refresh desktop icons
|
||||
System::Call "shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_DWORDFLUSH}, i 0, i 0)"
|
||||
|
||||
${InstallEndCleanupCommon}
|
||||
|
||||
${If} ${RebootFlag}
|
||||
; 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} $PreventRebootRequired == "true"
|
||||
SetRebootFlag false
|
||||
${EndIf}
|
||||
|
||||
${If} ${FileExists} "$INSTDIR\${FileMainEXE}"
|
||||
ClearErrors
|
||||
Rename "$INSTDIR\${FileMainEXE}" "$INSTDIR\${FileMainEXE}.moz-delete"
|
||||
${Unless} ${Errors}
|
||||
Delete /REBOOTOK "$INSTDIR\${FileMainEXE}.moz-delete"
|
||||
${If} ${RebootFlag}
|
||||
; Admin is required to delete files on reboot so only add the moz-delete if
|
||||
; the user is an admin. After calling UAC::IsAdmin $0 will equal 1 if the
|
||||
; user is an admin.
|
||||
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}
|
||||
${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}
|
||||
SectionEnd
|
||||
|
||||
|
|
@ -669,7 +827,9 @@ Function CheckExistingInstall
|
|||
FunctionEnd
|
||||
|
||||
Function LaunchApp
|
||||
!ifndef DEV_EDITION
|
||||
${ManualCloseAppPrompt} "${WindowClass}" "$(WARN_MANUALLY_CLOSE_APP_LAUNCH)"
|
||||
!endif
|
||||
|
||||
ClearErrors
|
||||
${GetParameters} $0
|
||||
|
|
@ -776,9 +936,7 @@ Function leaveShortcuts
|
|||
Abort
|
||||
${EndIf}
|
||||
${MUI_INSTALLOPTIONS_READ} $AddDesktopSC "shortcuts.ini" "Field 2" "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"
|
||||
${MUI_INSTALLOPTIONS_READ} $AddStartMenuSC "shortcuts.ini" "Field 3" "State"
|
||||
|
||||
; Don't install the quick launch shortcut on Windows 7
|
||||
${Unless} ${AtLeastWin7}
|
||||
|
|
@ -790,6 +948,59 @@ Function leaveShortcuts
|
|||
${EndIf}
|
||||
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
|
||||
StrCpy $PageName "Summary"
|
||||
; Setup the summary.ini file for the Custom Summary Page
|
||||
|
|
@ -838,14 +1049,14 @@ Function preSummary
|
|||
WriteRegStr HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" "Write Test"
|
||||
${Unless} ${Errors}
|
||||
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
|
||||
${IsHandlerForInstallDir} "http" $R9
|
||||
${If} $TmpVal == "HKLM"
|
||||
SetShellVarContext all ; Set SHCTX to all users
|
||||
${EndIf}
|
||||
; If Firefox isn't the http handler for this user show the option to set
|
||||
; Firefox as the default browser.
|
||||
; If Pale Moon isn't the http handler for this user show the option to set
|
||||
; Pale Moon as the default browser.
|
||||
${If} "$R9" != "true"
|
||||
${AndIf} ${AtMostWin2008R2}
|
||||
WriteINIStr "$PLUGINSDIR\summary.ini" "Settings" NumFields "4"
|
||||
|
|
@ -926,7 +1137,46 @@ Function .onInit
|
|||
StrCpy $LANGUAGE 0
|
||||
${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 "shortcuts.ini"
|
||||
|
|
@ -1016,6 +1266,25 @@ Function .onInit
|
|||
WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" State "1"
|
||||
${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.
|
||||
${GetSize} "$EXEDIR\core\" "/S=0K" $R5 $R7 $R8
|
||||
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
|
||||
# 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
|
||||
|
||||
; 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
|
||||
; 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)"
|
||||
|
||||
; 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.
|
||||
ReadRegStr $0 HKCU "Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice" "ProgId"
|
||||
${If} $0 == "PaleMoonURL"
|
||||
|
|
@ -61,6 +56,9 @@
|
|||
; Win7 taskbar and start menu link maintenance
|
||||
Call FixShortcutAppModelIDs
|
||||
|
||||
; Add the Firewall entries after an update
|
||||
Call AddFirewallEntries
|
||||
|
||||
; 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
|
||||
; keys.
|
||||
|
|
@ -100,6 +98,13 @@
|
|||
; root of the Start Menu Programs directory.
|
||||
${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).
|
||||
${MigrateTaskBarShortcut}
|
||||
|
||||
|
|
@ -120,6 +125,50 @@
|
|||
|
||||
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
|
||||
!define PostUpdate "!insertmacro PostUpdate"
|
||||
|
||||
|
|
@ -280,11 +329,11 @@
|
|||
${If} ${Errors}
|
||||
WriteRegStr SHCTX "SOFTWARE\Classes\${FILE_TYPE}" "" "PaleMoonHTML"
|
||||
${EndIf}
|
||||
WriteRegStr SHCTX "SOFTWARE\Classes\${FILE_TYPE}\OpenWithProgids" "PaleMoonHTML" ""
|
||||
!macroend
|
||||
!define AddAssociationIfNoneExist "!insertmacro AddAssociationIfNoneExist"
|
||||
|
||||
|
||||
; Adds the protocol and file handler registry entries for making Pale Moon the
|
||||
; Adds the protocol and file handler registry entries for making PaleMoon the
|
||||
; default handler (uses SHCTX).
|
||||
!macro SetHandlers
|
||||
${GetLongPath} "$INSTDIR\${FileMainEXE}" $8
|
||||
|
|
@ -318,10 +367,11 @@
|
|||
WriteRegStr SHCTX "$0\.xhtml" "" "PaleMoonHTML"
|
||||
${EndIf}
|
||||
|
||||
;Register file associations, but only if they don't exist yet.
|
||||
${AddAssociationIfNoneExist} ".pdf"
|
||||
${AddAssociationIfNoneExist} ".oga"
|
||||
${AddAssociationIfNoneExist} ".ogg"
|
||||
${AddAssociationIfNoneExist} ".ogv"
|
||||
${AddAssociationIfNoneExist} ".pdf"
|
||||
${AddAssociationIfNoneExist} ".webm"
|
||||
|
||||
; 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" \
|
||||
"true"
|
||||
|
||||
; An empty string is used for the 4th & 5th params because the following
|
||||
; protocol handlers already have a display name and the additional keys
|
||||
; required for a protocol handler.
|
||||
|
|
@ -341,7 +390,7 @@
|
|||
!macroend
|
||||
!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).
|
||||
;
|
||||
; 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
|
||||
; 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
|
||||
; 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
|
||||
ClearErrors
|
||||
ReadRegStr $1 ${RegKey} "Software\Classes\PaleMoonHTML\ShellEx\IconHandler" ""
|
||||
|
|
@ -436,37 +485,67 @@
|
|||
|
||||
; Add Software\Mozilla\ registry entries (uses SHCTX).
|
||||
!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
|
||||
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" "PathToExe" "$8\${FileMainEXE}" 0
|
||||
|
||||
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}\${AppVersion} (${AB_CD})\Uninstall"
|
||||
${WriteRegStr2} $TmpVal "$0" "Description" "${BrandFullNameInternal} (${ARCH} ${AB_CD})" 0
|
||||
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}\${AppVersion}$3 (${ARCH} ${AB_CD})\Uninstall"
|
||||
${WriteRegStr2} $TmpVal "$0" "Description" "${BrandFullNameInternal} ${AppVersion}$3 (${ARCH} ${AB_CD})" 0
|
||||
|
||||
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}\${AppVersion} (${AB_CD})"
|
||||
${WriteRegStr2} $TmpVal "$0" "" "${AppVersion} (${AB_CD})" 0
|
||||
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}\${AppVersion}$3 (${ARCH} ${AB_CD})"
|
||||
${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
|
||||
|
||||
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" "Plugins" "$8\plugins" 0
|
||||
|
||||
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal} ${AppVersion}"
|
||||
${WriteRegStr2} $TmpVal "$0" "GoannaVer" "${GREVersion}" 0
|
||||
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal} ${AppVersion}$3"
|
||||
${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" "CurrentVersion" "${AppVersion} (${AB_CD})" 0
|
||||
${WriteRegStr2} $TmpVal "$0" "CurrentVersion" "${AppVersion}$3 (${ARCH} ${AB_CD})" 0
|
||||
!macroend
|
||||
!define SetAppKeys "!insertmacro SetAppKeys"
|
||||
|
||||
; Add uninstall registry entries. This macro tests for write access to determine
|
||||
; if the uninstall keys should be added to HKLM or HKCU.
|
||||
!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 ""
|
||||
ClearErrors
|
||||
|
|
@ -493,15 +572,24 @@
|
|||
${GetLongPath} "$INSTDIR" $8
|
||||
|
||||
; 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" "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" "HelpLink" "${HelpLink}" 0
|
||||
${WriteRegStr2} $1 "$0" "InstallLocation" "$8" 0
|
||||
${WriteRegStr2} $1 "$0" "Publisher" "Moonchild Productions" 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
|
||||
!endif
|
||||
!endif
|
||||
${WriteRegStr2} $1 "$0" "URLInfoAbout" "${URLInfoAbout}" 0
|
||||
${WriteRegDWORD2} $1 "$0" "NoModify" 1 0
|
||||
${WriteRegDWORD2} $1 "$0" "NoRepair" 1 0
|
||||
|
||||
|
|
@ -518,7 +606,7 @@
|
|||
!define SetUninstallKeys "!insertmacro SetUninstallKeys"
|
||||
|
||||
; 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
|
||||
; 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
|
||||
|
|
@ -534,7 +622,7 @@
|
|||
ReadRegStr $2 HKCR "${FILE_TYPE}\PersistentHandler" ""
|
||||
${If} "$2" != ""
|
||||
; 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"
|
||||
DeleteRegValue HKCU "Software\Classes\${FILE_TYPE}" ""
|
||||
${EndIf}
|
||||
|
|
@ -542,7 +630,7 @@
|
|||
DeleteRegValue HKLM "Software\Classes\${FILE_TYPE}" ""
|
||||
${EndIf}
|
||||
${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.
|
||||
${If} "$1" != ""
|
||||
DeleteRegValue HKCU "Software\Classes\${FILE_TYPE}" ""
|
||||
|
|
@ -630,21 +718,68 @@
|
|||
!macroend
|
||||
!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).
|
||||
!macro RemoveDeprecatedKeys
|
||||
StrCpy $0 "SOFTWARE\Classes"
|
||||
; 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"
|
||||
|
||||
; 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"
|
||||
|
||||
; Remove the app compatibility registry key
|
||||
StrCpy $0 "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"
|
||||
DeleteRegValue HKLM "$0" "$INSTDIR\${FileMainEXE}"
|
||||
DeleteRegValue HKCU "$0" "$INSTDIR\${FileMainEXE}"
|
||||
; Remove protocol handler registry keys added by the MS shim
|
||||
DeleteRegKey HKLM "Software\Classes\PaleMoon.URL"
|
||||
DeleteRegKey HKCU "Software\Classes\PaleMoon.URL"
|
||||
|
||||
; Delete gopher from Capabilities\URLAssociations if it is present.
|
||||
${StrFilter} "${FileMainEXE}" "+" "" "" $R9
|
||||
|
|
@ -671,148 +806,22 @@
|
|||
RmDir /r /REBOOTOK "$INSTDIR\extensions\talkback@mozilla.org"
|
||||
${EndIf}
|
||||
|
||||
; Remove the Java Console extension (bug 597235)
|
||||
${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}
|
||||
; Remove the Java Console extension (bug 1165156)
|
||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0031-ABCDEFFEDCBA}"
|
||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0031-ABCDEFFEDCBA}"
|
||||
${EndIf}
|
||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0032-ABCDEFFEDCBA}"
|
||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0032-ABCDEFFEDCBA}"
|
||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0016-0000-0034-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}
|
||||
${If} ${FileExists} "$INSTDIR\extensions\{CAFEEFAC-0017-0000-0000-ABCDEFFEDCBA}"
|
||||
RmDir /r /REBOOTOK "$INSTDIR\extensions\{CAFEEFAC-0017-0000-0000-ABCDEFFEDCBA}"
|
||||
${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
|
||||
!define RemoveDeprecatedFiles "!insertmacro RemoveDeprecatedFiles"
|
||||
|
||||
|
|
@ -876,15 +885,15 @@
|
|||
${If} $5 == ""
|
||||
${Break}
|
||||
${EndIf}
|
||||
${If} $5 == 233 ; ansi ??
|
||||
${If} $5 == 233 ; ansi é
|
||||
StrCpy $0 "1"
|
||||
FileWriteByte $4 195
|
||||
FileWriteByte $4 169
|
||||
${ElseIf} $5 == 241 ; ansi ??
|
||||
${ElseIf} $5 == 241 ; ansi ñ
|
||||
StrCpy $0 "1"
|
||||
FileWriteByte $4 195
|
||||
FileWriteByte $4 177
|
||||
${ElseIf} $5 == 252 ; ansi ??
|
||||
${ElseIf} $5 == 252 ; ansi ü
|
||||
StrCpy $0 "1"
|
||||
FileWriteByte $4 195
|
||||
FileWriteByte $4 188
|
||||
|
|
@ -926,17 +935,24 @@
|
|||
ClearErrors
|
||||
WriteIniStr "$0" "TASKBAR" "Migrated" "true"
|
||||
${If} ${AtLeastWin7}
|
||||
; No need to check the default on Win8 and later
|
||||
${If} ${AtMostWin2008R2}
|
||||
; Check if Pale Moon 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
|
||||
; If we didn't run the stub installer, AddTaskbarSC will be empty.
|
||||
; We determine whether to pin based on whether we're the default
|
||||
; browser, or if we're on win8 or later, we always pin.
|
||||
${If} $AddTaskbarSC == ""
|
||||
; No need to check the default on Win8 and later
|
||||
${If} ${AtMostWin2008R2}
|
||||
; 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}
|
||||
${If} "$R9" == "true"
|
||||
${OrIf} ${AtLeastWin8}
|
||||
${If} "$R9" == "true"
|
||||
${OrIf} ${AtLeastWin8}
|
||||
${PinToTaskBar}
|
||||
${EndIf}
|
||||
${ElseIf} $AddTaskbarSC == "1"
|
||||
${PinToTaskBar}
|
||||
${EndIf}
|
||||
${EndIf}
|
||||
|
|
@ -1152,17 +1168,86 @@
|
|||
; returns after the first check.
|
||||
Push "end"
|
||||
Push "AccessibleMarshal.dll"
|
||||
Push "IA2Marshal.dll"
|
||||
Push "freebl3.dll"
|
||||
Push "nssckbi.dll"
|
||||
Push "nspr4.dll"
|
||||
Push "nssdbm3.dll"
|
||||
Push "mozsqlite3.dll"
|
||||
Push "xpcom.dll"
|
||||
Push "crashreporter.exe"
|
||||
Push "minidump-analyzer.exe"
|
||||
Push "updater.exe"
|
||||
Push "${FileMainEXE}"
|
||||
!macroend
|
||||
!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
|
||||
; 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
|
||||
|
|
@ -1214,7 +1299,7 @@ Function SetAsDefaultAppUserHKCU
|
|||
${EndUnless}
|
||||
${EndIf}
|
||||
${RemoveDeprecatedKeys}
|
||||
${PinToTaskBar}
|
||||
${MigrateTaskBarShortcut}
|
||||
FunctionEnd
|
||||
|
||||
; Helper for updating the shortcut application model IDs.
|
||||
|
|
@ -1225,6 +1310,15 @@ Function FixShortcutAppModelIDs
|
|||
${EndIf}
|
||||
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
|
||||
; this function only being used by the uninstaller.nsi.
|
||||
!ifdef NO_LOG
|
||||
|
|
@ -1311,4 +1405,4 @@ Function SetAsDefaultAppUser
|
|||
FunctionEnd
|
||||
!define SetAsDefaultAppUser "Call SetAsDefaultAppUser"
|
||||
|
||||
!endif
|
||||
!endif ; NO_LOG
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
# Required Plugins:
|
||||
# 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
|
||||
# UAC http://nsis.sourceforge.net/UAC_plug-in
|
||||
|
||||
|
|
@ -19,6 +19,14 @@ CRCCheck on
|
|||
|
||||
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 ./
|
||||
|
||||
; 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"
|
||||
|
||||
Var TmpVal
|
||||
Var MaintCertKey
|
||||
|
||||
; Other included files may depend upon these includes!
|
||||
; The following includes are provided by NSIS.
|
||||
|
|
@ -67,6 +76,7 @@ VIAddVersionKey "OriginalFilename" "helper.exe"
|
|||
!insertmacro InitHashAppModelId
|
||||
!insertmacro IsHandlerForInstallDir
|
||||
!insertmacro IsPinnedToTaskBar
|
||||
!insertmacro IsUserAdmin
|
||||
!insertmacro LogDesktopShortcut
|
||||
!insertmacro LogQuickLaunchShortcut
|
||||
!insertmacro LogStartMenuShortcut
|
||||
|
|
@ -85,19 +95,18 @@ VIAddVersionKey "OriginalFilename" "helper.exe"
|
|||
!insertmacro un.CheckForFilesInUse
|
||||
!insertmacro un.CleanUpdateDirectories
|
||||
!insertmacro un.CleanVirtualStore
|
||||
!insertmacro un.DeleteRelativeProfiles
|
||||
!insertmacro un.DeleteShortcuts
|
||||
!insertmacro un.GetLongPath
|
||||
!insertmacro un.GetSecondInstallPath
|
||||
!insertmacro un.InitHashAppModelId
|
||||
!insertmacro un.ManualCloseAppPrompt
|
||||
!insertmacro un.ParseUninstallLog
|
||||
!insertmacro un.RegCleanAppHandler
|
||||
!insertmacro un.RegCleanFileHandler
|
||||
!insertmacro un.RegCleanMain
|
||||
!insertmacro un.RegCleanUninstall
|
||||
!insertmacro un.RegCleanProtocolHandler
|
||||
!insertmacro un.RemoveQuotesFromPath
|
||||
!insertmacro un.RemovePrecompleteEntries
|
||||
!insertmacro un.SetAppLSPCategories
|
||||
!insertmacro un.SetBrandNameVars
|
||||
|
||||
|
|
@ -146,28 +155,68 @@ ShowUnInstDetails nevershow
|
|||
!insertmacro MUI_UNPAGE_WELCOME
|
||||
|
||||
; Custom Uninstall Confirm Page
|
||||
UninstPage custom un.preConfirm un.leaveConfirm
|
||||
UninstPage custom un.preConfirm
|
||||
|
||||
; Remove Files Page
|
||||
!insertmacro MUI_UNPAGE_INSTFILES
|
||||
|
||||
; 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
|
||||
|
||||
; Use the default dialog for IDD_VERIFY for a simple Banner
|
||||
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
|
||||
; Empty section required for the installer to compile as an uninstaller
|
||||
|
|
@ -194,15 +243,6 @@ Section "Uninstall"
|
|||
ClearErrors
|
||||
${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
|
||||
${un.InitHashAppModelId} "$INSTDIR" "Software\Mozilla\${AppName}\TaskBarIDs"
|
||||
|
||||
|
|
@ -218,7 +258,7 @@ Section "Uninstall"
|
|||
${EndIf}
|
||||
|
||||
; 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
|
||||
DeleteRegValue HKCU "Software\Mozilla\${AppName}\TaskBarIDs" "$INSTDIR"
|
||||
|
|
@ -254,6 +294,10 @@ Section "Uninstall"
|
|||
${un.RegCleanFileHandler} ".shtml" "PaleMoonHTML"
|
||||
${un.RegCleanFileHandler} ".xht" "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"
|
||||
${EndIf}
|
||||
|
||||
|
|
@ -273,7 +317,7 @@ Section "Uninstall"
|
|||
; The StartMenuInternet registry key is independent of the default browser
|
||||
; settings. The XPInstall base un-installer always removes this key if it is
|
||||
; uninstalling the default browser and it will always replace the keys when
|
||||
; installing even if there is another install of 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
|
||||
; removed if it refers to this install location.
|
||||
${If} "$INSTDIR" == "$R1"
|
||||
|
|
@ -289,7 +333,7 @@ Section "Uninstall"
|
|||
; The StartMenuInternet registry key is independent of the default browser
|
||||
; settings. The XPInstall base un-installer always removes this key if it is
|
||||
; uninstalling the default browser and it will always replace the keys when
|
||||
; installing even if there is another install of 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
|
||||
; removed if it refers to this install location.
|
||||
${If} "$INSTDIR" == "$R1"
|
||||
|
|
@ -307,7 +351,7 @@ Section "Uninstall"
|
|||
StrCpy $0 "Software\Microsoft\MediaPlayer\ShimInclusionList\plugin-container.exe"
|
||||
DeleteRegKey HKLM "$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 HKCU "$0"
|
||||
${Else}
|
||||
|
|
@ -335,42 +379,63 @@ Section "Uninstall"
|
|||
${If} ${FileExists} "$INSTDIR\distribution"
|
||||
RmDir /r /REBOOTOK "$INSTDIR\distribution"
|
||||
${EndIf}
|
||||
${If} ${FileExists} "$INSTDIR\removed-files"
|
||||
Delete /REBOOTOK "$INSTDIR\removed-files"
|
||||
${EndIf}
|
||||
|
||||
; Remove files that may be left behind by the application in the
|
||||
; VirtualStore directory.
|
||||
${un.CleanVirtualStore}
|
||||
|
||||
; Parse the uninstall log to unregister dll's and remove all installed
|
||||
; files / directories this install is responsible for.
|
||||
${un.ParseUninstallLog}
|
||||
; Only unregister the dll if the registration points to this installation
|
||||
ReadRegStr $R1 HKCR "CLSID\{0D68D6D0-D93D-4D08-A30D-F00DD1F45B24}\InProcServer32" ""
|
||||
${If} "$INSTDIR\AccessibleMarshal.dll" == "$R1"
|
||||
${UnregisterDLL} "$INSTDIR\AccessibleMarshal.dll"
|
||||
${EndIf}
|
||||
|
||||
; Remove the uninstall directory that we control
|
||||
RmDir /r /REBOOTOK "$INSTDIR\uninstall"
|
||||
${un.RemovePrecompleteEntries} "false"
|
||||
|
||||
; Explictly remove empty webapprt dir in case it exists
|
||||
; See bug 757978
|
||||
${If} ${FileExists} "$INSTDIR\defaults\pref\channel-prefs.js"
|
||||
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"
|
||||
|
||||
RmDir /r /REBOOTOK "$INSTDIR\${TO_BE_DELETED}"
|
||||
|
||||
; 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
|
||||
; remove other files create a dummy firefox.exe.moz-delete to prevent the
|
||||
; If PaleMoon.exe was successfully deleted yet we still need to restart to
|
||||
; remove other files create a dummy PaleMoon.exe.moz-delete to prevent the
|
||||
; installer from allowing an install without restart when it is required
|
||||
; to complete an uninstall.
|
||||
${If} ${RebootFlag}
|
||||
${Unless} ${FileExists} "$INSTDIR\${FileMainEXE}.moz-delete"
|
||||
FileOpen $0 "$INSTDIR\${FileMainEXE}.moz-delete" w
|
||||
FileWrite $0 "Will be deleted on restart"
|
||||
Delete /REBOOTOK "$INSTDIR\${FileMainEXE}.moz-delete"
|
||||
FileClose $0
|
||||
${EndUnless}
|
||||
; Admin is required to delete files on reboot so only add the moz-delete if
|
||||
; the user is an admin. After calling UAC::IsAdmin $0 will equal 1 if the
|
||||
; user is an admin.
|
||||
UAC::IsAdmin
|
||||
${If} "$0" == "1"
|
||||
${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}
|
||||
|
||||
; 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.
|
||||
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"
|
||||
|
||||
################################################################################
|
||||
# Helper Functions
|
||||
|
||||
; Don't setup the survey controls, functions, etc. when the application has
|
||||
; defined NO_UNINSTALL_SURVEY
|
||||
!ifndef NO_UNINSTALL_SURVEY
|
||||
Function un.Survey
|
||||
Exec "$\"$TmpVal$\" $\"${SurveyURL}$\""
|
||||
FunctionEnd
|
||||
!ifdef MOZ_MAINTENANCE_SERVICE
|
||||
; Get the path the allowed cert is at and remove it
|
||||
; Keep this block of code last since it modfies the reg view
|
||||
ServicesHelper::PathToUniqueRegistryPath "$INSTDIR"
|
||||
Pop $MaintCertKey
|
||||
${If} $MaintCertKey != ""
|
||||
; Always use the 64bit registry for certs on 64bit systems.
|
||||
${If} ${RunningX64}
|
||||
SetRegView 64
|
||||
${EndIf}
|
||||
DeleteRegKey HKLM "$MaintCertKey"
|
||||
${If} ${RunningX64}
|
||||
SetRegView lastused
|
||||
${EndIf}
|
||||
${EndIf}
|
||||
Call un.UninstallServiceIfNotUsed
|
||||
!endif
|
||||
|
||||
${un.IsFirewallSvcRunning}
|
||||
Pop $0
|
||||
${If} "$0" == "true"
|
||||
liteFirewallW::RemoveRule "$INSTDIR\${FileMainEXE}" "${BrandShortName} ($INSTDIR)"
|
||||
${EndIf}
|
||||
SectionEnd
|
||||
|
||||
################################################################################
|
||||
# Language
|
||||
|
||||
|
|
@ -453,7 +537,7 @@ Function un.preConfirm
|
|||
${EndIf}
|
||||
|
||||
; 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" 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" flags "READONLY"
|
||||
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Type "checkbox"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Text "$(UN_REMOVE_PROFILES)"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Type "label"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Text "$(UN_CONFIRM_CLICK)"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Left "0"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Right "-1"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Top "40"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Bottom "50"
|
||||
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"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Top "130"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Bottom "150"
|
||||
|
||||
${If} "$TmpVal" == "true"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 6" Type "label"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 6" Text "$(SUMMARY_REBOOT_REQUIRED_UNINSTALL)"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 6" Left "0"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 6" Right "-1"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 6" Top "35"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 6" Bottom "45"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Type "label"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Text "$(SUMMARY_REBOOT_REQUIRED_UNINSTALL)"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Left "0"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Right "-1"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Top "35"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Bottom "45"
|
||||
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Settings" NumFields "6"
|
||||
|
||||
; 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"
|
||||
WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Settings" NumFields "4"
|
||||
${EndIf}
|
||||
|
||||
!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.
|
||||
!insertmacro MUI_INSTALLOPTIONS_INITDIALOG "unconfirm.ini"
|
||||
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"
|
||||
${MUI_INSTALLOPTIONS_READ} $1 "unconfirm.ini" "Field 2" "HWND"
|
||||
SendMessage $1 ${WM_SETTEXT} 0 "STR:$INSTDIR"
|
||||
!insertmacro MUI_INSTALLOPTIONS_SHOW
|
||||
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
|
||||
|
||||
|
|
@ -605,6 +607,14 @@ Function un.onInit
|
|||
|
||||
${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"
|
||||
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