Bug 568949 - Rework Windows installer for 64 bit (install into 'Program Files', write to 64 bit registry hives, etc.). r=rstrong, a=beltzner
This commit is contained in:
@@ -16,7 +16,6 @@
|
||||
!define WindowClass "FirefoxMessageWindow"
|
||||
!define DDEApplication "Firefox"
|
||||
!define AppRegName "Firefox"
|
||||
!define MinSupportedVer "Microsoft Windows 2000"
|
||||
|
||||
!define BrandShortName "@MOZ_APP_DISPLAYNAME@"
|
||||
!define PreReleaseSuffix "@PRE_RELEASE_SUFFIX@"
|
||||
@@ -38,3 +37,14 @@
|
||||
!if "@PRE_RELEASE_SUFFIX@" != ""
|
||||
!define NO_INSTDIR_FROM_REG
|
||||
!endif
|
||||
|
||||
# ARCH is used when it is necessary to differentiate the x64 registry keys from
|
||||
# the x86 registry keys (e.g. the uninstall registry key).
|
||||
#ifdef HAVE_64BIT_OS
|
||||
!define HAVE_64BIT_OS
|
||||
!define ARCH "x64"
|
||||
!define MinSupportedVer "Microsoft Windows Vista x64"
|
||||
#else
|
||||
!define ARCH "x86"
|
||||
!define MinSupportedVer "Microsoft Windows 2000"
|
||||
#endif
|
||||
|
||||
@@ -134,8 +134,11 @@ VIAddVersionKey "OriginalFilename" "setup.exe"
|
||||
|
||||
Name "${BrandFullName}"
|
||||
OutFile "setup.exe"
|
||||
InstallDirRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${BrandFullNameInternal} (${AppVersion})" "InstallLocation"
|
||||
InstallDir "$PROGRAMFILES\${BrandFullName}\"
|
||||
!ifdef HAVE_64BIT_OS
|
||||
InstallDir "$PROGRAMFILES64\${BrandFullName}\"
|
||||
!else
|
||||
InstallDir "$PROGRAMFILES32\${BrandFullName}\"
|
||||
!endif
|
||||
ShowInstDetails nevershow
|
||||
|
||||
################################################################################
|
||||
@@ -248,7 +251,7 @@ Section "-Application" APP_IDX
|
||||
; registered. bug 338878
|
||||
${LogHeader} "DLL Registration"
|
||||
ClearErrors
|
||||
RegDLL "$INSTDIR\AccessibleMarshal.dll"
|
||||
${RegisterDLL} "$INSTDIR\AccessibleMarshal.dll"
|
||||
${If} ${Errors}
|
||||
${LogMsg} "** ERROR Registering: $INSTDIR\AccessibleMarshal.dll **"
|
||||
${Else}
|
||||
@@ -551,7 +554,7 @@ Function CustomAbort
|
||||
${Else}
|
||||
UAC::ExecCodeSegment $0
|
||||
${EndIf}
|
||||
|
||||
|
||||
CustomAbort_finish:
|
||||
Return
|
||||
${EndUnless}
|
||||
@@ -1002,8 +1005,7 @@ Function .onInit
|
||||
|
||||
; There must always be a core directory.
|
||||
${GetSize} "$EXEDIR\core\" "/S=0K" $R5 $R7 $R8
|
||||
IntOp $R8 $R5 + $R6
|
||||
SectionSetSize ${APP_IDX} $R8
|
||||
SectionSetSize ${APP_IDX} $R5
|
||||
|
||||
; Initialize $hHeaderBitmap to prevent redundant changing of the bitmap if
|
||||
; the user clicks the back button
|
||||
|
||||
@@ -289,7 +289,7 @@
|
||||
WriteRegStr HKLM "$0\Capabilities" "ApplicationIcon" "$8,0"
|
||||
WriteRegStr HKLM "$0\Capabilities" "ApplicationName" "${BrandShortName}"
|
||||
|
||||
WriteRegStr HKLM "$0\Capabilities\FileAssociations" ".htm" "FirefoxHTML"
|
||||
WriteRegStr HKLM "$0\Capabilities\FileAssociations" ".htm" "FirefoxHTML"
|
||||
WriteRegStr HKLM "$0\Capabilities\FileAssociations" ".html" "FirefoxHTML"
|
||||
WriteRegStr HKLM "$0\Capabilities\FileAssociations" ".shtml" "FirefoxHTML"
|
||||
WriteRegStr HKLM "$0\Capabilities\FileAssociations" ".xht" "FirefoxHTML"
|
||||
@@ -331,7 +331,7 @@
|
||||
${WriteRegStr2} $TmpVal "$0" "PathToExe" "$8\${FileMainEXE}" 0
|
||||
|
||||
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}\${AppVersion} (${AB_CD})\Uninstall"
|
||||
${WriteRegStr2} $TmpVal "$0" "Description" "${BrandFullNameInternal} (${AppVersion})" 0
|
||||
${WriteRegStr2} $TmpVal "$0" "Description" "${BrandFullNameInternal} ${AppVersion} (${ARCH} ${AB_CD})" 0
|
||||
|
||||
StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}\${AppVersion} (${AB_CD})"
|
||||
${WriteRegStr2} $TmpVal "$0" "" "${AppVersion} (${AB_CD})" 0
|
||||
@@ -355,7 +355,7 @@
|
||||
; 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} (${AppVersion})"
|
||||
StrCpy $0 "Software\Microsoft\Windows\CurrentVersion\Uninstall\${BrandFullNameInternal} ${AppVersion} (${ARCH} ${AB_CD})"
|
||||
|
||||
WriteRegStr HKLM "$0" "${BrandShortName}InstallerTest" "Write Test"
|
||||
${If} ${Errors}
|
||||
@@ -370,10 +370,10 @@
|
||||
${GetLongPath} "$INSTDIR" $8
|
||||
|
||||
; Write the uninstall registry keys
|
||||
${WriteRegStr2} $1 "$0" "Comments" "${BrandFullNameInternal}" 0
|
||||
${WriteRegStr2} $1 "$0" "Comments" "${BrandFullNameInternal} ${AppVersion} (${ARCH} ${AB_CD})" 0
|
||||
${WriteRegStr2} $1 "$0" "DisplayIcon" "$8\${FileMainEXE},0" 0
|
||||
${WriteRegStr2} $1 "$0" "DisplayName" "${BrandFullNameInternal} (${AppVersion})" 0
|
||||
${WriteRegStr2} $1 "$0" "DisplayVersion" "${AppVersion} (${AB_CD})" 0
|
||||
${WriteRegStr2} $1 "$0" "DisplayName" "${BrandFullNameInternal} ${AppVersion} (${ARCH} ${AB_CD})" 0
|
||||
${WriteRegStr2} $1 "$0" "DisplayVersion" "${AppVersion}" 0
|
||||
${WriteRegStr2} $1 "$0" "InstallLocation" "$8" 0
|
||||
${WriteRegStr2} $1 "$0" "Publisher" "Mozilla" 0
|
||||
${WriteRegStr2} $1 "$0" "UninstallString" "$8\uninstall\helper.exe" 0
|
||||
@@ -382,6 +382,9 @@
|
||||
${WriteRegDWORD2} $1 "$0" "NoModify" 1 0
|
||||
${WriteRegDWORD2} $1 "$0" "NoRepair" 1 0
|
||||
|
||||
${GetSize} "$8" "/S=0K" $R2 $R3 $R4
|
||||
${WriteRegDWORD2} $1 "$0" "EstimatedSize" $R2 0
|
||||
|
||||
${If} "$TmpVal" == "HKLM"
|
||||
SetShellVarContext all ; Set SHCTX to all users (e.g. HKLM)
|
||||
${Else}
|
||||
|
||||
@@ -70,6 +70,7 @@ Var TmpVal
|
||||
!include WinVer.nsh
|
||||
!include WordFunc.nsh
|
||||
|
||||
!insertmacro GetSize
|
||||
!insertmacro StrFilter
|
||||
!insertmacro WordReplace
|
||||
|
||||
@@ -133,11 +134,15 @@ VIAddVersionKey "OriginalFilename" "helper.exe"
|
||||
!insertmacro UninstallOnInitCommon
|
||||
|
||||
!insertmacro un.OnEndCommon
|
||||
!insertmacro un.UninstallUnOnInitCommon
|
||||
|
||||
Name "${BrandFullName}"
|
||||
OutFile "helper.exe"
|
||||
InstallDirRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${BrandFullNameInternal} (${AppVersion})" "InstallLocation"
|
||||
InstallDir "$PROGRAMFILES\${BrandFullName}"
|
||||
!ifdef HAVE_64BIT_OS
|
||||
InstallDir "$PROGRAMFILES64\${BrandFullName}\"
|
||||
!else
|
||||
InstallDir "$PROGRAMFILES32\${BrandFullName}\"
|
||||
!endif
|
||||
ShowUnInstDetails nevershow
|
||||
|
||||
################################################################################
|
||||
@@ -209,7 +214,7 @@ Section "Uninstall"
|
||||
${If} ${Errors}
|
||||
; If the user closed the application it can take several seconds for it to
|
||||
; shut down completely. If the application is being used by another user we
|
||||
; can still delete the files when the system is restarted.
|
||||
; can still delete the files when the system is restarted.
|
||||
Sleep 5000
|
||||
${DeleteFile} "$INSTDIR\${FileMainEXE}"
|
||||
ClearErrors
|
||||
@@ -571,18 +576,9 @@ Function .onInit
|
||||
FunctionEnd
|
||||
|
||||
Function un.onInit
|
||||
${un.GetParent} "$INSTDIR" $INSTDIR
|
||||
${un.GetLongPath} "$INSTDIR" $INSTDIR
|
||||
${Unless} ${FileExists} "$INSTDIR\${FileMainEXE}"
|
||||
Abort
|
||||
${EndUnless}
|
||||
|
||||
StrCpy $LANGUAGE 0
|
||||
${un.SetBrandNameVars} "$INSTDIR\distribution\setup.ini"
|
||||
|
||||
; Initialize $hHeaderBitmap to prevent redundant changing of the bitmap if
|
||||
; the user clicks the back button
|
||||
StrCpy $hHeaderBitmap ""
|
||||
${un.UninstallUnOnInitCommon}
|
||||
|
||||
!insertmacro InitInstallOptionsFile "unconfirm.ini"
|
||||
FunctionEnd
|
||||
|
||||
Reference in New Issue
Block a user