зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1427712 - full installer page to install optional extensions with partner distribution. r=mhowell
MozReview-Commit-ID: FGIgyQTwfj --HG-- extra : rebase_source : a4abe52dfd85c8603f82dba214bf6f4826215f67
This commit is contained in:
Родитель
b11952722c
Коммит
92ed511d9a
|
@ -87,6 +87,9 @@ $(CONFIG_DIR)/setup.exe::
|
|||
--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/extensionsLocale.nsh $(CONFIG_DIR)/extensionsLocale.nsh
|
||||
|
||||
GARBARGE_DIRS += instgen
|
||||
|
||||
|
|
|
@ -104,6 +104,12 @@
|
|||
!define MOZ_MAINTENANCE_SERVICE
|
||||
#endif
|
||||
|
||||
!if "@AB_CD@" == "en-US"
|
||||
!define MOZ_OPTIONAL_EXTENSIONS
|
||||
!else if "@AB_CD@" == "zh-CN"
|
||||
!define MOZ_OPTIONAL_EXTENSIONS
|
||||
!endif
|
||||
|
||||
# File details shared by both the installer and uninstaller
|
||||
VIProductVersion "1.0.0.0"
|
||||
VIAddVersionKey "ProductName" "${BrandShortName}"
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
# 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/.
|
||||
|
||||
; Strings for the optional extensions page. This is not in the locale
|
||||
; directory so these strings are only translated to zh-CN.
|
||||
|
||||
!if "${AB_CD}" == "en-US"
|
||||
LangString EXTENSIONS_PAGE_TITLE 0 "Install Optional Extensions"
|
||||
LangString EXTENSIONS_PAGE_SUBTITLE 0 "$ExtensionRecommender recommends these extensions"
|
||||
LangString OPTIONAL_EXTENSIONS_CHECKBOX_DESC 0 "Install &Extension:"
|
||||
LangString OPTIONAL_EXTENSIONS_DESC 0 "You can add or remove these extensions at any time. Click the menu button and choose “Add-ons”."
|
||||
!endif
|
||||
|
||||
!if "${AB_CD}" == "zh-CN"
|
||||
LangString EXTENSIONS_PAGE_TITLE 0 "安装可选扩展"
|
||||
LangString EXTENSIONS_PAGE_SUBTITLE 0 "$ExtensionRecommender 推荐安装以下扩展"
|
||||
LangString OPTIONAL_EXTENSIONS_CHECKBOX_DESC 0 "安装扩展(&E):"
|
||||
LangString OPTIONAL_EXTENSIONS_DESC 0 "您随时可以点击浏览器的菜单按钮并选择“附加组件”来添加或移除扩展。"
|
||||
!endif
|
|
@ -34,6 +34,8 @@ Var AddTaskbarSC
|
|||
Var AddQuickLaunchSC
|
||||
Var AddDesktopSC
|
||||
Var InstallMaintenanceService
|
||||
Var InstallOptionalExtensions
|
||||
Var ExtensionRecommender
|
||||
Var PageName
|
||||
Var PreventRebootRequired
|
||||
|
||||
|
@ -169,6 +171,11 @@ Page custom preComponents leaveComponents
|
|||
; Custom Shortcuts Page
|
||||
Page custom preShortcuts leaveShortcuts
|
||||
|
||||
; Custom Extensions Page
|
||||
!ifdef MOZ_OPTIONAL_EXTENSIONS
|
||||
Page custom preExtensions leaveExtensions
|
||||
!endif
|
||||
|
||||
; Custom Summary Page
|
||||
Page custom preSummary leaveSummary
|
||||
|
||||
|
@ -589,6 +596,42 @@ Section "-Application" APP_IDX
|
|||
${EndUnless}
|
||||
${EndIf}
|
||||
|
||||
!ifdef MOZ_OPTIONAL_EXTENSIONS
|
||||
${If} ${FileExists} "$INSTDIR\distribution\optional-extensions"
|
||||
${LogHeader} "Installing optional extensions if requested"
|
||||
|
||||
${If} $InstallOptionalExtensions != "0"
|
||||
${AndIf} ${FileExists} "$INSTDIR\distribution\setup.ini"
|
||||
${Unless} ${FileExists} "$INSTDIR\distribution\extensions"
|
||||
CreateDirectory "$INSTDIR\distribution\extensions"
|
||||
${EndUnless}
|
||||
|
||||
StrCpy $0 0
|
||||
${Do}
|
||||
ClearErrors
|
||||
ReadINIStr $1 "$INSTDIR\distribution\setup.ini" "OptionalExtensions" \
|
||||
"extension.$0.id"
|
||||
${If} ${Errors}
|
||||
${ExitDo}
|
||||
${EndIf}
|
||||
|
||||
ReadINIStr $2 "$INSTDIR\distribution\setup.ini" "OptionalExtensions" \
|
||||
"extension.$0.checked"
|
||||
${If} $2 != ${BST_UNCHECKED}
|
||||
${LogMsg} "Installing optional extension: $1"
|
||||
CopyFiles /SILENT "$INSTDIR\distribution\optional-extensions\$1.xpi" \
|
||||
"$INSTDIR\distribution\extensions"
|
||||
${EndIf}
|
||||
|
||||
IntOp $0 $0 + 1
|
||||
${Loop}
|
||||
${EndIf}
|
||||
|
||||
${LogMsg} "Removing the optional-extensions directory"
|
||||
RMDir /r /REBOOTOK "$INSTDIR\distribution\optional-extensions"
|
||||
${EndIf}
|
||||
!endif
|
||||
|
||||
!ifdef MOZ_MAINTENANCE_SERVICE
|
||||
${If} $TmpVal == "HKLM"
|
||||
; Add the registry keys for allowed certificates.
|
||||
|
@ -865,6 +908,9 @@ FunctionEnd
|
|||
!verbose 3
|
||||
!include "overrideLocale.nsh"
|
||||
!include "customLocale.nsh"
|
||||
!ifdef MOZ_OPTIONAL_EXTENSIONS
|
||||
!include "extensionsLocale.nsh"
|
||||
!endif
|
||||
!verbose pop
|
||||
|
||||
; Set this after the locale files to override it if it is in the locale
|
||||
|
@ -997,6 +1043,119 @@ Function leaveComponents
|
|||
FunctionEnd
|
||||
!endif
|
||||
|
||||
!ifdef MOZ_OPTIONAL_EXTENSIONS
|
||||
Function preExtensions
|
||||
StrCpy $PageName "Extensions"
|
||||
${CheckCustomCommon}
|
||||
|
||||
; Abort if no optional extensions configured in distribution/setup.ini
|
||||
${If} ${FileExists} "$EXEDIR\core\distribution\setup.ini"
|
||||
ClearErrors
|
||||
ReadINIStr $ExtensionRecommender "$EXEDIR\core\distribution\setup.ini" \
|
||||
"OptionalExtensions" "Recommender.${AB_CD}"
|
||||
${If} ${Errors}
|
||||
ClearErrors
|
||||
ReadINIStr $ExtensionRecommender "$EXEDIR\core\distribution\setup.ini" \
|
||||
"OptionalExtensions" "Recommender"
|
||||
${EndIf}
|
||||
|
||||
${If} ${Errors}
|
||||
ClearErrors
|
||||
Abort
|
||||
${EndIf}
|
||||
${Else}
|
||||
Abort
|
||||
${EndIf}
|
||||
|
||||
!insertmacro MUI_HEADER_TEXT "$(EXTENSIONS_PAGE_TITLE)" "$(EXTENSIONS_PAGE_SUBTITLE)"
|
||||
!insertmacro MUI_INSTALLOPTIONS_DISPLAY "extensions.ini"
|
||||
FunctionEnd
|
||||
|
||||
Function leaveExtensions
|
||||
${MUI_INSTALLOPTIONS_READ} $0 "extensions.ini" "Settings" "NumFields"
|
||||
${MUI_INSTALLOPTIONS_READ} $1 "extensions.ini" "Settings" "State"
|
||||
|
||||
; $0 is count of checkboxes
|
||||
IntOp $0 $0 - 1
|
||||
|
||||
${If} $1 > $0
|
||||
Abort
|
||||
${ElseIf} $1 == 0
|
||||
; $1 is count of selected optional extension(s)
|
||||
StrCpy $1 0
|
||||
|
||||
StrCpy $2 2
|
||||
${Do}
|
||||
${MUI_INSTALLOPTIONS_READ} $3 "extensions.ini" "Field $2" "State"
|
||||
${If} $3 == ${BST_CHECKED}
|
||||
IntOp $1 $1 + 1
|
||||
${EndIf}
|
||||
|
||||
IntOp $4 $2 - 2
|
||||
WriteINIStr "$EXEDIR\core\distribution\setup.ini" \
|
||||
"OptionalExtensions" "extension.$4.checked" "$3"
|
||||
|
||||
${If} $0 == $2
|
||||
${ExitDo}
|
||||
${Else}
|
||||
IntOp $2 $2 + 1
|
||||
${EndIf}
|
||||
${Loop}
|
||||
|
||||
; Different from state of field 1, "0" means no optional extensions selected
|
||||
${If} $1 > 0
|
||||
StrCpy $InstallOptionalExtensions "1"
|
||||
${Else}
|
||||
StrCpy $InstallOptionalExtensions "0"
|
||||
${EndIf}
|
||||
|
||||
${If} $InstallType == ${INSTALLTYPE_CUSTOM}
|
||||
Call CheckExistingInstall
|
||||
${EndIf}
|
||||
${ElseIf} $1 == 1
|
||||
; Check/uncheck all optional extensions with field 1
|
||||
${MUI_INSTALLOPTIONS_READ} $1 "extensions.ini" "Field 1" "State"
|
||||
|
||||
StrCpy $2 2
|
||||
${Do}
|
||||
${MUI_INSTALLOPTIONS_READ} $3 "extensions.ini" "Field $2" "HWND"
|
||||
SendMessage $3 ${BM_SETCHECK} $1 0
|
||||
|
||||
${If} $0 == $2
|
||||
${ExitDo}
|
||||
${Else}
|
||||
IntOp $2 $2 + 1
|
||||
${EndIf}
|
||||
${Loop}
|
||||
|
||||
Abort
|
||||
${ElseIf} $1 > 1
|
||||
StrCpy $1 ${BST_CHECKED}
|
||||
|
||||
StrCpy $2 2
|
||||
${Do}
|
||||
${MUI_INSTALLOPTIONS_READ} $3 "extensions.ini" "Field $2" "State"
|
||||
${If} $3 == ${BST_UNCHECKED}
|
||||
StrCpy $1 ${BST_UNCHECKED}
|
||||
${ExitDo}
|
||||
${EndIf}
|
||||
|
||||
${If} $0 == $2
|
||||
${ExitDo}
|
||||
${Else}
|
||||
IntOp $2 $2 + 1
|
||||
${EndIf}
|
||||
${Loop}
|
||||
|
||||
; Check field 1 only if all optional extensions are selected
|
||||
${MUI_INSTALLOPTIONS_READ} $3 "extensions.ini" "Field 1" "HWND"
|
||||
SendMessage $3 ${BM_SETCHECK} $1 0
|
||||
|
||||
Abort
|
||||
${EndIf}
|
||||
FunctionEnd
|
||||
!endif
|
||||
|
||||
Function preSummary
|
||||
StrCpy $PageName "Summary"
|
||||
; Setup the summary.ini file for the Custom Summary Page
|
||||
|
@ -1171,6 +1330,7 @@ Function .onInit
|
|||
!insertmacro InitInstallOptionsFile "options.ini"
|
||||
!insertmacro InitInstallOptionsFile "shortcuts.ini"
|
||||
!insertmacro InitInstallOptionsFile "components.ini"
|
||||
!insertmacro InitInstallOptionsFile "extensions.ini"
|
||||
!insertmacro InitInstallOptionsFile "summary.ini"
|
||||
|
||||
WriteINIStr "$PLUGINSDIR\options.ini" "Settings" NumFields "5"
|
||||
|
@ -1275,6 +1435,74 @@ Function .onInit
|
|||
WriteINIStr "$PLUGINSDIR\components.ini" "Field 2" State "1"
|
||||
WriteINIStr "$PLUGINSDIR\components.ini" "Field 2" Flags "GROUP"
|
||||
|
||||
; Setup the extensions.ini file for the Custom Extensions Page
|
||||
StrCpy $R9 0
|
||||
StrCpy $R8 ${BST_CHECKED}
|
||||
|
||||
${If} ${FileExists} "$EXEDIR\core\distribution\setup.ini"
|
||||
${Do}
|
||||
IntOp $R7 $R9 + 2
|
||||
|
||||
ClearErrors
|
||||
ReadINIStr $R6 "$EXEDIR\core\distribution\setup.ini" \
|
||||
"OptionalExtensions" "extension.$R9.name.${AB_CD}"
|
||||
${If} ${Errors}
|
||||
ClearErrors
|
||||
ReadINIStr $R6 "$EXEDIR\core\distribution\setup.ini" \
|
||||
"OptionalExtensions" "extension.$R9.name"
|
||||
${EndIf}
|
||||
|
||||
${If} ${Errors}
|
||||
${ExitDo}
|
||||
${EndIf}
|
||||
|
||||
; Each row moves down by 13 DLUs
|
||||
IntOp $R2 $R9 * 13
|
||||
IntOp $R2 $R2 + 21
|
||||
IntOp $R1 $R2 + 10
|
||||
|
||||
ClearErrors
|
||||
ReadINIStr $R0 "$EXEDIR\core\distribution\setup.ini" \
|
||||
"OptionalExtensions" "extension.$R9.checked"
|
||||
${If} ${Errors}
|
||||
StrCpy $R0 ${BST_CHECKED}
|
||||
${ElseIf} $R0 == "0"
|
||||
StrCpy $R8 ${BST_UNCHECKED}
|
||||
${EndIf}
|
||||
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field $R7" Type "checkbox"
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field $R7" Text "$R6"
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field $R7" Left "11"
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field $R7" Right "-1"
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field $R7" Top "$R2"
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field $R7" Bottom "$R1"
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field $R7" State "$R0"
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field $R7" Flags "NOTIFY"
|
||||
|
||||
IntOp $R9 $R9 + 1
|
||||
${Loop}
|
||||
${EndIf}
|
||||
|
||||
IntOp $R9 $R9 + 2
|
||||
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Settings" NumFields "$R9"
|
||||
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field 1" Type "checkbox"
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field 1" Text "$(OPTIONAL_EXTENSIONS_CHECKBOX_DESC)"
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field 1" Left "0"
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field 1" Right "-1"
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field 1" Top "5"
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field 1" Bottom "15"
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field 1" State "$R8"
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field 1" Flags "GROUP|NOTIFY"
|
||||
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field $R9" Type "label"
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field $R9" Text "$(OPTIONAL_EXTENSIONS_DESC)"
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field $R9" Left "0"
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field $R9" Right "-1"
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field $R9" Top "-23"
|
||||
WriteINIStr "$PLUGINSDIR\extensions.ini" "Field $R9" Bottom "-5"
|
||||
|
||||
; There must always be a core directory.
|
||||
${GetSize} "$EXEDIR\core\" "/S=0K" $R5 $R7 $R8
|
||||
SectionSetSize ${APP_IDX} $R5
|
||||
|
|
|
@ -5099,6 +5099,13 @@
|
|||
${ElevateUAC}
|
||||
${EndIf}
|
||||
|
||||
ReadINIStr $R8 $R7 "Install" "OptionalExtensions"
|
||||
${If} $R8 == "false"
|
||||
StrCpy $InstallOptionalExtensions "0"
|
||||
${Else}
|
||||
StrCpy $InstallOptionalExtensions "1"
|
||||
${EndIf}
|
||||
|
||||
!ifndef NO_STARTMENU_DIR
|
||||
ReadINIStr $R8 $R7 "Install" "StartMenuDirectoryName"
|
||||
${If} $R8 != ""
|
||||
|
|
Загрузка…
Ссылка в новой задаче