Bug 1328445 Part 2 - Streamlined stub installer
authorMatt Howell <mhowell@mozilla.com>
Thu, 12 Jan 2017 13:23:22 -0800
changeset 491587 afca607e9cac2b3ed2d59c970943c165556ee176
parent 491586 f0f776eb939b284ba54ac03788e24f246c27dd85
child 491588 c536152a9cb6f3f7a1a1a6611df0f2fbf9732489
push id47343
push userbmo:dothayer@mozilla.com
push dateWed, 01 Mar 2017 22:58:58 +0000
bugs1328445
milestone53.0a1
Bug 1328445 Part 2 - Streamlined stub installer
browser/branding/aurora/appname.bmp
browser/branding/aurora/bgintro.bmp
browser/branding/aurora/clock.bmp
browser/branding/aurora/particles.bmp
browser/branding/aurora/pencil-rtl.bmp
browser/branding/aurora/pencil.bmp
browser/branding/branding-common.mozbuild
browser/branding/nightly/appname.bmp
browser/branding/nightly/bgintro.bmp
browser/branding/nightly/clock.bmp
browser/branding/nightly/particles.bmp
browser/branding/nightly/pencil-rtl.bmp
browser/branding/nightly/pencil.bmp
browser/branding/official/appname.bmp
browser/branding/official/bgintro.bmp
browser/branding/official/clock.bmp
browser/branding/official/particles.bmp
browser/branding/official/pencil-rtl.bmp
browser/branding/official/pencil.bmp
browser/branding/unofficial/appname.bmp
browser/branding/unofficial/bgintro.bmp
browser/branding/unofficial/clock.bmp
browser/branding/unofficial/particles.bmp
browser/branding/unofficial/pencil-rtl.bmp
browser/branding/unofficial/pencil.bmp
browser/installer/windows/Makefile.in
browser/installer/windows/nsis/defines.nsi.in
browser/installer/windows/nsis/oneoff_en-US.nsh
browser/installer/windows/nsis/stub.nsi
browser/locales/en-US/installer/nsisstrings.properties
toolkit/mozapps/installer/windows/nsis/locale-fonts.nsh
deleted file mode 100644
index 904794ddbe7d2f219fae0817b8d2693d8e37a146..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 02ef9b3360a917ccf6546d75845a5c6c0651819d..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index c74398edbccbc68bfdf1a4c9578f90713ab36008..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index ab74ce04716e6f5d02e80c9eed297c4c939d83d6..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index e50d92db7c91275bbb90e07e263970ce9a6e1479..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 252c10f417c79fcb674e6b8cbccb70da82536b3a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
--- a/browser/branding/branding-common.mozbuild
+++ b/browser/branding/branding-common.mozbuild
@@ -14,28 +14,24 @@ def FirefoxBranding():
         FINAL_TARGET_FILES['..'] += [
             'firefox.VisualElementsManifest.xml',
         ]
         FINAL_TARGET_FILES.VisualElements += [
             'VisualElements_150.png',
             'VisualElements_70.png',
         ]
         BRANDING_FILES += [
-            'appname.bmp',
-            'bgintro.bmp',
+            'bgstub.bmp',
             'branding.nsi',
-            'clock.bmp',
             'document.ico',
             'firefox.ico',
+            'firefox64.ico',
             'newtab.ico',
             'newwindow.ico',
-            'particles.bmp',
             'pbmode.ico',
-            'pencil-rtl.bmp',
-            'pencil.bmp',
             'wizHeader.bmp',
             'wizHeaderRTL.bmp',
             'wizWatermark.bmp',
          ]
     elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
         BRANDING_FILES += [
             'background.png',
             'disk.icns',
deleted file mode 100644
index fc1b6343c4b1c5733329342ffcd4eb0d6f386f3f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 777ab2e8489a5173b6f9c6350271898602dbebff..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index c74398edbccbc68bfdf1a4c9578f90713ab36008..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index ab74ce04716e6f5d02e80c9eed297c4c939d83d6..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index e50d92db7c91275bbb90e07e263970ce9a6e1479..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 252c10f417c79fcb674e6b8cbccb70da82536b3a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 1c2f44cf3776a5f7c9748effcf0acc9e2ba6ae1f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 9c2fc80cf9ed85e92e6ee923cea7afe1ca64d928..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 7da034d3bac2a70c5b847bbeb6e36440fb03354c..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index d523606c23f808a53b6536542fac374381fd4e2b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 67d2fe5d25468b89bd1beb6bb63fab3c6ea94d47..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 7dd55741f918f27a8dd909c39adfeff92609d487..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 1ee08c9445beb7638bc872bc20b99b8ef50cc6ec..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 9f2a0a6e03520829ec9c06063624b29301dca7fe..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index c74398edbccbc68bfdf1a4c9578f90713ab36008..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index ab74ce04716e6f5d02e80c9eed297c4c939d83d6..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index e50d92db7c91275bbb90e07e263970ce9a6e1479..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 252c10f417c79fcb674e6b8cbccb70da82536b3a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
--- a/browser/installer/windows/Makefile.in
+++ b/browser/installer/windows/Makefile.in
@@ -18,23 +18,19 @@ INSTALLER_FILES = \
 
 ifdef MOZ_MAINTENANCE_SERVICE
 INSTALLER_FILES += \
 	nsis/maintenanceservice_installer.nsi \
 	$(NULL)
 endif
 
 BRANDING_FILES = \
+	bgstub.bmp \
 	branding.nsi \
-	appname.bmp \
-	bgintro.bmp \
-	clock.bmp \
-	particles.bmp \
-	pencil.bmp \
-	pencil-rtl.bmp \
+	firefox64.ico \
 	wizHeader.bmp \
 	wizHeaderRTL.bmp \
 	wizWatermark.bmp \
 	$(NULL)
 
 include $(topsrcdir)/config/config.mk
 
 ifdef LOCALE_MERGEDIR
@@ -85,16 +81,13 @@ endif
 	  $(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)
 	$(PYTHON) $(topsrcdir)/toolkit/mozapps/installer/windows/nsis/preprocess-locale.py \
 	  --preprocess-single-file $(topsrcdir) \
 	  $(PPL_LOCALE_ARGS) $(CONFIG_DIR) \
 	  nsisstrings.properties nsisstrings.nlf
-	$(PYTHON) $(topsrcdir)/toolkit/mozapps/installer/windows/nsis/preprocess-locale.py \
-	  --convert-utf8-utf16le \
-	  $(srcdir)/nsis/oneoff_en-US.nsh $(CONFIG_DIR)/oneoff_en-US.nsh
 
 GARBARGE_DIRS += instgen
 
 include $(topsrcdir)/config/rules.mk
 include $(topsrcdir)/toolkit/mozapps/installer/windows/nsis/makensis.mk
--- a/browser/installer/windows/nsis/defines.nsi.in
+++ b/browser/installer/windows/nsis/defines.nsi.in
@@ -100,11 +100,14 @@ VIAddVersionKey "ProductVersion"  "${App
 !define APPROXIMATE_REQUIRED_SPACE_MB "145"
 
 # Control positions in Dialog Units so they are placed correctly with
 # non-default DPI settings
 !define OPTIONS_ITEM_EDGE_DU 90u
 !define OPTIONS_ITEM_WIDTH_DU 356u
 !define OPTIONS_SUBITEM_EDGE_DU 119u
 !define OPTIONS_SUBITEM_WIDTH_DU 327u
-!define INSTALL_BLURB_TOP_DU 78u
+!define NOW_INSTALLING_TOP_DU 70u
+!define INSTALL_BLURB_TOP_DU 137u
+!define INSTALL_FOOTER_TOP_DU -48u
+!define PROGRESS_BAR_TOP_DU 112u
 !define APPNAME_BMP_EDGE_DU 19u
 !define APPNAME_BMP_TOP_DU 12u
deleted file mode 100644
--- a/browser/installer/windows/nsis/oneoff_en-US.nsh
+++ /dev/null
@@ -1,12 +0,0 @@
-# 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/.
-
-; Custom strings for en-US. This is not in the locale directory so these strings
-; aren't translated.
-!define INDENT "     "
-!define INTRO_BLURB "Thanks for choosing $BrandFullName. We’re not just designed to be different, we’re different by design."
-!define INSTALL_BLURB1 "You're about to enjoy the very latest in speed, flexibility and security so you're always in control."
-!define INSTALL_BLURB2 "And you're joining a global community of users, contributors and developers working to make the best browser in the world."
-!define INSTALL_BLURB3 "You even get a haiku:$\n${INDENT}Proudly non-profit$\n${INDENT}Free to innovate for you$\n${INDENT}And a better Web"
-!undef INDENT
--- a/browser/installer/windows/nsis/stub.nsi
+++ b/browser/installer/windows/nsis/stub.nsi
@@ -26,67 +26,51 @@ RequestExecutionLevel user
   ManifestDPIAware true
 !endif
 
 !addplugindir ./
 
 Var Dialog
 Var Progressbar
 Var ProgressbarMarqueeIntervalMS
-Var LabelDownloading
-Var LabelInstalling
-Var LabelFreeSpace
 Var CheckboxSetAsDefault
 Var CheckboxShortcutOnBar ; Used for Quicklaunch or Taskbar as appropriate
 Var CheckboxShortcutInStartMenu
 Var CheckboxShortcutOnDesktop
 Var CheckboxSendPing
 Var CheckboxInstallMaintSvc
-Var DirRequest
-Var ButtonBrowse
-Var LabelBlurb1
-Var LabelBlurb2
-Var LabelBlurb3
-Var BitmapBlurb1
-Var BitmapBlurb2
-Var BitmapBlurb3
-Var HwndBitmapBlurb1
-Var HwndBitmapBlurb2
-Var HWndBitmapBlurb3
+Var LabelBlurb
+Var BgBitmapImage
+Var HwndBgBitmapControl
+Var CurrentBlurbIdx
 
-Var FontNormal
-Var FontItalic
+Var FontInstalling
 Var FontBlurb
+Var FontFooter
 
-Var WasOptionsButtonClicked
 Var CanWriteToInstallDir
 Var HasRequiredSpaceAvailable
 Var IsDownloadFinished
 Var DownloadSizeBytes
 Var HalfOfDownload
 Var DownloadReset
 Var ExistingTopDir
 Var SpaceAvailableBytes
 Var InitialInstallDir
 Var HandleDownload
 Var CanSetAsDefault
 Var InstallCounterStep
 Var InstallStepSize
 Var InstallTotalSteps
 Var ProgressCompleted
 Var ProgressTotal
-Var TmpVal
 
 Var ExitCode
 Var FirefoxLaunchCode
 
-; The first three tick counts are for the start of a phase and equate equate to
-; the display of individual installer pages.
-Var StartIntroPhaseTickCount
-Var StartOptionsPhaseTickCount
 Var StartDownloadPhaseTickCount
 ; Since the Intro and Options pages can be displayed multiple times the total
 ; seconds spent on each of these pages is reported.
 Var IntroPhaseSeconds
 Var OptionsPhaseSeconds
 ; The tick count for the last download.
 Var StartLastDownloadTickCount
 ; The number of seconds from the start of the download phase until the first
@@ -104,19 +88,16 @@ Var ExistingProfile
 Var ExistingVersion
 Var ExistingBuildID
 Var DownloadedBytes
 Var DownloadRetryCount
 Var OpenedDownloadPage
 Var DownloadServerIP
 Var PostSigningData
 
-Var ControlHeightPX
-Var ControlRightPX
-
 ; Uncomment the following to prevent pinging the metrics server when testing
 ; the stub installer
 ;!define STUB_DEBUG
 
 !define StubURLVersion "v7"
 
 ; Successful install exit code
 !define ERR_SUCCESS 0
@@ -194,16 +175,20 @@ Var ControlRightPX
 ; as defined by InstallProgressFirstStep.
 !define /math InstallCleanTotalSteps ${InstallProgressFirstStep} + 1500
 
 ; Approximately 165 seconds (minus 0.2 seconds for each file that is removed)
 ; with a 100 millisecond timer and a first step of 20 as defined by
 ; InstallProgressFirstStep .
 !define /math InstallPaveOverTotalSteps ${InstallProgressFirstStep} + 1800
 
+; Blurb duty cycle
+!define BlurbDisplayMS 19500
+!define BlurbBlankMS 500
+
 ; On Vista and above attempt to elevate Standard Users in addition to users that
 ; are a member of the Administrators group.
 !define NONADMIN_ELEVATE
 
 !define CONFIG_INI "config.ini"
 
 !ifndef FILE_SHARE_READ
   !define FILE_SHARE_READ 1
@@ -247,36 +232,38 @@ Var ControlRightPX
 !define URLStubDownload "http://download.mozilla.org/?os=win&lang=${AB_CD}&product=firefox-beta-latest"
 !undef URLManualDownload
 !define URLManualDownload "https://www.mozilla.org/${AB_CD}/firefox/installer-help/?channel=beta&installer_lang=${AB_CD}"
 !undef Channel
 !define Channel "beta"
 !endif
 !endif
 
+!undef INSTALL_BLURB_TEXT_COLOR
+!define INSTALL_BLURB_TEXT_COLOR 0xFFFFFF
+
 !include "common.nsh"
 
 !insertmacro ElevateUAC
 !insertmacro GetLongPath
 !insertmacro GetPathFromString
 !insertmacro GetParent
 !insertmacro GetSingleInstallPath
 !insertmacro GetTextWidthHeight
-!insertmacro IsUserAdmin
 !insertmacro RemovePrecompleteEntries
 !insertmacro SetBrandNameVars
 !insertmacro ITBL3Create
 !insertmacro UnloadUAC
 
-VIAddVersionKey "FileDescription" "${BrandShortName} Stub Installer"
+VIAddVersionKey "FileDescription" "${BrandShortName} Installer"
 VIAddVersionKey "OriginalFilename" "setup-stub.exe"
 
 Name "$BrandFullName"
 OutFile "setup-stub.exe"
-icon "setup.ico"
+Icon "firefox64.ico"
 XPStyle on
 BrandingText " "
 ChangeUI all "nsisui.exe"
 !ifdef HAVE_64BIT_BUILD
   InstallDir "$PROGRAMFILES64\${BrandFullName}\"
 !else
   InstallDir "$PROGRAMFILES32\${BrandFullName}\"
 !endif
@@ -284,31 +271,18 @@ ChangeUI all "nsisui.exe"
 !ifdef ${AB_CD}_rtl
   LoadLanguageFile "locale-rtl.nlf"
 !else
   LoadLanguageFile "locale.nlf"
 !endif
 
 !include "nsisstrings.nlf"
 
-!if "${AB_CD}" == "en-US"
-  ; Custom strings for en-US. This is done here so they aren't translated.
-  !include oneoff_en-US.nsh
-!else
-  !define INTRO_BLURB "$(INTRO_BLURB1)"
-  !define INSTALL_BLURB1 "$(INSTALL_BLURB1)"
-  !define INSTALL_BLURB2 "$(INSTALL_BLURB2)"
-  !define INSTALL_BLURB3 "$(INSTALL_BLURB3)"
-!endif
+Caption "$(INSTALLER_WIN_CAPTION)"
 
-Caption "$(WIN_CAPTION)"
-
-Page custom createDummy ; Needed to enable the Intro page's back button
-Page custom createIntro leaveIntro ; Introduction page
-Page custom createOptions leaveOptions ; Options page
 Page custom createInstall ; Download / Installation page
 
 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 "")'
 
   StrCpy $LANGUAGE 0
@@ -435,16 +409,17 @@ Function .onInit
   ; and below.
   ${If} ${Errors}
   ${OrIf} ${AtLeastWin8}
     StrCpy $CanSetAsDefault "false"
     StrCpy $CheckboxSetAsDefault "0"
   ${Else}
     DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest"
     StrCpy $CanSetAsDefault "true"
+    StrCpy $CheckboxSetAsDefault "1"
   ${EndIf}
 
   ; The interval in MS used for the progress bars set as marquee.
   ${If} ${AtLeastWinVista}
     StrCpy $ProgressbarMarqueeIntervalMS "10"
   ${Else}
     StrCpy $ProgressbarMarqueeIntervalMS "50"
   ${EndIf}
@@ -462,17 +437,16 @@ Function .onInit
   StrCpy $CheckboxShortcutInStartMenu "1"
   StrCpy $CheckboxShortcutOnDesktop "1"
   StrCpy $CheckboxSendPing "1"
 !ifdef MOZ_MAINTENANCE_SERVICE
   StrCpy $CheckboxInstallMaintSvc "1"
 !else
   StrCpy $CheckboxInstallMaintSvc "0"
 !endif
-  StrCpy $WasOptionsButtonClicked "0"
 
   StrCpy $0 ""
 !ifdef FONT_FILE1
   ${If} ${FileExists} "$FONTS\${FONT_FILE1}"
     StrCpy $0 "${FONT_NAME1}"
   ${EndIf}
 !endif
 
@@ -482,31 +456,22 @@ Function .onInit
     StrCpy $0 "${FONT_NAME2}"
   ${EndIf}
 !endif
 
   ${If} $0 == ""
     StrCpy $0 "$(^Font)"
   ${EndIf}
 
-  CreateFont $FontBlurb "$0" "12" "500"
-  CreateFont $FontNormal "$0" "11" "500"
-  CreateFont $FontItalic "$0" "11" "500" /ITALIC
+  CreateFont $FontInstalling "$0" "28" "400"
+  CreateFont $FontBlurb      "$0" "15" "400"
+  CreateFont $FontFooter     "$0" "13" "400"
 
   InitPluginsDir
-  File /oname=$PLUGINSDIR\bgintro.bmp "bgintro.bmp"
-  File /oname=$PLUGINSDIR\appname.bmp "appname.bmp"
-  File /oname=$PLUGINSDIR\clock.bmp "clock.bmp"
-  File /oname=$PLUGINSDIR\particles.bmp "particles.bmp"
-!ifdef ${AB_CD}_rtl
-  ; The horizontally flipped pencil looks better in RTL
-  File /oname=$PLUGINSDIR\pencil.bmp "pencil-rtl.bmp"
-!else
-  File /oname=$PLUGINSDIR\pencil.bmp "pencil.bmp"
-!endif
+  File /oname=$PLUGINSDIR\bgstub.bmp "bgstub.bmp"
 FunctionEnd
 
 ; .onGUIInit isn't needed except for RTL locales
 !ifdef ${AB_CD}_rtl
 Function .onGUIInit
   ; Since NSIS RTL support doesn't mirror progress bars use Windows mirroring.
   ${NSD_AddExStyle} $HWNDPARENT ${WS_EX_LAYOUTRTL}
   ${RemoveExStyle} $HWNDPARENT ${WS_EX_RTLREADING}
@@ -525,16 +490,18 @@ FunctionEnd
 
 Function .onUserAbort
   ${NSD_KillTimer} StartDownload
   ${NSD_KillTimer} OnDownload
   ${NSD_KillTimer} CheckInstall
   ${NSD_KillTimer} FinishInstall
   ${NSD_KillTimer} FinishProgressBar
   ${NSD_KillTimer} DisplayDownloadError
+  ${NSD_KillTimer} NextBlurb
+  ${NSD_KillTimer} ClearBlurb
 
   ${If} "$IsDownloadFinished" != ""
     Call DisplayDownloadError
     ; Aborting the abort will allow SendPing which is called by
     ; DisplayDownloadError to hide the installer window and close the installer
     ; after it sends the metrics ping.
     Abort
   ${EndIf}
@@ -789,99 +756,17 @@ Function SendPing
     ${EndIf}
     ; The following will exit the installer
     SetAutoClose true
     StrCpy $R9 "2"
     Call RelativeGotoPage
   ${EndIf}
 FunctionEnd
 
-Function createDummy
-FunctionEnd
-
-Function createIntro
-  nsDialogs::Create /NOUNLOAD 1018
-  Pop $Dialog
-
-  GetFunctionAddress $0 OnBack
-  nsDialogs::OnBack /NOUNLOAD $0
-
-!ifdef ${AB_CD}_rtl
-  ; For RTL align the text with the top of the F in the Firefox bitmap
-  StrCpy $0 "${INTRO_BLURB_RTL_TOP_DU}"
-!else
-  ; For LTR align the text with the top of the x in the Firefox bitmap
-  StrCpy $0 "${INTRO_BLURB_LTR_TOP_DU}"
-!endif
-  ${NSD_CreateLabel} ${INTRO_BLURB_EDGE_DU} $0 ${INTRO_BLURB_WIDTH_DU} 76u "${INTRO_BLURB}"
-  Pop $0
-  SendMessage $0 ${WM_SETFONT} $FontBlurb 0
-  SetCtlColors $0 ${INTRO_BLURB_TEXT_COLOR} transparent
-
-  SetCtlColors $HWNDPARENT ${FOOTER_CONTROL_TEXT_COLOR_NORMAL} ${FOOTER_BKGRD_COLOR}
-  GetDlgItem $0 $HWNDPARENT 10 ; Default browser checkbox
-  ${If} "$CanSetAsDefault" == "true"
-    ; The uxtheme must be disabled on checkboxes in order to override the
-    ; system font color.
-    System::Call 'uxtheme::SetWindowTheme(i $0 , w " ", w " ")'
-    SendMessage $0 ${WM_SETFONT} $FontNormal 0
-    SendMessage $0 ${WM_SETTEXT} 0 "STR:$(MAKE_DEFAULT)"
-    SendMessage $0 ${BM_SETCHECK} 1 0
-    SetCtlColors $0 ${FOOTER_CONTROL_TEXT_COLOR_NORMAL} ${FOOTER_BKGRD_COLOR}
-  ${Else}
-    ShowWindow $0 ${SW_HIDE}
-  ${EndIf}
-  GetDlgItem $0 $HWNDPARENT 11
-  ShowWindow $0 ${SW_HIDE}
-
-  ${NSD_CreateBitmap} ${APPNAME_BMP_EDGE_DU} ${APPNAME_BMP_TOP_DU} \
-                      ${APPNAME_BMP_WIDTH_DU} ${APPNAME_BMP_HEIGHT_DU} ""
-  Pop $2
-  ${SetStretchedTransparentImage} $2 $PLUGINSDIR\appname.bmp $0
-
-  ${NSD_CreateBitmap} 0 0 100% 100% ""
-  Pop $2
-  ${NSD_SetStretchedImage} $2 $PLUGINSDIR\bgintro.bmp $1
-
-  GetDlgItem $0 $HWNDPARENT 1 ; Install button
-  ${If} ${FileExists} "$INSTDIR\${FileMainEXE}"
-    SendMessage $0 ${WM_SETTEXT} 0 "STR:$(UPGRADE_BUTTON)"
-  ${Else}
-    SendMessage $0 ${WM_SETTEXT} 0 "STR:$(INSTALL_BUTTON)"
-  ${EndIf}
-  ${NSD_SetFocus} $0
-
-  GetDlgItem $0 $HWNDPARENT 2 ; Cancel button
-  SendMessage $0 ${WM_SETTEXT} 0 "STR:$(CANCEL_BUTTON)"
-
-  GetDlgItem $0 $HWNDPARENT 3 ; Back button used for Options
-  SendMessage $0 ${WM_SETTEXT} 0 "STR:$(OPTIONS_BUTTON)"
-
-  System::Call "kernel32::GetTickCount()l .s"
-  Pop $StartIntroPhaseTickCount
-
-  LockWindow off
-  nsDialogs::Show
-
-  ${NSD_FreeImage} $0
-  ${NSD_FreeImage} $1
-FunctionEnd
-
-Function leaveIntro
-  LockWindow on
-
-  System::Call "kernel32::GetTickCount()l .s"
-  Pop $0
-  ${GetSecondsElapsed} "$StartIntroPhaseTickCount" "$0" $IntroPhaseSeconds
-  ; It is possible for this value to be 0 if the user clicks fast enough so
-  ; increment the value by 1 if it is 0.
-  ${If} $IntroPhaseSeconds == 0
-    IntOp $IntroPhaseSeconds $IntroPhaseSeconds + 1
-  ${EndIf}
-
+Function createInstall
   SetShellVarContext all ; Set SHCTX to All Users
   ; If the user doesn't have write access to the installation directory set
   ; the installation directory to a subdirectory of the All Users application
   ; directory and if the user can't write to that location set the installation
   ; directory to a subdirectory of the users local application directory
   ; (e.g. non-roaming).
   Call CanWrite
   ${If} "$CanWriteToInstallDir" == "false"
@@ -898,426 +783,115 @@ Function leaveIntro
 
   Call CheckSpace
 
   ${If} ${FileExists} "$INSTDIR"
     ; Always display the long path if the path exists.
     ${GetLongPath} "$INSTDIR" $INSTDIR
   ${EndIf}
 
-FunctionEnd
-
-Function createOptions
   ; Check whether the install requirements are satisfied using the default
   ; values for metrics.
   ${If} "$InitialInstallRequirementsCode" == ""
     ${If} "$CanWriteToInstallDir" != "true"
     ${AndIf} "$HasRequiredSpaceAvailable" != "true"
       StrCpy $InitialInstallRequirementsCode "1"
     ${ElseIf} "$CanWriteToInstallDir" != "true"
       StrCpy $InitialInstallRequirementsCode "2"
     ${ElseIf} "$HasRequiredSpaceAvailable" != "true"
       StrCpy $InitialInstallRequirementsCode "3"
     ${Else}
       StrCpy $InitialInstallRequirementsCode "0"
     ${EndIf}
   ${EndIf}
 
-  ; Skip the options page unless the Options button was clicked as long as the
-  ; installation directory can be written to and there is the minimum required
-  ; space available.
-  ${If} "$WasOptionsButtonClicked" != "1"
-    ${If} "$CanWriteToInstallDir" == "true"
-    ${AndIf} "$HasRequiredSpaceAvailable" == "true"
-      Abort ; Skip the options page
-    ${EndIf}
-  ${EndIf}
-
-  StrCpy $ExistingTopDir ""
-
-  nsDialogs::Create /NOUNLOAD 1018
-  Pop $Dialog
-  ; Since the text color for controls is set in this Dialog the foreground and
-  ; background colors of the Dialog must also be hardcoded.
-  SetCtlColors $Dialog ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR}
-
-  ${NSD_CreateLabel} ${OPTIONS_ITEM_EDGE_DU} 18u ${OPTIONS_ITEM_WIDTH_DU} \
-                     12u "$(CREATE_SHORTCUTS)"
-  Pop $0
-  SetCtlColors $0 ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR}
-  SendMessage $0 ${WM_SETFONT} $FontNormal 0
-
-  ${If} ${AtLeastWin7}
-    StrCpy $0 "$(ADD_SC_TASKBAR)"
-  ${Else}
-    StrCpy $0 "$(ADD_SC_QUICKLAUNCHBAR)"
-  ${EndIf}
-  ${NSD_CreateCheckbox} ${OPTIONS_SUBITEM_EDGE_DU} 38u \
-                        ${OPTIONS_SUBITEM_WIDTH_DU} 12u "$0"
-  Pop $CheckboxShortcutOnBar
-  ; The uxtheme must be disabled on checkboxes in order to override the system
-  ; font color.
-  System::Call 'uxtheme::SetWindowTheme(i $CheckboxShortcutOnBar, w " ", w " ")'
-  SetCtlColors $CheckboxShortcutOnBar ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR}
-  SendMessage $CheckboxShortcutOnBar ${WM_SETFONT} $FontNormal 0
-  ${NSD_Check} $CheckboxShortcutOnBar
-
-  ${NSD_CreateCheckbox} ${OPTIONS_SUBITEM_EDGE_DU} 54u ${OPTIONS_SUBITEM_WIDTH_DU} \
-                        12u "$(ADD_CheckboxShortcutInStartMenu)"
-  Pop $CheckboxShortcutInStartMenu
-  ; The uxtheme must be disabled on checkboxes in order to override the system
-  ; font color.
-  System::Call 'uxtheme::SetWindowTheme(i $CheckboxShortcutInStartMenu, w " ", w " ")'
-  SetCtlColors $CheckboxShortcutInStartMenu ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR}
-  SendMessage $CheckboxShortcutInStartMenu ${WM_SETFONT} $FontNormal 0
-  ${NSD_Check} $CheckboxShortcutInStartMenu
-
-  ${NSD_CreateCheckbox} ${OPTIONS_SUBITEM_EDGE_DU} 70u ${OPTIONS_SUBITEM_WIDTH_DU} \
-                        12u "$(ADD_CheckboxShortcutOnDesktop)"
-  Pop $CheckboxShortcutOnDesktop
-  ; The uxtheme must be disabled on checkboxes in order to override the system
-  ; font color.
-  System::Call 'uxtheme::SetWindowTheme(i $CheckboxShortcutOnDesktop, w " ", w " ")'
-  SetCtlColors $CheckboxShortcutOnDesktop ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR}
-  SendMessage $CheckboxShortcutOnDesktop ${WM_SETFONT} $FontNormal 0
-  ${NSD_Check} $CheckboxShortcutOnDesktop
-
-  ${NSD_CreateLabel} ${OPTIONS_ITEM_EDGE_DU} 100u ${OPTIONS_ITEM_WIDTH_DU} \
-                     12u "$(DEST_FOLDER)"
-  Pop $0
-  SetCtlColors $0 ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR}
-  SendMessage $0 ${WM_SETFONT} $FontNormal 0
-
-  ${NSD_CreateDirRequest} ${OPTIONS_SUBITEM_EDGE_DU} 116u 159u 14u "$INSTDIR"
-  Pop $DirRequest
-  SetCtlColors $DirRequest ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR}
-  SendMessage $DirRequest ${WM_SETFONT} $FontNormal 0
-  System::Call shlwapi::SHAutoComplete(i $DirRequest, i ${SHACF_FILESYSTEM})
-  ${NSD_OnChange} $DirRequest OnChange_DirRequest
-
-!ifdef ${AB_CD}_rtl
-  ; Remove the RTL styling from the directory request text box
-  ${RemoveStyle} $DirRequest ${SS_RIGHT}
-  ${RemoveExStyle} $DirRequest ${WS_EX_RIGHT}
-  ${RemoveExStyle} $DirRequest ${WS_EX_RTLREADING}
-  ${NSD_AddStyle} $DirRequest ${SS_LEFT}
-  ${NSD_AddExStyle} $DirRequest ${WS_EX_LTRREADING}|${WS_EX_LEFT}
-!endif
-
-  ${NSD_CreateBrowseButton} 280u 116u 50u 14u "$(BROWSE_BUTTON)"
-  Pop $ButtonBrowse
-  SetCtlColors $ButtonBrowse "" ${COMMON_BKGRD_COLOR}
-  ${NSD_OnClick} $ButtonBrowse OnClick_ButtonBrowse
-
-  ; Get the number of pixels from the left of the Dialog to the right side of
-  ; the "Space Required:" and "Space Available:" labels prior to setting RTL so
-  ; the correct position of the controls can be set by NSIS for RTL locales.
-
-  ; Get the width and height of both labels and use the tallest for the height
-  ; and the widest to calculate where to place the labels after these labels.
-  ${GetTextExtent} "$(SPACE_REQUIRED)" $FontItalic $0 $1
-  ${GetTextExtent} "$(SPACE_AVAILABLE)" $FontItalic $2 $3
-  ${If} $1 > $3
-    StrCpy $ControlHeightPX "$1"
-  ${Else}
-    StrCpy $ControlHeightPX "$3"
-  ${EndIf}
-
-  IntOp $0 $0 + 8 ; Add padding to the control's width
-  ; Make both controls the same width as the widest control
-  ${NSD_CreateLabelCenter} ${OPTIONS_SUBITEM_EDGE_DU} 134u $0 $ControlHeightPX "$(SPACE_REQUIRED)"
-  Pop $5
-  SetCtlColors $5 ${COMMON_TEXT_COLOR_FADED} ${COMMON_BKGRD_COLOR}
-  SendMessage $5 ${WM_SETFONT} $FontItalic 0
-
-  IntOp $2 $2 + 8 ; Add padding to the control's width
-  ${NSD_CreateLabelCenter} ${OPTIONS_SUBITEM_EDGE_DU} 145u $2 $ControlHeightPX "$(SPACE_AVAILABLE)"
-  Pop $6
-  SetCtlColors $6 ${COMMON_TEXT_COLOR_FADED} ${COMMON_BKGRD_COLOR}
-  SendMessage $6 ${WM_SETFONT} $FontItalic 0
-
-  ; Use the widest label for aligning the labels next to them
-  ${If} $0 > $2
-    StrCpy $6 "$5"
-  ${EndIf}
-  FindWindow $1 "#32770" "" $HWNDPARENT
-  ${GetDlgItemEndPX} $6 $ControlRightPX
-
-  IntOp $ControlRightPX $ControlRightPX + 6
-
-  ${NSD_CreateLabel} $ControlRightPX 134u 100% $ControlHeightPX \
-                     "${APPROXIMATE_REQUIRED_SPACE_MB} $(MEGA)$(BYTE)"
-  Pop $7
-  SetCtlColors $7 ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR}
-  SendMessage $7 ${WM_SETFONT} $FontNormal 0
-
-  ; Create the free space label with an empty string and update it by calling
-  ; UpdateFreeSpaceLabel
-  ${NSD_CreateLabel} $ControlRightPX 145u 100% $ControlHeightPX " "
-  Pop $LabelFreeSpace
-  SetCtlColors $LabelFreeSpace ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR}
-  SendMessage $LabelFreeSpace ${WM_SETFONT} $FontNormal 0
-
-  Call UpdateFreeSpaceLabel
-
-  ${NSD_CreateCheckbox} ${OPTIONS_ITEM_EDGE_DU} 168u ${OPTIONS_SUBITEM_WIDTH_DU} \
-                        12u "$(SEND_PING)"
-  Pop $CheckboxSendPing
-  ; The uxtheme must be disabled on checkboxes in order to override the system
-  ; font color.
-  System::Call 'uxtheme::SetWindowTheme(i $CheckboxSendPing, w " ", w " ")'
-  SetCtlColors $CheckboxSendPing ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR}
-  SendMessage $CheckboxSendPing ${WM_SETFONT} $FontNormal 0
-  ${NSD_Check} $CheckboxSendPing
-
-!ifdef MOZ_MAINTENANCE_SERVICE
-  ; We can only install the maintenance service if the user is an admin.
-  Call IsUserAdmin
-  Pop $0
-
-  ; Only show the maintenance service checkbox if we're on XP SP3 or higher;
-  ;  we don't ever want to install it on XP without at least SP3 installed.
-  ${If} $0 == "true"
-  ${AndIf} ${IsWinXP}
-  ${AndIf} ${AtMostServicePack} 2
-    StrCpy $0 "false"
-  ${EndIf}
-
-  ; Only show the maintenance service checkbox if we have write access to HKLM
-  ClearErrors
-  WriteRegStr HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" \
-                   "Write Test"
-  ${If} ${Errors}
-  ${OrIf} $0 != "true"
-    StrCpy $CheckboxInstallMaintSvc "0"
-  ${Else}
-    DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest"
-    ; Read the registry instead of using ServicesHelper::IsInstalled so the
-    ; plugin isn't included in the stub installer to lessen its size.
-    ClearErrors
-    ReadRegStr $0 HKLM "SYSTEM\CurrentControlSet\services\MozillaMaintenance" "ImagePath"
-    ${If} ${Errors}
-      ${NSD_CreateCheckbox} ${OPTIONS_ITEM_EDGE_DU} 184u ${OPTIONS_ITEM_WIDTH_DU} \
-                            12u "$(INSTALL_MAINT_SERVICE)"
-      Pop $CheckboxInstallMaintSvc
-      System::Call 'uxtheme::SetWindowTheme(i $CheckboxInstallMaintSvc, w " ", w " ")'
-      SetCtlColors $CheckboxInstallMaintSvc ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR}
-      SendMessage $CheckboxInstallMaintSvc ${WM_SETFONT} $FontNormal 0
-      ${NSD_Check} $CheckboxInstallMaintSvc
-    ${EndIf}
-  ${EndIf}
-!endif
-
-  GetDlgItem $0 $HWNDPARENT 1 ; Install button
-  ${If} ${FileExists} "$INSTDIR\${FileMainEXE}"
-    SendMessage $0 ${WM_SETTEXT} 0 "STR:$(UPGRADE_BUTTON)"
-  ${Else}
-    SendMessage $0 ${WM_SETTEXT} 0 "STR:$(INSTALL_BUTTON)"
-  ${EndIf}
-  ${NSD_SetFocus} $0
-
-  GetDlgItem $0 $HWNDPARENT 2 ; Cancel button
-  SendMessage $0 ${WM_SETTEXT} 0 "STR:$(CANCEL_BUTTON)"
-
-  GetDlgItem $0 $HWNDPARENT 3 ; Back button used for Options
-  EnableWindow $0 0
-  ShowWindow $0 ${SW_HIDE}
-
-  ; If the option button was not clicked display the reason for what needs to be
-  ; resolved to continue the installation.
-  ${If} "$WasOptionsButtonClicked" != "1"
-    ${If} "$CanWriteToInstallDir" == "false"
-      MessageBox MB_OK|MB_ICONEXCLAMATION "$(WARN_WRITE_ACCESS)"
-    ${ElseIf} "$HasRequiredSpaceAvailable" == "false"
-      MessageBox MB_OK|MB_ICONEXCLAMATION "$(WARN_DISK_SPACE)"
-    ${EndIf}
-  ${EndIf}
-
-  System::Call "kernel32::GetTickCount()l .s"
-  Pop $StartOptionsPhaseTickCount
-
-  LockWindow off
-  nsDialogs::Show
-FunctionEnd
-
-Function leaveOptions
-  LockWindow on
-
-  ${GetRoot} "$INSTDIR" $0
-  ${GetLongPath} "$INSTDIR" $INSTDIR
-  ${GetLongPath} "$0" $0
-  ${If} "$INSTDIR" == "$0"
-    LockWindow off
-    MessageBox MB_OK|MB_ICONEXCLAMATION "$(WARN_ROOT_INSTALL)"
-    Abort ; Stay on the page
-  ${EndIf}
-
   Call CanWrite
   ${If} "$CanWriteToInstallDir" == "false"
-    LockWindow off
-    MessageBox MB_OK|MB_ICONEXCLAMATION "$(WARN_WRITE_ACCESS)"
-    Abort ; Stay on the page
+    MessageBox MB_OK|MB_ICONEXCLAMATION "$(WARN_WRITE_ACCESS_QUIT)\n\n$INSTDIR"
+    Quit
   ${EndIf}
 
   Call CheckSpace
   ${If} "$HasRequiredSpaceAvailable" == "false"
-    LockWindow off
-    MessageBox MB_OK|MB_ICONEXCLAMATION "$(WARN_DISK_SPACE)"
-    Abort ; Stay on the page
-  ${EndIf}
-
-  System::Call "kernel32::GetTickCount()l .s"
-  Pop $0
-  ${GetSecondsElapsed} "$StartOptionsPhaseTickCount" "$0" $OptionsPhaseSeconds
-  ; It is possible for this value to be 0 if the user clicks fast enough so
-  ; increment the value by 1 if it is 0.
-  ${If} $OptionsPhaseSeconds == 0
-    IntOp $OptionsPhaseSeconds $OptionsPhaseSeconds + 1
+    MessageBox MB_OK|MB_ICONEXCLAMATION "$(WARN_DISK_SPACE_QUIT)"
+    Quit
   ${EndIf}
 
-  ${NSD_GetState} $CheckboxShortcutOnBar $CheckboxShortcutOnBar
-  ${NSD_GetState} $CheckboxShortcutInStartMenu $CheckboxShortcutInStartMenu
-  ${NSD_GetState} $CheckboxShortcutOnDesktop $CheckboxShortcutOnDesktop
-  ${NSD_GetState} $CheckboxSendPing $CheckboxSendPing
-!ifdef MOZ_MAINTENANCE_SERVICE
-  ${NSD_GetState} $CheckboxInstallMaintSvc $CheckboxInstallMaintSvc
-!endif
+  ; Begin setting up the download/install window
 
-FunctionEnd
-
-Function createInstall
   nsDialogs::Create /NOUNLOAD 1018
   Pop $Dialog
+
+  SetCtlColors $HWNDPARENT ${FOOTER_CONTROL_TEXT_COLOR_NORMAL} ${FOOTER_BKGRD_COLOR}
+
   ; Since the text color for controls is set in this Dialog the foreground and
   ; background colors of the Dialog must also be hardcoded.
-  SetCtlColors $Dialog ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRD_COLOR}
-
-  ${NSD_CreateLabel} 0 0 49u 64u ""
-  Pop $0
-  ${GetDlgItemWidthHeight} $0 $1 $2
-  System::Call 'user32::DestroyWindow(i r0)'
-
-  ${NSD_CreateLabel} 0 0 11u 16u ""
-  Pop $0
-  ${GetDlgItemWidthHeight} $0 $3 $4
-  System::Call 'user32::DestroyWindow(i r0)'
+  SetCtlColors $Dialog ${COMMON_TEXT_COLOR_NORMAL} ${COMMON_BKGRND_COLOR}
 
   FindWindow $7 "#32770" "" $HWNDPARENT
-  ${GetDlgItemWidthHeight} $7 $8 $9
+  ${GetDlgItemWidthHeight} $HWNDPARENT $8 $9
 
-  ; Allow a maximum text width of half of the Dialog's width
-  IntOp $R0 $8 / 2
+  ; Resize the Dialog to fill the entire window
+  System::Call 'user32::MoveWindow(i$Dialog,i0,i0,i $8,i $9,i0)'
 
-  ${GetTextWidthHeight} "${INSTALL_BLURB1}" $FontBlurb $R0 $5 $6
-  IntOp $R1 $1 + $3
-  IntOp $R1 $R1 + $5
-  IntOp $R1 $8 - $R1
-  IntOp $R1 $R1 / 2
-  ${NSD_CreateBitmap} $R1 ${INSTALL_BLURB_TOP_DU} 49u 64u ""
-  Pop $BitmapBlurb1
-  ${SetStretchedTransparentImage} $BitmapBlurb1 $PLUGINSDIR\clock.bmp $HwndBitmapBlurb1
-  IntOp $R1 $R1 + $1
-  IntOp $R1 $R1 + $3
-  ${NSD_CreateLabel} $R1 ${INSTALL_BLURB_TOP_DU} $5 $6 "${INSTALL_BLURB1}"
-  Pop $LabelBlurb1
-  SendMessage $LabelBlurb1 ${WM_SETFONT} $FontBlurb 0
-  SetCtlColors $LabelBlurb1 ${INSTALL_BLURB_TEXT_COLOR} transparent
+  ${NSD_CreateLabelCenter} 25% ${NOW_INSTALLING_TOP_DU} 50% 47u "$(STUB_INSTALLING_LABEL)"
+  Pop $0
+  SendMessage $0 ${WM_SETFONT} $FontInstalling 0
+  SetCtlColors $0 ${INSTALL_BLURB_TEXT_COLOR} transparent
 
-  ${GetTextWidthHeight} "${INSTALL_BLURB2}" $FontBlurb $R0 $5 $6
-  IntOp $R1 $1 + $3
-  IntOp $R1 $R1 + $5
-  IntOp $R1 $8 - $R1
-  IntOp $R1 $R1 / 2
-  ${NSD_CreateBitmap} $R1 ${INSTALL_BLURB_TOP_DU} 49u 64u ""
-  Pop $BitmapBlurb2
-  ${SetStretchedTransparentImage} $BitmapBlurb2 $PLUGINSDIR\particles.bmp $HwndBitmapBlurb2
-  IntOp $R1 $R1 + $1
-  IntOp $R1 $R1 + $3
-  ${NSD_CreateLabel} $R1 ${INSTALL_BLURB_TOP_DU} $5 $6 "${INSTALL_BLURB2}"
-  Pop $LabelBlurb2
-  SendMessage $LabelBlurb2 ${WM_SETFONT} $FontBlurb 0
-  SetCtlColors $LabelBlurb2 ${INSTALL_BLURB_TEXT_COLOR} transparent
-  ShowWindow $BitmapBlurb2 ${SW_HIDE}
-  ShowWindow $LabelBlurb2 ${SW_HIDE}
+  ${NSD_CreateLabelCenter} 0% ${INSTALL_BLURB_TOP_DU} 100% 60u "$(STUB_BLURB1)"
+  Pop $LabelBlurb
+  SendMessage $LabelBlurb ${WM_SETFONT} $FontBlurb 0
+  SetCtlColors $LabelBlurb ${INSTALL_BLURB_TEXT_COLOR} transparent
+
+  StrCpy $CurrentBlurbIdx "0"
 
-  ${GetTextWidthHeight} "${INSTALL_BLURB3}" $FontBlurb $R0 $5 $6
-  IntOp $R1 $1 + $3
-  IntOp $R1 $R1 + $5
-  IntOp $R1 $8 - $R1
-  IntOp $R1 $R1 / 2
-  ${NSD_CreateBitmap} $R1 ${INSTALL_BLURB_TOP_DU} 49u 64u ""
-  Pop $BitmapBlurb3
-  ${SetStretchedTransparentImage} $BitmapBlurb3 $PLUGINSDIR\pencil.bmp $HWndBitmapBlurb3
-  IntOp $R1 $R1 + $1
-  IntOp $R1 $R1 + $3
-  ${NSD_CreateLabel} $R1 ${INSTALL_BLURB_TOP_DU} $5 $6 "${INSTALL_BLURB3}"
-  Pop $LabelBlurb3
-  SendMessage $LabelBlurb3 ${WM_SETFONT} $FontBlurb 0
-  SetCtlColors $LabelBlurb3 ${INSTALL_BLURB_TEXT_COLOR} transparent
-  ShowWindow $BitmapBlurb3 ${SW_HIDE}
-  ShowWindow $LabelBlurb3 ${SW_HIDE}
+  nsDialogs::CreateControl STATIC ${DEFAULT_STYLES}|${SS_NOTIFY}|${SS_RIGHT} ${WS_EX_TRANSPARENT} -433u ${INSTALL_FOOTER_TOP_DU} 400u 20u "$(STUB_BLURB_FOOTER)"
+  Pop $0
+  SendMessage $0 ${WM_SETFONT} $FontFooter 0
+  SetCtlColors $0 ${INSTALL_BLURB_TEXT_COLOR} transparent
 
-  ${NSD_CreateProgressBar} 103u 166u 241u 9u ""
+  ${NSD_CreateProgressBar} 20% ${PROGRESS_BAR_TOP_DU} 60% 12u ""
   Pop $Progressbar
   ${NSD_AddStyle} $Progressbar ${PBS_MARQUEE}
   SendMessage $Progressbar ${PBM_SETMARQUEE} 1 \
               $ProgressbarMarqueeIntervalMS ; start=1|stop=0 interval(ms)=+N
 
-  ${NSD_CreateLabelCenter} 103u 180u 241u 20u "$(DOWNLOADING_LABEL)"
-  Pop $LabelDownloading
-  SendMessage $LabelDownloading ${WM_SETFONT} $FontNormal 0
-  SetCtlColors $LabelDownloading ${INSTALL_PROGRESS_TEXT_COLOR_NORMAL} transparent
-
-  ${If} ${FileExists} "$INSTDIR\${FileMainEXE}"
-    ${NSD_CreateLabelCenter} 103u 180u 241u 20u "$(UPGRADING_LABEL)"
-  ${Else}
-    ${NSD_CreateLabelCenter} 103u 180u 241u 20u "$(INSTALLING_LABEL)"
-  ${EndIf}
-  Pop $LabelInstalling
-  SendMessage $LabelInstalling ${WM_SETFONT} $FontNormal 0
-  SetCtlColors $LabelInstalling ${INSTALL_PROGRESS_TEXT_COLOR_NORMAL} transparent
-  ShowWindow $LabelInstalling ${SW_HIDE}
-
-  ${NSD_CreateBitmap} ${APPNAME_BMP_EDGE_DU} ${APPNAME_BMP_TOP_DU} \
-                      ${APPNAME_BMP_WIDTH_DU} ${APPNAME_BMP_HEIGHT_DU} ""
-  Pop $2
-  ${SetStretchedTransparentImage} $2 $PLUGINSDIR\appname.bmp $0
-
+  ${NSD_CreateBitmap} 0 0 100% 100% ""
+  Pop $HwndBgBitmapControl
+  ${NSD_SetStretchedImage} $HwndBgBitmapControl $PLUGINSDIR\bgstub.bmp $BgBitmapImage
+  ; transparent bg on control prevents flicker on redraw
+  SetCtlColors $HwndBgBitmapControl ${INSTALL_BLURB_TEXT_COLOR} transparent
+ 
   GetDlgItem $0 $HWNDPARENT 1 ; Install button
   EnableWindow $0 0
   ShowWindow $0 ${SW_HIDE}
 
   GetDlgItem $0 $HWNDPARENT 3 ; Back button used for Options
   EnableWindow $0 0
   ShowWindow $0 ${SW_HIDE}
 
   GetDlgItem $0 $HWNDPARENT 2 ; Cancel button
-  SendMessage $0 ${WM_SETTEXT} 0 "STR:$(CANCEL_BUTTON)"
   ; Focus the Cancel button otherwise it isn't possible to tab to it since it is
   ; the only control that can be tabbed to.
   ${NSD_SetFocus} $0
   ; Kill the Cancel button's focus so pressing enter won't cancel the install.
   SendMessage $0 ${WM_KILLFOCUS} 0 0
-
-  ${If} "$CanSetAsDefault" == "true"
-    GetDlgItem $0 $HWNDPARENT 10 ; Default browser checkbox
-    SendMessage $0 ${BM_GETCHECK} 0 0 $CheckboxSetAsDefault
-    EnableWindow $0 0
-    ShowWindow $0 ${SW_HIDE}
-  ${EndIf}
+  ; Hide the Cancel button, but don't disable it (or else it won't be possible
+  ; to close the window)
+  ShowWindow $0 ${SW_HIDE}
 
-  GetDlgItem $0 $HWNDPARENT 11
-  ${If} ${FileExists} "$INSTDIR\${FileMainEXE}"
-    SendMessage $0 ${WM_SETTEXT} 0 "STR:$(ONE_MOMENT_UPGRADE)"
-  ${Else}
-    SendMessage $0 ${WM_SETTEXT} 0 "STR:$(ONE_MOMENT_INSTALL)"
-  ${EndIf}
-  SendMessage $0 ${WM_SETFONT} $FontNormal 0
-  SetCtlColors $0 ${FOOTER_CONTROL_TEXT_COLOR_FADED} ${FOOTER_BKGRD_COLOR}
-  ShowWindow $0 ${SW_SHOW}
+  GetDlgItem $0 $HWNDPARENT 10 ; Default browser checkbox
+  ; Hiding and then disabling allows Esc to still exit the installer
+  ShowWindow $0 ${SW_HIDE}
+  EnableWindow $0 0
+
+  GetDlgItem $0 $HWNDPARENT 11 ; Footer text
+  ShowWindow $0 ${SW_HIDE}
+  EnableWindow $0 0
 
   ; Set $DownloadReset to true so the first download tick count is measured.
   StrCpy $DownloadReset "true"
   StrCpy $IsDownloadFinished "false"
   StrCpy $DownloadRetryCount "0"
   StrCpy $DownloadedBytes "0"
   StrCpy $StartLastDownloadTickCount ""
   StrCpy $EndDownloadPhaseTickCount ""
@@ -1353,24 +927,22 @@ Function createInstall
   ${Else}
     StrCpy $InstallTotalSteps ${InstallCleanTotalSteps}
   ${EndIf}
 
   ${ITBL3Create}
   ${ITBL3SetProgressState} "${TBPF_INDETERMINATE}"
 
   ${NSD_CreateTimer} StartDownload ${DownloadIntervalMS}
+  ${NSD_CreateTimer} ClearBlurb ${BlurbDisplayMS}
 
   LockWindow off
   nsDialogs::Show
 
-  ${NSD_FreeImage} $0
-  ${NSD_FreeImage} $HwndBitmapBlurb1
-  ${NSD_FreeImage} $HwndBitmapBlurb2
-  ${NSD_FreeImage} $HWndBitmapBlurb3
+  ${NSD_FreeImage} $BgBitmapImage
 FunctionEnd
 
 Function StartDownload
   ${NSD_KillTimer} StartDownload
   InetBgDL::Get "${URLStubDownload}${URLStubDownloadAppend}" "$PLUGINSDIR\download.exe" \
                 /CONNECTTIMEOUT 120 /RECEIVETIMEOUT 120 /END
   StrCpy $4 ""
   ${NSD_CreateTimer} OnDownload ${DownloadIntervalMS}
@@ -1389,16 +961,50 @@ Function RemoveFileProgressCallback
   System::Int64Op $ProgressCompleted + $InstallStepSize
   Pop $ProgressCompleted
   Call SetProgressBars
   System::Int64Op $ProgressCompleted + $InstallStepSize
   Pop $ProgressCompleted
   Call SetProgressBars
 FunctionEnd
 
+Function NextBlurb
+  ${NSD_KillTimer} NextBlurb
+
+  IntOp $CurrentBlurbIdx $CurrentBlurbIdx + 1
+  IntOp $CurrentBlurbIdx $CurrentBlurbIdx % 3
+
+  ${If} $CurrentBlurbIdx == "0"
+    StrCpy $0 "$(STUB_BLURB1)"
+  ${ElseIf} $CurrentBlurbIdx == "1"
+    StrCpy $0 "$(STUB_BLURB2)"
+  ${ElseIf} $CurrentBlurbIdx == "2"
+    StrCpy $0 "$(STUB_BLURB3)"
+  ${EndIf}
+
+  SendMessage $LabelBlurb ${WM_SETTEXT} 0 "STR:$0"
+
+  ${NSD_CreateTimer} ClearBlurb ${BlurbDisplayMS}
+FunctionEnd
+
+Function ClearBlurb
+  ${NSD_KillTimer} ClearBlurb
+
+  SendMessage $LabelBlurb ${WM_SETTEXT} 0 "STR:"
+
+  ; force the background to repaint to clear the transparent label
+  System::Call "*(i,i,i,i) p .r0"
+  System::Call "user32::GetWindowRect(p $LabelBlurb, p r0)"
+  System::Call "user32::MapWindowPoints(p 0, p $HwndBgBitmapControl, p r0, i 2)"
+  System::Call "user32::InvalidateRect(p $HwndBgBitmapControl, p r0, i 0)"
+  System::Free $0
+
+  ${NSD_CreateTimer} NextBlurb ${BlurbBlankMS}
+FunctionEnd
+
 Function OnDownload
   InetBgDL::GetStats
   # $0 = HTTP status code, 0=Completed
   # $1 = Completed files
   # $2 = Remaining files
   # $3 = Number of downloaded bytes for the current file
   # $4 = Size of current file (Empty string if the size is unknown)
   # /RESET must be used if status $0 > 299 (e.g. failure)
@@ -1521,36 +1127,28 @@ Function OnDownload
           ; Use a timer so the UI has a chance to update
           ${NSD_CreateTimer} DisplayDownloadError ${InstallIntervalMS}
         ${Else}
           ${NSD_CreateTimer} StartDownload ${DownloadIntervalMS}
         ${EndIf}
         Return
       ${EndIf}
 
-      LockWindow on
       ; Update the progress bars first in the UI change so they take affect
       ; before other UI changes.
       StrCpy $ProgressCompleted "$DownloadSizeBytes"
       Call SetProgressBars
       System::Int64Op $InstallStepSize * ${InstallProgressFirstStep}
       Pop $R9
       System::Int64Op $ProgressCompleted + $R9
       Pop $ProgressCompleted
       Call SetProgressBars
-      ShowWindow $LabelDownloading ${SW_HIDE}
-      ShowWindow $LabelInstalling ${SW_SHOW}
-      ShowWindow $LabelBlurb2 ${SW_HIDE}
-      ShowWindow $BitmapBlurb2 ${SW_HIDE}
-      ShowWindow $LabelBlurb3 ${SW_SHOW}
-      ShowWindow $BitmapBlurb3 ${SW_SHOW}
       ; Disable the Cancel button during the install
       GetDlgItem $5 $HWNDPARENT 2
       EnableWindow $5 0
-      LockWindow off
 
       ; Open a handle to prevent modification of the full installer
       StrCpy $R9 "${INVALID_HANDLE_VALUE}"
       System::Call 'kernel32::CreateFileW(w "$PLUGINSDIR\download.exe", \
                                           i ${GENERIC_READ}, \
                                           i ${FILE_SHARE_READ}, i 0, \
                                           i ${OPEN_EXISTING}, i 0, i 0) i .R9'
       StrCpy $HandleDownload "$R9"
@@ -1643,22 +1241,16 @@ Function OnDownload
       Pop $EndPreInstallPhaseTickCount
 
       Exec "$\"$PLUGINSDIR\download.exe$\" /INI=$PLUGINSDIR\${CONFIG_INI}"
       ${NSD_CreateTimer} CheckInstall ${InstallIntervalMS}
     ${Else}
       ${If} $HalfOfDownload != "true"
       ${AndIf} $3 > $HalfOfDownload
         StrCpy $HalfOfDownload "true"
-        LockWindow on
-        ShowWindow $LabelBlurb1 ${SW_HIDE}
-        ShowWindow $BitmapBlurb1 ${SW_HIDE}
-        ShowWindow $LabelBlurb2 ${SW_SHOW}
-        ShowWindow $BitmapBlurb2 ${SW_SHOW}
-        LockWindow off
       ${EndIf}
       StrCpy $DownloadedBytes "$3"
       StrCpy $ProgressCompleted "$DownloadedBytes"
       Call SetProgressBars
     ${EndIf}
   ${EndIf}
 FunctionEnd
 
@@ -1814,118 +1406,33 @@ FunctionEnd
 Function FinishProgressBar
   IntOp $InstallCounterStep $InstallCounterStep + 1
 
   ${If} $InstallCounterStep < 10
     Return
   ${EndIf}
 
   ${NSD_KillTimer} FinishProgressBar
+  ${NSD_KillTimer} NextBlurb
+  ${NSD_KillTimer} ClearBlurb
 
   Call CopyPostSigningData
   Call LaunchApp
   Call SendPing
 FunctionEnd
 
-Function OnBack
-  StrCpy $WasOptionsButtonClicked "1"
-  StrCpy $R9 "1" ; Goto the next page
-  Call RelativeGotoPage
-  ; The call to Abort prevents NSIS from trying to move to the previous or the
-  ; next page.
-  Abort
-FunctionEnd
-
 Function RelativeGotoPage
   IntCmp $R9 0 0 Move Move
   StrCmp $R9 "X" 0 Move
   StrCpy $R9 "120"
 
   Move:
   SendMessage $HWNDPARENT "0x408" "$R9" ""
 FunctionEnd
 
-Function UpdateFreeSpaceLabel
-  ; Only update when $ExistingTopDir isn't set
-  ${If} "$ExistingTopDir" != ""
-    StrLen $5 "$ExistingTopDir"
-    StrLen $6 "$INSTDIR"
-    ${If} $5 <= $6
-      StrCpy $7 "$INSTDIR" $5
-      ${If} "$7" == "$ExistingTopDir"
-        Return
-      ${EndIf}
-    ${EndIf}
-  ${EndIf}
-
-  Call CheckSpace
-
-  StrCpy $0 "$SpaceAvailableBytes"
-
-  StrCpy $1 "$(BYTE)"
-
-  ${If} $0 > 1024
-  ${OrIf} $0 < 0
-    System::Int64Op $0 / 1024
-    Pop $0
-    StrCpy $1 "$(KILO)$(BYTE)"
-    ${If} $0 > 1024
-    ${OrIf} $0 < 0
-      System::Int64Op $0 / 1024
-      Pop $0
-      StrCpy $1 "$(MEGA)$(BYTE)"
-      ${If} $0 > 1024
-      ${OrIf} $0 < 0
-        System::Int64Op $0 / 1024
-        Pop $0
-        StrCpy $1 "$(GIGA)$(BYTE)"
-      ${EndIf}
-    ${EndIf}
-  ${EndIf}
-
-  SendMessage $LabelFreeSpace ${WM_SETTEXT} 0 "STR:$0 $1"
-FunctionEnd
-
-Function OnChange_DirRequest
-  Pop $0
-  System::Call 'user32::GetWindowTextW(i $DirRequest, w .r0, i ${NSIS_MAX_STRLEN})'
-  StrCpy $1 "$0" 1 ; the first character
-  ${If} "$1" == "$\""
-    StrCpy $1 "$0" "" -1 ; the last character
-    ${If} "$1" == "$\""
-      StrCpy $0 "$0" "" 1 ; all but the first character
-      StrCpy $0 "$0" -1 ; all but the last character
-    ${EndIf}
-  ${EndIf}
-
-  StrCpy $INSTDIR "$0"
-  Call UpdateFreeSpaceLabel
-
-  GetDlgItem $0 $HWNDPARENT 1 ; Install button
-  ${If} ${FileExists} "$INSTDIR\${FileMainEXE}"
-    SendMessage $0 ${WM_SETTEXT} 0 "STR:$(UPGRADE_BUTTON)"
-  ${Else}
-    SendMessage $0 ${WM_SETTEXT} 0 "STR:$(INSTALL_BUTTON)"
-  ${EndIf}
-FunctionEnd
-
-Function OnClick_ButtonBrowse
-  StrCpy $0 "$INSTDIR"
-  nsDialogs::SelectFolderDialog /NOUNLOAD "$(SELECT_FOLDER_TEXT)" $0
-  Pop $0
-  ${If} $0 == "error" ; returns 'error' if 'cancel' was pressed?
-    Return
-  ${EndIf}
-
-  ${If} $0 != ""
-    StrCpy $INSTDIR "$0"
-    System::Call 'user32::SetWindowTextW(i $DirRequest, w "$INSTDIR")'
-  ${EndIf}
-FunctionEnd
-
 Function CheckSpace
   ${If} "$ExistingTopDir" != ""
     StrLen $0 "$ExistingTopDir"
     StrLen $1 "$INSTDIR"
     ${If} $0 <= $1
       StrCpy $2 "$INSTDIR" $3
       ${If} "$2" == "$ExistingTopDir"
         Return
@@ -2058,21 +1565,23 @@ Function CopyPostSigningData
   ${Else}
     CreateDirectory "$LOCALAPPDATA\Mozilla\Firefox"
     CopyFiles /SILENT "$EXEDIR\postSigningData" "$LOCALAPPDATA\Mozilla\Firefox"
   ${Endif}
 FunctionEnd
 
 Function DisplayDownloadError
   ${NSD_KillTimer} DisplayDownloadError
+  ${NSD_KillTimer} NextBlurb
+  ${NSD_KillTimer} ClearBlurb
   ; To better display the error state on the taskbar set the progress completed
   ; value to the total value.
   ${ITBL3SetProgressValue} "100" "100"
   ${ITBL3SetProgressState} "${TBPF_ERROR}"
-  MessageBox MB_OKCANCEL|MB_ICONSTOP "$(ERROR_DOWNLOAD)" IDCANCEL +2 IDOK +1
+  MessageBox MB_OKCANCEL|MB_ICONSTOP "$(ERROR_DOWNLOAD_CONT)" IDCANCEL +2 IDOK +1
   StrCpy $OpenedDownloadPage "1" ; Already initialized to 0
 
   ${If} "$OpenedDownloadPage" == "1"
     ClearErrors
     ${GetParameters} $0
     ${GetOptions} "$0" "/UAC:" $1
     ${If} ${Errors}
       Call OpenManualDownloadURL
--- a/browser/locales/en-US/installer/nsisstrings.properties
+++ b/browser/locales/en-US/installer/nsisstrings.properties
@@ -13,55 +13,25 @@
 # custom string and always use the same one as used by the en-US files.
 # $BrandFullNameDA allows the string to contain an ampersand (e.g. DA stands
 # for double ampersand) and prevents the letter following the ampersand from
 # being used as an accesskey.
 
 # You can use \n to create a newline in the string but only when the string
 # from en-US contains a \n.
 
-WIN_CAPTION=$BrandShortName Setup
+INSTALLER_WIN_CAPTION=$BrandShortName Installer
 
-INTRO_BLURB1=Thanks for choosing $BrandFullName, the browser that chooses you above everything else.
-INSTALL_BLURB1=You're about to enjoy the very latest in speed, flexibility and security so you're always in control.
-INSTALL_BLURB2=That's because $BrandShortName is made by a non-profit to make browsing and the Web better for you.
-INSTALL_BLURB3=You're also joining a global community of users, contributors and developers working to make the best browser in the world.
+STUB_INSTALLING_LABEL=Now installing
+STUB_BLURB1=Fast, responsive online experiences
+STUB_BLURB2=Compatibility with more of your favorite sites
+STUB_BLURB3=Built-in privacy tools for safer browsing
+STUB_BLURB_FOOTER=The only browser built for people, not profit
 
 WARN_MIN_SUPPORTED_OSVER_MSG=Sorry, $BrandShortName can't be installed. This version of $BrandShortName requires ${MinSupportedVer} or newer. Please click the OK button for additional information.
 WARN_MIN_SUPPORTED_CPU_MSG=Sorry, $BrandShortName can't be installed. This version of $BrandShortName requires a processor with ${MinSupportedCPU} support. Please click the OK button for additional information.
 WARN_MIN_SUPPORTED_OSVER_CPU_MSG=Sorry, $BrandShortName can't be installed. This version of $BrandShortName requires ${MinSupportedVer} or newer and a processor with ${MinSupportedCPU} support. Please click the OK button for additional information.
-WARN_WRITE_ACCESS=You don't have access to write to the installation directory.\n\nClick OK to select a different directory.
-WARN_DISK_SPACE=You don't have sufficient disk space to install to this location.\n\nClick OK to select a different location.
-WARN_ROOT_INSTALL=Unable to install to the root of your disk.\n\nClick OK to select a different location.
+WARN_WRITE_ACCESS_QUIT=You don't have access to write to the installation directory
+WARN_DISK_SPACE_QUIT=You don't have sufficient disk space to install.
 WARN_MANUALLY_CLOSE_APP_LAUNCH=$BrandShortName is already running.\n\nPlease close $BrandShortName prior to launching the version you have just installed.
 
-ERROR_DOWNLOAD=Your download was interrupted.\n\nPlease click the OK button to continue.
-
-INSTALL_BUTTON=&Install
-UPGRADE_BUTTON=&Upgrade
-CANCEL_BUTTON=Cancel
-OPTIONS_BUTTON=&Options
+ERROR_DOWNLOAD_CONT=Hmm. For some reason, we could not install $BrandShortName.\nChoose OK to start over.
 
-MAKE_DEFAULT=&Make $BrandShortName my default browser
-CREATE_SHORTCUTS=Create Shortcuts for $BrandShortName:
-ADD_SC_TASKBAR=On my &Task bar
-ADD_SC_QUICKLAUNCHBAR=On my &Quick Launch bar
-ADD_CheckboxShortcutInStartMenu=In my &Start Menu Programs Folder
-ADD_CheckboxShortcutOnDesktop=On my &Desktop
-SPACE_REQUIRED=Space Required:
-SPACE_AVAILABLE=Space Available:
-ONE_MOMENT_INSTALL=One moment, $BrandShortName will launch as soon as the install is complete…
-ONE_MOMENT_UPGRADE=One moment, $BrandShortName will launch as soon as the upgrade is complete…
-INSTALL_MAINT_SERVICE=&Install the $BrandShortName background update service
-SEND_PING=S&end information about this installation to Mozilla
-BROWSE_BUTTON=B&rowse…
-DEST_FOLDER=Destination Folder
-
-DOWNLOADING_LABEL=Downloading $BrandShortName…
-INSTALLING_LABEL=Installing $BrandShortName…
-UPGRADING_LABEL=Upgrading $BrandShortName…
-
-SELECT_FOLDER_TEXT=Select the folder to install $BrandShortName in.
-
-BYTE=B
-KILO=K
-MEGA=M
-GIGA=G
--- a/toolkit/mozapps/installer/windows/nsis/locale-fonts.nsh
+++ b/toolkit/mozapps/installer/windows/nsis/locale-fonts.nsh
@@ -131,18 +131,21 @@
 ; English - Great Britain
 !if "${AB_CD}" == "en-GB"
 !define FONT_NAME1 "Segoe UI"
 !define FONT_FILE1 "segoeui.ttf"
 !endif
 
 ; English - United States
 !if "${AB_CD}" == "en-US"
-!define FONT_NAME1 "Segoe UI"
-!define FONT_FILE1 "segoeui.ttf"
+!define FONT_NAME1 "Segoe UI Light"
+!define FONT_FILE1 "segoeuil.ttf"
+
+!define FONT_NAME2 "Segoe UI"
+!define FONT_FILE2 "segoeui.ttf"
 !endif
 
 ; English - South Africa
 !if "${AB_CD}" == "en-ZA"
 !define FONT_NAME1 "Segoe UI"
 !define FONT_FILE1 "segoeui.ttf"
 !endif