You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
815 lines
31 KiB
815 lines
31 KiB
;Copyright 2004-2020 John T. Haller of PortableApps.com
|
|
|
|
;Website: http://PortableApps.com/FirefoxPortable
|
|
|
|
;This software is OSI Certified Open Source Software.
|
|
;OSI Certified is a certification mark of the Open Source Initiative.
|
|
|
|
;This program is free software; you can redistribute it and/or
|
|
;modify it under the terms of the GNU General Public License
|
|
;as published by the Free Software Foundation; either version 2
|
|
;of the License, or (at your option) any later version.
|
|
|
|
;This program is distributed in the hope that it will be useful,
|
|
;but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
;GNU General Public License for more details.
|
|
|
|
;You should have received a copy of the GNU General Public License
|
|
;along with this program; if not, write to the Free Software
|
|
;Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
!define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10
|
|
|
|
!define PORTABLEAPPNAME "Mozilla Firefox, Portable Edition"
|
|
!define NamePortable "Mozilla Firefox, Portable Edition"
|
|
!define APPNAME "Firefox"
|
|
!define NAME "FirefoxPortable"
|
|
!define AppID "FirefoxPortable"
|
|
!define VER "2.2.1.0"
|
|
!define WEBSITE "PortableApps.com/FirefoxPortable"
|
|
!define DEFAULTEXE "firefox.exe"
|
|
!define DEFAULTAPPDIR "firefox"
|
|
!define LAUNCHERLANGUAGE "English"
|
|
|
|
;=== Program Details
|
|
Name "${PORTABLEAPPNAME}"
|
|
OutFile "..\..\${NAME}.exe"
|
|
Caption "${PORTABLEAPPNAME} | PortableApps.com"
|
|
VIProductVersion "${VER}"
|
|
VIAddVersionKey ProductName "${PORTABLEAPPNAME}"
|
|
VIAddVersionKey Comments "Allows ${APPNAME} to be run from a removable drive. For additional details, visit ${WEBSITE}"
|
|
VIAddVersionKey CompanyName "PortableApps.com"
|
|
VIAddVersionKey LegalCopyright "John T. Haller"
|
|
VIAddVersionKey FileDescription "${PORTABLEAPPNAME}"
|
|
VIAddVersionKey FileVersion "${VER}"
|
|
VIAddVersionKey ProductVersion "${VER}"
|
|
VIAddVersionKey InternalName "${PORTABLEAPPNAME}"
|
|
VIAddVersionKey LegalTrademarks "Firefox is a Registered Trademark of The Mozilla Foundation. PortableApps.com is a Registered Trademark of Rare Ideas, LLC."
|
|
VIAddVersionKey OriginalFilename "${NAME}.exe"
|
|
;VIAddVersionKey PrivateBuild ""
|
|
;VIAddVersionKey SpecialBuild ""
|
|
|
|
;=== Runtime Switches
|
|
CRCCheck On
|
|
WindowIcon Off
|
|
SilentInstall Silent
|
|
AutoCloseWindow True
|
|
RequestExecutionLevel user
|
|
XPStyle on
|
|
Unicode true
|
|
ManifestDPIAware true
|
|
|
|
; Best Compression
|
|
SetCompress Auto
|
|
SetCompressor /SOLID lzma
|
|
SetCompressorDictSize 32
|
|
SetDatablockOptimize On
|
|
|
|
;=== Include
|
|
;(Standard NSIS)
|
|
!include FileFunc.nsh
|
|
!insertmacro GetParameters ;Requires NSIS 2.40 or better
|
|
!include LogicLib.nsh
|
|
!include Registry.nsh
|
|
!include TextFunc.nsh
|
|
!insertmacro GetParent
|
|
!include WinVer.nsh
|
|
!include WordFunc.nsh
|
|
!insertmacro VersionCompare
|
|
|
|
;(NSIS Plugins)
|
|
!include TextReplace.nsh
|
|
|
|
;(Custom)
|
|
!include CheckForPlatformSplashDisable.nsh
|
|
!include ProcFunc.nsh
|
|
!include ReplaceInFileWithTextReplace.nsh
|
|
!include ReadINIStrWithDefault.nsh
|
|
!include RMDirIfNotJunction.nsh
|
|
!include SetFileAttributesDirectoryNormal.nsh
|
|
|
|
;=== Program Icon
|
|
Icon "..\..\App\AppInfo\appicon.ico"
|
|
|
|
;=== Icon & Stye ===
|
|
BrandingText "PortableApps.com®"
|
|
|
|
;=== Languages
|
|
LoadLanguageFile "${NSISDIR}\Contrib\Language files\${LAUNCHERLANGUAGE}.nlf"
|
|
!include PortableApps.comLauncherLANG_${LAUNCHERLANGUAGE}.nsh
|
|
|
|
;=== Variables
|
|
Var PROGRAMDATA ;Missing system var
|
|
Var PROGRAMDIRECTORY
|
|
Var PROGRAMDIRECTORY64
|
|
Var PROFILEDIRECTORY
|
|
Var ORIGINALPROFILEDIRECTORY
|
|
Var SETTINGSDIRECTORY
|
|
Var PLUGINSDIRECTORY
|
|
Var ADDITIONALPARAMETERS
|
|
Var ALLOWMULTIPLEINSTANCES
|
|
Var SKIPCOMPREGFIX
|
|
Var EXECSTRING
|
|
Var PROGRAMEXECUTABLE
|
|
Var INIPATH
|
|
Var DISABLESPLASHSCREEN
|
|
Var DISABLEINTELLIGENTSTART
|
|
Var LOCALHOMEPAGE
|
|
Var ISDEFAULTDIRECTORY
|
|
Var RUNLOCALLY
|
|
Var WAITFORPROGRAM
|
|
Var LASTPROFILEDIRECTORY
|
|
Var APPDATAPATH
|
|
Var SECONDARYLAUNCH
|
|
Var MOZILLAORGKEYEXISTS
|
|
Var HKLMMOZILLAORGKEYEXISTS
|
|
Var MISSINGFILEORPATH
|
|
Var CRASHREPORTSDIREXISTS
|
|
Var EXTENSIONSDIREXISTS
|
|
Var bolHKCUSoftwareMozillaFirefoxCrashReporterExists
|
|
Var bolHKCUSoftwareMozillaFirefoxExists
|
|
Var bolHKCUSoftwareMozillaExists
|
|
Var bolPendingPingsExists
|
|
Var bolProgramDataMozillaUpdatesExists
|
|
Var SubmitCrashReportBackup
|
|
Var bolLauncherIsAlreadyRunning
|
|
Var strPassedParameters
|
|
Var bolAlwaysUse32Bit
|
|
Var bolUsing64Bit
|
|
;=== START INTEGRITY CHECK 1.1 Var
|
|
Var bolCustomIntegrityCheckStartUnsupported
|
|
Var strCustomIntegrityCheckVersion
|
|
;=== END INTEGRITY CHECK
|
|
|
|
Section .onInit
|
|
ExpandEnvStrings $PROGRAMDATA "%PROGRAMDATA%"
|
|
|
|
System::Call kernel32::IsProcessorFeaturePresent(i${PF_XMMI64_INSTRUCTIONS_AVAILABLE})i.r0
|
|
|
|
${If} $0 == 0
|
|
;SSE2 unavailable
|
|
MessageBox MB_ICONEXCLAMATION|MB_OK "This computer has an older CPU that lacks SSE2 instruction set support. Mozilla Firefox 49 and later can not run on this computer."
|
|
Abort
|
|
${EndIf}
|
|
|
|
;=== START INTEGRITY CHECK 1.1 OnInit
|
|
;Check for improper install/upgrade without running the PA.c Installer which can cause issues
|
|
;Designed to not require ReadINIStrWithDefault which is not included in the PA.c Launcher code
|
|
|
|
${If} ${FileExists} "$EXEDIR\App\AppInfo\appinfo.ini"
|
|
${If} ${FileExists} "$EXEDIR\App\AppInfo\pac_installer_log.ini"
|
|
ReadINIStr $R0 "$EXEDIR\App\AppInfo\pac_installer_log.ini" "PortableApps.comInstaller" "Info2"
|
|
${If} $R0 == "This file was generated by the PortableApps.com Installer wizard and modified by the official PortableApps.com Installer TM Rare Ideas, LLC as the app was installed."
|
|
StrCpy $R1 "true"
|
|
${Else}
|
|
StrCpy $R1 "false"
|
|
${EndIf}
|
|
${Else}
|
|
StrCpy $R1 "false"
|
|
${EndIf}
|
|
${Else}
|
|
StrCpy $R1 "true"
|
|
${EndIf}
|
|
|
|
${If} $R1 == "false"
|
|
;Upgrade or install sans the PortableApps.com Installer which can cause compatibility issues
|
|
ClearErrors
|
|
ReadINIStr $0 "$EXEDIR\App\AppInfo\appinfo.ini" "Version" "PackageVersion"
|
|
${If} ${Errors}
|
|
${OrIf} $0 == ""
|
|
StrCpy $0 "0.0.0.1"
|
|
ClearErrors
|
|
${EndIf}
|
|
|
|
ClearErrors
|
|
ReadINIStr $1 "$EXEDIR\Data\settings\${AppID}Settings.ini" "${AppID}Settings" "InvalidPackageWarningShown"
|
|
${If} ${Errors}
|
|
${OrIf} $1 == ""
|
|
StrCpy $1 "0.0.0.0"
|
|
ClearErrors
|
|
${EndIf}
|
|
|
|
${VersionCompare} $0 $1 $2
|
|
${If} $2 == 1
|
|
MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 `Integrity Failure Warning: ${NamePortable} was installed or upgraded without using its installer and some critical files may have been modified. This could cause data loss, personal data left behind on a shared PC, functionality issues, and/or may be a violation of the application's license. Neither the application publisher nor PortableApps.com will be responsible for any issues you encounter.$\r$\n$\r$\nWould you like to start ${NamePortable} in its current unsupported state?` IDYES CustomIntegrityCheckGotoStartAnyway IDNO CustomIntegrityCheckGotoDownloadQuestion
|
|
|
|
CustomIntegrityCheckGotoDownloadQuestion:
|
|
;Check to ensure we have a valid homepage before asking the user
|
|
StrCpy $R0 ""
|
|
${If} ${FileExists} "$EXEDIR\App\AppInfo\appinfo.ini"
|
|
ReadINIStr $R0 "$EXEDIR\App\AppInfo\appinfo.ini" "Details" "Homepage"
|
|
${EndIf}
|
|
|
|
${If} $R0 == ""
|
|
Abort
|
|
${Else}
|
|
StrCpy $R1 $R0 4
|
|
${If} $R1 != "http"
|
|
${AndIf} $R1 != "HTTP"
|
|
StrCpy $R0 "http://$R0"
|
|
${EndIf}
|
|
${EndIf}
|
|
|
|
MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON1 `Would you like to visit the ${NamePortable} homepage to download the app and upgrade your current install?` IDYES CustomIntegrityCheckGotoURL IDNO CustomIntegrityCheckGotoAbort
|
|
|
|
CustomIntegrityCheckGotoURL:
|
|
ExecShell "open" $R0
|
|
Abort
|
|
|
|
CustomIntegrityCheckGotoAbort:
|
|
Abort
|
|
|
|
CustomIntegrityCheckGotoStartAnyway:
|
|
StrCpy $bolCustomIntegrityCheckStartUnsupported true
|
|
StrCpy $strCustomIntegrityCheckVersion $0
|
|
${EndIf}
|
|
${EndIf}
|
|
;=== END INTEGRITY CHECK
|
|
SectionEnd
|
|
|
|
Section "Main"
|
|
;=== Create a mutex so we can determine if this specific launcher is already running
|
|
${WordReplace} $EXEDIR "\" "-" "+" $0
|
|
System::Call 'kernel32::CreateMutex(i 0, i 0, t "FirefoxPortable$0") ?e'
|
|
Pop $R0
|
|
${If} $R0 != 0
|
|
StrCpy $bolLauncherIsAlreadyRunning true
|
|
${Else}
|
|
StrCpy $bolLauncherIsAlreadyRunning false
|
|
${EndIf}
|
|
|
|
;=== Setup variables
|
|
ReadEnvStr $APPDATAPATH "APPDATA"
|
|
|
|
;=== Find the INI file, if there is one
|
|
IfFileExists "$EXEDIR\${NAME}.ini" "" NoINI
|
|
StrCpy "$INIPATH" "$EXEDIR"
|
|
|
|
;=== Read the parameters from the INI file
|
|
${ReadINIStrWithDefault} $0 "$INIPATH\${NAME}.ini" "${NAME}" "${APPNAME}Directory" "App\${DEFAULTAPPDIR}"
|
|
StrCpy $PROGRAMDIRECTORY "$EXEDIR\$0"
|
|
StrCpy $PROGRAMDIRECTORY64 "$EXEDIR\$064"
|
|
${ReadINIStrWithDefault} $0 "$INIPATH\${NAME}.ini" "${NAME}" "ProfileDirectory" "Data\profile"
|
|
StrCpy $PROFILEDIRECTORY "$EXEDIR\$0"
|
|
${ReadINIStrWithDefault} $0 "$INIPATH\${NAME}.ini" "${NAME}" "SettingsDirectory" "Data\settings"
|
|
StrCpy $SETTINGSDIRECTORY "$EXEDIR\$0"
|
|
${ReadINIStrWithDefault} $0 "$INIPATH\${NAME}.ini" "${NAME}" "PluginsDirectory" "Data\plugins"
|
|
StrCpy $PLUGINSDIRECTORY "$EXEDIR\$0"
|
|
${ReadINIStrWithDefault} $ADDITIONALPARAMETERS "$INIPATH\${NAME}.ini" "${NAME}" "AdditionalParameters" ""
|
|
${ReadINIStrWithDefault} $ALLOWMULTIPLEINSTANCES "$INIPATH\${NAME}.ini" "${NAME}" "AllowMultipleInstances" "false"
|
|
${ReadINIStrWithDefault} $SKIPCOMPREGFIX "$INIPATH\${NAME}.ini" "${NAME}" "SkipCompregFix" "false"
|
|
${ReadINIStrWithDefault} $PROGRAMEXECUTABLE "$INIPATH\${NAME}.ini" "${NAME}" "${APPNAME}Executable" "${DEFAULTEXE}"
|
|
${ReadINIStrWithDefault} $WAITFORPROGRAM "$INIPATH\${NAME}.ini" "${NAME}" "WaitFor${APPNAME}" "false"
|
|
${ReadINIStrWithDefault} $DISABLESPLASHSCREEN "$INIPATH\${NAME}.ini" "${NAME}" "DisableSplashScreen" "false"
|
|
${ReadINIStrWithDefault} $DISABLEINTELLIGENTSTART "$INIPATH\${NAME}.ini" "${NAME}" "DisableIntelligentStart" "false"
|
|
${ReadINIStrWithDefault} $LOCALHOMEPAGE "$INIPATH\${NAME}.ini" "${NAME}" "LocalHomepage" ""
|
|
${ReadINIStrWithDefault} $RUNLOCALLY "$INIPATH\${NAME}.ini" "${NAME}" "RunLocally" "false"
|
|
${If} $RUNLOCALLY == "true"
|
|
StrCpy $WAITFORPROGRAM "true"
|
|
${EndIf}
|
|
|
|
${ReadINIStrWithDefault} $bolAlwaysUse32Bit "$INIPATH\${NAME}.ini" "${NAME}" "AlwaysUse32Bit" "false"
|
|
${If} $bolAlwaysUse32Bit == "true"
|
|
StrCpy $bolAlwaysUse32Bit true
|
|
${Else}
|
|
StrCpy $bolAlwaysUse32Bit false
|
|
${EndIf}
|
|
|
|
;CheckIfDefaultDirectories:
|
|
;=== Check if default directories
|
|
StrCmp $PROGRAMDIRECTORY "$EXEDIR\App\${DEFAULTAPPDIR}" "" EndINI
|
|
StrCmp $PROFILEDIRECTORY "$EXEDIR\Data\profile" "" EndINI
|
|
StrCmp $PLUGINSDIRECTORY "$EXEDIR\Data\plugins" "" EndINI
|
|
StrCmp $SETTINGSDIRECTORY "$EXEDIR\Data\settings" "" EndINI
|
|
StrCpy $ISDEFAULTDIRECTORY "true"
|
|
|
|
EndINI:
|
|
IfFileExists "$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" FoundProgramEXE NoProgramEXE
|
|
|
|
NoINI:
|
|
;=== No INI file, so we'll use the defaults
|
|
StrCpy $ADDITIONALPARAMETERS ""
|
|
StrCpy $ALLOWMULTIPLEINSTANCES "false"
|
|
StrCpy $SKIPCOMPREGFIX "false"
|
|
StrCpy $WAITFORPROGRAM "false"
|
|
StrCpy $PROGRAMEXECUTABLE "${DEFAULTEXE}"
|
|
StrCpy $DISABLESPLASHSCREEN "false"
|
|
StrCpy $DISABLEINTELLIGENTSTART "false"
|
|
StrCpy $bolAlwaysUse32Bit false
|
|
|
|
IfFileExists "$EXEDIR\App\${DEFAULTAPPDIR}\${DEFAULTEXE}" "" CheckPortableProgramDIR
|
|
StrCpy $PROGRAMDIRECTORY "$EXEDIR\App\${DEFAULTAPPDIR}"
|
|
StrCpy $PROGRAMDIRECTORY64 "$EXEDIR\App\${DEFAULTAPPDIR}64"
|
|
StrCpy $PROFILEDIRECTORY "$EXEDIR\Data\profile"
|
|
StrCpy $PLUGINSDIRECTORY "$EXEDIR\Data\plugins"
|
|
StrCpy $SETTINGSDIRECTORY "$EXEDIR\Data\settings"
|
|
StrCpy $ISDEFAULTDIRECTORY "true"
|
|
Goto FoundProgramEXE
|
|
|
|
CheckPortableProgramDIR:
|
|
IfFileExists "$EXEDIR\${NAME}\App\${DEFAULTAPPDIR}\${DEFAULTEXE}" "" NoProgramEXE
|
|
StrCpy $PROGRAMDIRECTORY "$EXEDIR\${NAME}\App\${DEFAULTAPPDIR}"
|
|
StrCpy $PROGRAMDIRECTORY64 "$EXEDIR\${NAME}\App\${DEFAULTAPPDIR}64"
|
|
StrCpy $PROFILEDIRECTORY "$EXEDIR\${NAME}\Data\profile"
|
|
StrCpy $PLUGINSDIRECTORY "$EXEDIR\${NAME}\Data\plugins"
|
|
StrCpy $SETTINGSDIRECTORY "$EXEDIR\${NAME}\Data\settings"
|
|
Goto FoundProgramEXE
|
|
|
|
NoProgramEXE:
|
|
;=== Program executable not where expected
|
|
StrCpy $MISSINGFILEORPATH $PROGRAMEXECUTABLE
|
|
MessageBox MB_OK|MB_ICONEXCLAMATION `$(LauncherFileNotFound)`
|
|
Abort
|
|
|
|
FoundProgramEXE:
|
|
StrCpy $ORIGINALPROFILEDIRECTORY $PROFILEDIRECTORY
|
|
|
|
IfFileExists "$APPDATA\Mozilla\Firefox\*.*" CheckUserRegistryKey
|
|
StrCpy $WAITFORPROGRAM "true"
|
|
CheckUserRegistryKey:
|
|
${registry::KeyExists} "HKCU\Software\mozilla.org" $R0
|
|
StrCmp $R0 "-1" CheckMachineRegistryKey ;=== If it doesn't exist, skip the next line
|
|
StrCpy $MOZILLAORGKEYEXISTS "true"
|
|
CheckMachineRegistryKey:
|
|
${registry::KeyExists} "HKLM\Software\mozilla.org" $R0
|
|
StrCmp $R0 "-1" CheckOtherKeys ;=== If it doesn't exist, skip the next line
|
|
StrCpy $HKLMMOZILLAORGKEYEXISTS "true"
|
|
CheckOtherKeys:
|
|
${registry::KeyExists} "HKCU\Software\Mozilla" $R0
|
|
${If} $R0 != "-1"
|
|
StrCpy $bolHKCUSoftwareMozillaExists true
|
|
${registry::KeyExists} "HKCU\Software\Mozilla\Firefox" $R0
|
|
${If} $R0 != "-1"
|
|
StrCpy $bolHKCUSoftwareMozillaFirefoxExists true
|
|
${registry::KeyExists} "HKCU\Software\Mozilla\Firefox\Crash Reporter" $R0
|
|
${If} $R0 != "-1"
|
|
StrCpy $bolHKCUSoftwareMozillaFirefoxCrashReporterExists true
|
|
${registry::Read} "HKCU\Software\Mozilla\Firefox\Crash Reporter" "SubmitCrashReport" $SubmitCrashReportBackup $R2
|
|
${EndIf}
|
|
${EndIf}
|
|
${EndIf}
|
|
|
|
${IfNot} ${FileExists} "$APPDATA\Mozilla\Firefox\Pending Pings\*.*"
|
|
StrCpy $bolPendingPingsExists false
|
|
${EndIf}
|
|
|
|
${If} ${FileExists} "$PROGRAMDATA\Mozilla\updates\*.*"
|
|
StrCpy $bolProgramDataMozillaUpdatesExists true
|
|
${Else}
|
|
StrCpy $bolProgramDataMozillaUpdatesExists false
|
|
${EndIf}
|
|
|
|
;CheckIfRunning:
|
|
;=== Check if running
|
|
StrCmp $ALLOWMULTIPLEINSTANCES "true" ProfileWork
|
|
${If} ${ProcessExists} "firefox.exe"
|
|
;=== Is launcher already running?
|
|
StrCmp $bolLauncherIsAlreadyRunning false WarnAnotherInstance
|
|
StrCpy $SECONDARYLAUNCH "true"
|
|
Goto RunProgram
|
|
${Else}
|
|
Goto CheckForCrashReports
|
|
${EndIf}
|
|
StrCmp $R0 "1" "" CheckForCrashReports
|
|
|
|
|
|
WarnAnotherInstance:
|
|
MessageBox MB_OK|MB_ICONINFORMATION `$(LauncherAlreadyRunning)`
|
|
Abort
|
|
|
|
CheckForCrashReports:
|
|
IfFileExists "$APPDATA\Mozilla\Firefox\Crash Reports\*.*" "" CheckForExtensionsDirectory
|
|
Rename "$APPDATA\Mozilla\Firefox\Crash Reports" "$APPDATA\Mozilla\Firefox\Crash Reports-BackupByFirefoxPortable"
|
|
StrCpy $CRASHREPORTSDIREXISTS "true"
|
|
StrCpy $WAITFORPROGRAM "true"
|
|
|
|
CheckForExtensionsDirectory:
|
|
IfFileExists "$APPDATA\Mozilla\Extensions\*.*" "" ProfileWork
|
|
Rename "$APPDATA\Mozilla\Extensions" "$APPDATA\Mozilla\Extensions-BackupByFirefoxPortable"
|
|
StrCpy $EXTENSIONSDIREXISTS "true"
|
|
StrCpy $WAITFORPROGRAM "true"
|
|
|
|
ProfileWork:
|
|
;=== Check for an existing profile
|
|
IfFileExists "$PROFILEDIRECTORY\prefs.js" ProfileFound
|
|
;=== No profile was found
|
|
StrCmp $ISDEFAULTDIRECTORY "true" CopyDefaultProfile CreateProfile
|
|
|
|
CopyDefaultProfile:
|
|
CreateDirectory "$EXEDIR\Data"
|
|
CreateDirectory "$EXEDIR\Data\plugins"
|
|
CreateDirectory "$EXEDIR\Data\profile"
|
|
CreateDirectory "$EXEDIR\Data\settings"
|
|
CopyFiles /SILENT $EXEDIR\App\DefaultData\plugins\*.* $EXEDIR\Data\plugins
|
|
CopyFiles /SILENT $EXEDIR\App\DefaultData\profile\*.* $EXEDIR\Data\profile
|
|
CopyFiles /SILENT $EXEDIR\App\DefaultData\settings\*.* $EXEDIR\Data\settings
|
|
GoTo ProfileFound
|
|
|
|
CreateProfile:
|
|
IfFileExists "$PROFILEDIRECTORY\*.*" ProfileFound
|
|
CreateDirectory "$PROFILEDIRECTORY"
|
|
|
|
ProfileFound:
|
|
IfFileExists "$SETTINGSDIRECTORY\FirefoxPortableSettings.ini" SettingsFound
|
|
CreateDirectory "$SETTINGSDIRECTORY"
|
|
FileOpen $R0 "$SETTINGSDIRECTORY\FirefoxPortableSettings.ini" w
|
|
FileClose $R0
|
|
WriteINIStr "$SETTINGSDIRECTORY\FirefoxPortableSettings.ini" "FirefoxPortableSettings" "LastProfileDirectory" "NONE"
|
|
|
|
SettingsFound:
|
|
${ReadINIStrWithDefault} $R0 "$SETTINGSDIRECTORY\${NAME}Settings.ini" "${NAME}Settings" "SubmitCrashReport" ""
|
|
${If} $R0 != ""
|
|
${registry::Write} "HKCU\Software\Mozilla\Firefox\Crash Reporter" "SubmitCrashReport" "$R0" "REG_DWORD" $R1
|
|
${EndIf}
|
|
|
|
;=== START INTEGRITY CHECK 1.1 PrePrimary
|
|
${If} $bolCustomIntegrityCheckStartUnsupported == true
|
|
WriteINIStr "$EXEDIR\Data\settings\${AppID}Settings.ini" "${AppID}Settings" "InvalidPackageWarningShown" $strCustomIntegrityCheckVersion
|
|
${EndIf}
|
|
;=== END INTEGRITY CHECK
|
|
|
|
;=== Check for read/write
|
|
StrCmp $RUNLOCALLY "true" DisplaySplash
|
|
ClearErrors
|
|
FileOpen $R0 "$PROFILEDIRECTORY\writetest.temp" w
|
|
IfErrors "" WriteSuccessful
|
|
;== Write failed, so we're read-only
|
|
MessageBox MB_YESNO|MB_ICONQUESTION `$(LauncherAskCopyLocal)` IDYES SwitchToRunLocally
|
|
MessageBox MB_OK|MB_ICONINFORMATION `$(LauncherNoReadOnly)`
|
|
Abort
|
|
|
|
SwitchToRunLocally:
|
|
StrCpy $RUNLOCALLY "true"
|
|
StrCpy $WAITFORPROGRAM "true"
|
|
Goto DisplaySplash
|
|
|
|
WriteSuccessful:
|
|
FileClose $R0
|
|
Delete "$PROFILEDIRECTORY\writetest.temp"
|
|
|
|
DisplaySplash:
|
|
${CheckForPlatformSplashDisable} $DISABLESPLASHSCREEN
|
|
StrCmp $DISABLESPLASHSCREEN "true" SkipSplashScreen
|
|
;=== Show the splash screen before processing the files
|
|
InitPluginsDir
|
|
File /oname=$PLUGINSDIR\splash.jpg "${NAME}.jpg"
|
|
newadvsplash::show /NOUNLOAD 2000 0 0 -1 /L $PLUGINSDIR\splash.jpg
|
|
|
|
SkipSplashScreen:
|
|
;=== Run locally if needed (aka Portable Firefox Live)
|
|
StrCmp $RUNLOCALLY "true" "" CompareProfilePath
|
|
RMDir /r "$TEMP\${NAME}\"
|
|
CreateDirectory $TEMP\${NAME}\profile
|
|
CreateDirectory $TEMP\${NAME}\plugins
|
|
CreateDirectory $TEMP\${NAME}\program
|
|
CopyFiles /SILENT $PROFILEDIRECTORY\*.* $TEMP\${NAME}\profile
|
|
StrCpy $PROFILEDIRECTORY $TEMP\${NAME}\profile
|
|
CopyFiles /SILENT $PLUGINSDIRECTORY\*.* $TEMP\${NAME}\plugins
|
|
StrCpy $PLUGINSDIRECTORY $TEMP\${NAME}\plugins
|
|
CopyFiles /SILENT $PROGRAMDIRECTORY\*.* $TEMP\${NAME}\program
|
|
StrCpy $PROGRAMDIRECTORY $TEMP\${NAME}\program
|
|
${SetFileAttributesDirectoryNormal} "$TEMP\${NAME}"
|
|
|
|
CompareProfilePath:
|
|
ReadINIStr $LASTPROFILEDIRECTORY "$SETTINGSDIRECTORY\${NAME}Settings.ini" "${NAME}Settings" "LastProfileDirectory"
|
|
StrCmp $PROFILEDIRECTORY $LASTPROFILEDIRECTORY "" RememberProfilePath
|
|
StrCmp $DISABLEINTELLIGENTSTART "true" RememberProfilePath
|
|
StrCpy $SKIPCOMPREGFIX "true"
|
|
|
|
RememberProfilePath:
|
|
WriteINIStr "$SETTINGSDIRECTORY\${NAME}Settings.ini" "${NAME}Settings" "LastProfileDirectory" "$PROFILEDIRECTORY"
|
|
|
|
;FixPrefsJs:
|
|
IfFileExists "$PROFILEDIRECTORY\prefs.js" "" FixOtherFiles
|
|
StrCmp $LASTPROFILEDIRECTORY "NONE" FixPrefsJsPart2
|
|
StrCpy $2 $LASTPROFILEDIRECTORY 1 ;Last drive letter
|
|
StrCpy $3 $PROFILEDIRECTORY 1 ;Current drive letter
|
|
StrCmp $2 $3 FixPrefsJsPart2 ;If no change, move on
|
|
|
|
;=== Replace drive letters without impacting other instances of the letter in prefs.js
|
|
${ReplaceInFileCS} "$PROFILEDIRECTORY\prefs.js" `file:///$2` `file:///$3`
|
|
${ReplaceInFileCS} "$PROFILEDIRECTORY\prefs.js" `", "$2:\\` `", "$3:\\`
|
|
|
|
FixPrefsJsPart2:
|
|
;=== Be sure the default browser check is disabled
|
|
FileOpen $0 "$PROFILEDIRECTORY\prefs.js" a
|
|
FileSeek $0 0 END
|
|
FileWriteByte $0 "13"
|
|
FileWriteByte $0 "10"
|
|
FileWrite $0 `user_pref("browser.shell.checkDefaultBrowser", false);`
|
|
FileWriteByte $0 "13"
|
|
FileWriteByte $0 "10"
|
|
StrCmp "$LOCALHOMEPAGE" "" FixPrefsJsClose
|
|
StrCpy $3 $EXEDIR
|
|
${WordReplace} $3 "\" "/" "+" $3
|
|
FileWrite $0 `user_pref("browser.startup.homepage", "file:///$3/$LOCALHOMEPAGE");`
|
|
FileWriteByte $0 "13"
|
|
FileWriteByte $0 "10"
|
|
|
|
FixPrefsJsClose:
|
|
FileClose $0
|
|
|
|
FixOtherFiles:
|
|
StrCmp $LASTPROFILEDIRECTORY "NONE" RunProgram
|
|
${GetParent} $LASTPROFILEDIRECTORY $0
|
|
${GetParent} $0 $0
|
|
StrCpy $0 '$0\' ;last FirefoxPortable directory
|
|
${GetParent} $ORIGINALPROFILEDIRECTORY $1
|
|
${GetParent} $1 $1
|
|
StrCpy $1 '$1\' ;current FirefoxPortable directory
|
|
StrCmp $0 $1 RunProgram
|
|
${If} ${FileExists} "$PROFILEDIRECTORY\pluginreg.dat"
|
|
${ReplaceInFile} "$PROFILEDIRECTORY\pluginreg.dat" $0 $1
|
|
${EndIf}
|
|
${If} ${FileExists} "$PROFILEDIRECTORY\extensions.ini"
|
|
${ReplaceInFile} "$PROFILEDIRECTORY\extensions.ini" $0 $1
|
|
;Update extensions SQL
|
|
${EndIf}
|
|
${If} ${FileExists} "$PROFILEDIRECTORY\extensions.sqlite"
|
|
nsExec::Exec `"$EXEDIR\App\Bin\sqlite3.exe" "$PROFILEDIRECTORY\extensions.sqlite" "UPDATE addon SET descriptor = '$1' || SUBSTR(descriptor,(LENGTH('$0')+1)) WHERE descriptor LIKE '$0%';"`
|
|
${EndIf}
|
|
${If} ${FileExists} "$PROFILEDIRECTORY\mimeTypes.rdf"
|
|
${ReplaceInFile} "$PROFILEDIRECTORY\mimeTypes.rdf" $0 $1
|
|
${EndIf}
|
|
${If} ${FileExists} "$PROFILEDIRECTORY\prefs.js"
|
|
${ReplaceInFile} "$PROFILEDIRECTORY\prefs.js" $0 $1
|
|
${WordReplace} $0 "\" "/" "+" $2
|
|
${WordReplace} $1 "\" "/" "+" $3
|
|
${ReplaceInFile} "$PROFILEDIRECTORY\prefs.js" "file:///$2" "file:///$3"
|
|
${EndIf}
|
|
${If} ${FileExists} "$PROFILEDIRECTORY\extensions.json"
|
|
${WordReplace} $0 "\" "\\" "+" $2
|
|
${WordReplace} $1 "\" "\\" "+" $3
|
|
${ReplaceInFile} "$PROFILEDIRECTORY\extensions.json" "$2" "$3"
|
|
${EndIf}
|
|
${If} ${FileExists} "$PROFILEDIRECTORY\extensions.json"
|
|
${WordReplace} $0 "\" "/" "+" $2
|
|
${WordReplace} $2 " " "%20" "+" $2
|
|
${WordReplace} $1 "\" "/" "+" $3
|
|
${WordReplace} $3 " " "%20" "+" $3
|
|
${ReplaceInFile} "$PROFILEDIRECTORY\extensions.json" "$2" "$3"
|
|
${EndIf}
|
|
${If} ${FileExists} "$PROFILEDIRECTORY\extensions.json"
|
|
${WordReplace} $0 "\" "\\" "+" $2
|
|
${WordReplace} $1 "\" "\\" "+" $3
|
|
${ReplaceInFile} "$PROFILEDIRECTORY\extensions.json" "$2" "$3"
|
|
${EndIf}
|
|
${If} $LASTPROFILEDIRECTORY != $ORIGINALPROFILEDIRECTORY
|
|
${AndIf} ${FileExists} "$PROFILEDIRECTORY\addonStartup.json.lz4"
|
|
Delete "$PROFILEDIRECTORY\addonStartup.json.unpacked"
|
|
nsExec::Exec `"$EXEDIR\App\Bin\dejsonlz4.exe" "$PROFILEDIRECTORY\addonStartup.json.lz4" "$PROFILEDIRECTORY\addonStartup.json.unpacked"`
|
|
Delete "$PROFILEDIRECTORY\addonStartup.json.lz4"
|
|
${WordReplace} $0 "\" "/" "+" $2
|
|
${WordReplace} $1 "\" "/" "+" $3
|
|
${WordReplace} $2 " " "%20" "+" $2
|
|
${WordReplace} $3 " " "%20" "+" $3
|
|
${ReplaceInFile} "$PROFILEDIRECTORY\addonStartup.json.unpacked" "file:///$2" "file:///$3"
|
|
${WordReplace} $0 "\" "\\" "+" $2
|
|
${WordReplace} $1 "\" "\\" "+" $3
|
|
${ReplaceInFile} "$PROFILEDIRECTORY\addonStartup.json.unpacked" "$2" "$3"
|
|
nsExec::Exec `"$EXEDIR\App\Bin\jsonlz4.exe" "$PROFILEDIRECTORY\addonStartup.json.unpacked" "$PROFILEDIRECTORY\addonStartup.json.lz4"`
|
|
Delete "$PROFILEDIRECTORY\addonStartup.json.unpacked"
|
|
${EndIf}
|
|
|
|
${GetParent} $LASTPROFILEDIRECTORY $0
|
|
${GetParent} $0 $0
|
|
${GetParent} $0 $0
|
|
StrCpy $0 '$0\' ;last PortableApps directory
|
|
${GetParent} $ORIGINALPROFILEDIRECTORY $1
|
|
${GetParent} $1 $1
|
|
${GetParent} $1 $1
|
|
StrCpy $1 '$1\' ;current PortableApps directory
|
|
StrCmp $0 $1 RunProgram
|
|
${If} ${FileExists} "$PROFILEDIRECTORY\mimeTypes.rdf"
|
|
${ReplaceInFile} "$PROFILEDIRECTORY\mimeTypes.rdf" $0 $1
|
|
${EndIf}
|
|
|
|
RunProgram:
|
|
StrCmp $SKIPCOMPREGFIX "true" GetPassedParameters
|
|
|
|
;=== Delete component registry to ensure compatibility with all extensions
|
|
Delete $PROFILEDIRECTORY\compreg.dat
|
|
|
|
GetPassedParameters:
|
|
;=== Get any passed parameters
|
|
${GetParameters} $strPassedParameters
|
|
|
|
;=== Setup exec string
|
|
System::Call kernel32::GetCurrentProcess()i.s
|
|
System::Call kernel32::IsWow64Process(is,*i.r0)
|
|
${If} $0 != 0
|
|
${AndIf} ${FileExists} "$PROGRAMDIRECTORY64\$PROGRAMEXECUTABLE"
|
|
${AndIf} ${AtLeastWin7}
|
|
${AndIf} $bolAlwaysUse32Bit == false
|
|
StrCpy $EXECSTRING `"$PROGRAMDIRECTORY64\$PROGRAMEXECUTABLE" -profile "$PROFILEDIRECTORY"`
|
|
StrCpy $bolUsing64Bit true
|
|
${Else}
|
|
StrCpy $EXECSTRING `"$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" -profile "$PROFILEDIRECTORY"`
|
|
StrCpy $bolUsing64Bit false
|
|
${EndIf}
|
|
|
|
${If} $strPassedParameters != ''
|
|
StrCpy $EXECSTRING `$EXECSTRING $strPassedParameters`
|
|
${EndIf}
|
|
|
|
;CheckMultipleInstances:
|
|
StrCmp $ALLOWMULTIPLEINSTANCES "true" "" AdditionalParameters
|
|
StrCpy $EXECSTRING `$EXECSTRING -no-remote`
|
|
|
|
AdditionalParameters:
|
|
StrCmp $ADDITIONALPARAMETERS "" PluginsEnvironment
|
|
|
|
;=== Additional Parameters
|
|
StrCpy $EXECSTRING `$EXECSTRING $ADDITIONALPARAMETERS`
|
|
|
|
PluginsEnvironment:
|
|
;=== Set the plugins directory if we have a path
|
|
${IfNot} ${FileExists} "$PLUGINSDIRECTORY\*.*"
|
|
StrCpy $PLUGINSDIRECTORY ""
|
|
${EndIf}
|
|
${GetParent} $EXEDIR $0
|
|
${If} $bolUsing64Bit == true
|
|
${If} ${FileExists} "$0\CommonFiles\Java64\bin\plugin2\*.*"
|
|
${If} $PLUGINSDIRECTORY != ""
|
|
StrCpy $PLUGINSDIRECTORY "$PLUGINSDIRECTORY;$0\CommonFiles\Java64\bin\plugin2"
|
|
${Else}
|
|
StrCpy $PLUGINSDIRECTORY "$0\CommonFiles\Java64\bin\plugin2"
|
|
${EndIf}
|
|
${ElseIf} ${FileExists} "$0\CommonFiles\Java64\bin\new_plugin\*.*"
|
|
${If} $PLUGINSDIRECTORY != ""
|
|
StrCpy $PLUGINSDIRECTORY "$PLUGINSDIRECTORY;$0\CommonFiles\Java64\bin\new_plugin"
|
|
${Else}
|
|
StrCpy $PLUGINSDIRECTORY "$0\CommonFiles\Java64\bin\new_plugin"
|
|
${EndIf}
|
|
${EndIf}
|
|
${Else}
|
|
${If} ${FileExists} "$0\CommonFiles\Java\bin\plugin2\*.*"
|
|
${If} $PLUGINSDIRECTORY != ""
|
|
StrCpy $PLUGINSDIRECTORY "$PLUGINSDIRECTORY;$0\CommonFiles\Java\bin\plugin2"
|
|
${Else}
|
|
StrCpy $PLUGINSDIRECTORY "$0\CommonFiles\Java\bin\plugin2"
|
|
${EndIf}
|
|
${ElseIf} ${FileExists} "$0\CommonFiles\Java\bin\new_plugin\*.*"
|
|
${If} $PLUGINSDIRECTORY != ""
|
|
StrCpy $PLUGINSDIRECTORY "$PLUGINSDIRECTORY;$0\CommonFiles\Java\bin\new_plugin"
|
|
${Else}
|
|
StrCpy $PLUGINSDIRECTORY "$0\CommonFiles\Java\bin\new_plugin"
|
|
${EndIf}
|
|
${EndIf}
|
|
${EndIf}
|
|
${If} ${FileExists} "$0\CommonFiles\Silverlight\files\*.*"
|
|
${If} $PLUGINSDIRECTORY != ""
|
|
StrCpy $PLUGINSDIRECTORY "$PLUGINSDIRECTORY;$0\CommonFiles\Silverlight\files"
|
|
${Else}
|
|
StrCpy $PLUGINSDIRECTORY "$0\CommonFiles\Silverlight\files"
|
|
${EndIf}
|
|
${EndIf}
|
|
${If} ${FileExists} "$0\CommonFiles\Flash\files\*.*"
|
|
${If} $PLUGINSDIRECTORY != ""
|
|
StrCpy $PLUGINSDIRECTORY "$PLUGINSDIRECTORY;$0\CommonFiles\Flash\files"
|
|
${Else}
|
|
StrCpy $PLUGINSDIRECTORY "$0\CommonFiles\Flash\files"
|
|
${EndIf}
|
|
${EndIf}
|
|
${If} ${FileExists} "$0\CommonFiles\BrowserPlugins\*.*"
|
|
${If} $PLUGINSDIRECTORY != ""
|
|
StrCpy $PLUGINSDIRECTORY "$PLUGINSDIRECTORY;$0\CommonFiles\BrowserPlugins"
|
|
${Else}
|
|
StrCpy $PLUGINSDIRECTORY "$0\CommonFiles\BrowserPlugins"
|
|
${EndIf}
|
|
${EndIf}
|
|
|
|
StrCmp $PLUGINSDIRECTORY "" LaunchNow
|
|
System::Call 'Kernel32::SetEnvironmentVariable(t, t) i("MOZ_PLUGIN_PATH", "$PLUGINSDIRECTORY").r0'
|
|
|
|
LaunchNow:
|
|
System::Call 'Kernel32::SetEnvironmentVariable(t, t) i("MOZ_CRASHREPORTER_DATA_DIRECTORY", "$PROFILEDIRECTORY\CrashReports").r0'
|
|
|
|
StrCmp $SECONDARYLAUNCH "true" StartProgramAndExit
|
|
StrCmp $WAITFORPROGRAM "true" "" StartProgramAndExit
|
|
SetOutPath $PROGRAMDIRECTORY
|
|
ExecWait $EXECSTRING
|
|
|
|
;CheckRunning:
|
|
StrCmp $ALLOWMULTIPLEINSTANCES "true" CheckIfRemoveLocalFiles
|
|
|
|
CheckRunning:
|
|
${ProcessWaitClose} "firefox.exe" -1 $R0
|
|
Sleep 2000
|
|
${If} ${ProcessExists} "firefox.exe"
|
|
Goto CheckRunning
|
|
${EndIf}
|
|
${If} ${ProcessExists} "updater.exe"
|
|
${GetProcessPath} "updater.exe" $R1
|
|
${If} $R1 == "$PROGRAMDIRECTORY\updater.exe"
|
|
${OrIf} $R1 == "$PROGRAMDIRECTORY64\updater.exe"
|
|
Goto CheckRunning
|
|
${EndIf}
|
|
${EndIf}
|
|
Goto CleanupRunLocally
|
|
|
|
StartProgramAndExit:
|
|
SetOutPath $PROGRAMDIRECTORY
|
|
Exec $EXECSTRING
|
|
Goto TheEnd
|
|
|
|
CleanupRunLocally:
|
|
StrCmp $RUNLOCALLY "true" "" CheckIfRemoveLocalFiles
|
|
RMDir /r "$TEMP\${NAME}\"
|
|
|
|
CheckIfRemoveLocalFiles:
|
|
${If} ${ProcessExists} "firefox.exe"
|
|
Goto TheEnd
|
|
${Else}
|
|
Goto RemoveLocalFiles
|
|
${EndIf}
|
|
|
|
RemoveLocalFiles:
|
|
StrCmp $ALLOWMULTIPLEINSTANCES "true" RemoveLocalFiles2
|
|
RMDir /r "$APPDATA\Mozilla\Firefox\Crash Reports\"
|
|
Rename "$APPDATA\Mozilla\Firefox\Crash Reports-BackupByFirefoxPortable" "$APPDATA\Mozilla\Firefox\Crash Reports"
|
|
|
|
RemoveLocalFiles2:
|
|
StrCmp $ALLOWMULTIPLEINSTANCES "true" RemoveLocalFiles3
|
|
RMDir /r "$APPDATA\Mozilla\Extensions\"
|
|
Rename "$APPDATA\Mozilla\Extensions-BackupByFirefoxPortable" "$APPDATA\Mozilla\Extensions"
|
|
|
|
RemoveLocalFiles3:
|
|
Delete "$APPDATA\Mozilla\Firefox\pluginreg.dat"
|
|
${If} $bolPendingPingsExists == false
|
|
RMDir /r "$APPDATA\Mozilla\Firefox\Pending Pings\*.*"
|
|
${EndIf}
|
|
|
|
RMDir "$APPDATA\Mozilla\Firefox\Pending Pings\" ;=== Will only delete if empty (no /r switch)
|
|
RMDir "$APPDATA\Mozilla\Firefox\Profiles\" ;=== Will only delete if empty (no /r switch)
|
|
RMDir "$APPDATA\Mozilla\Firefox\Profile\" ;=== Will only delete if empty (no /r switch)
|
|
${RMDirIfNotJunction} "$APPDATA\Mozilla\Firefox\" ;=== Will only delete if empty
|
|
RMDir "$APPDATA\Mozilla\SystemExtensionsDev\" ;=== Will only delete if empty (no /r switch)
|
|
${RMDirIfNotJunction} "$APPDATA\Mozilla\" ;=== Will only delete if empty
|
|
RMDir "$LOCALAPPDATA\Mozilla\Firefox\firefox\updates\0" ;=== Will only delete if empty (no /r switch)
|
|
RMDir "$LOCALAPPDATA\Mozilla\Firefox\firefox\updates" ;=== Will only delete if empty (no /r switch)
|
|
RMDir "$LOCALAPPDATA\Mozilla\Firefox\firefox" ;=== Will only delete if empty (no /r switch)
|
|
${RMDirIfNotJunction} "$LOCALAPPDATA\Mozilla\Firefox\" ;=== Will only delete if empty
|
|
|
|
;Remove empty directories left due to a Firefox updater bug
|
|
${If} ${FileExists} "$LOCALAPPDATA\Mozilla\updates\*.*"
|
|
FindFirst $0 $1 "$LOCALAPPDATA\Mozilla\updates\*.*"
|
|
RemoveLocalFiles3Loop:
|
|
StrCmp $1 "" RemoveLocalFiles3LoopDone
|
|
${If} ${FileExists} "$LOCALAPPDATA\Mozilla\updates\$1\*.*"
|
|
${AndIf} $1 != "."
|
|
${AndIf} $1 != ".."
|
|
RMDir "$LOCALAPPDATA\Mozilla\updates\$1"
|
|
${EndIf}
|
|
FindNext $0 $1
|
|
Goto RemoveLocalFiles3Loop
|
|
RemoveLocalFiles3LoopDone:
|
|
FindClose $0
|
|
${EndIf}
|
|
|
|
${RMDirIfNotJunction} "$LOCALAPPDATA\Mozilla\updates" ;=== Will only delete if empty (no /r switch)
|
|
${RMDirIfNotJunction} "$LOCALAPPDATA\Mozilla\" ;=== Will only delete if empty (no /r switch)
|
|
${RMDirIfNotJunction} "$LOCALAPPDATALow\Mozilla\" ;=== Will only delete if empty (no /r switch)
|
|
|
|
${If} $bolProgramDataMozillaUpdatesExists == false
|
|
RMDir /r "$PROGRAMDATA\Mozilla\updates"
|
|
${EndIf}
|
|
${RMDirIfNotJunction} "$PROGRAMDATA\Mozilla"
|
|
|
|
RMDir "$TEMP\Mozilla\mozilla-temp-files"
|
|
|
|
StrCmp $MOZILLAORGKEYEXISTS "true" RemoveMachineRegistryKey
|
|
${registry::DeleteKey} "HKEY_CURRENT_USER\Software\mozilla.org" $R0
|
|
RemoveMachineRegistryKey:
|
|
StrCmp $HKLMMOZILLAORGKEYEXISTS "true" RemoveOtherKeys
|
|
${registry::KeyExists} "HKLM\Software\mozilla.org" $R0
|
|
StrCmp $R0 "-1" RemoveOtherKeys ;=== If it doesn't exist, skip the next line
|
|
UserInfo::GetAccountType
|
|
Pop $0
|
|
StrCmp $0 "Guest" RemoveOtherKeys
|
|
StrCmp $0 "User" RemoveOtherKeys
|
|
${registry::DeleteKey} "HKLM\Software\mozilla.org" $R0
|
|
RemoveOtherKeys:
|
|
;Store the crash report setting
|
|
${registry::Read} "HKCU\Software\Mozilla\Firefox\Crash Reporter" "SubmitCrashReport" $R1 $R2
|
|
WriteINIStr "$SETTINGSDIRECTORY\${NAME}Settings.ini" "${NAME}Settings" "SubmitCrashReport" "$R1"
|
|
|
|
${If} $bolHKCUSoftwareMozillaExists == true
|
|
${If} $bolHKCUSoftwareMozillaFirefoxExists == true
|
|
${If} $bolHKCUSoftwareMozillaFirefoxCrashReporterExists == true
|
|
${registry::Write} "HKCU\Software\Mozilla\Firefox\Crash Reporter" "SubmitCrashReport" "$SubmitCrashReportBackup" "REG_DWORD" $R1
|
|
${Else}
|
|
${registry::DeleteKey} "HKCU\Software\Mozilla\Firefox\Crash Reporter" $R0
|
|
${EndIf}
|
|
${Else}
|
|
${registry::DeleteKey} "HKCU\Software\Mozilla\Firefox" $R0
|
|
${EndIf}
|
|
${Else}
|
|
${registry::DeleteKey} "HKCU\Software\Mozilla" $R0
|
|
${EndIf}
|
|
|
|
TheEnd:
|
|
${registry::Unload}
|
|
newadvsplash::stop /WAIT
|
|
SectionEnd |