diff --git a/browser/installer/windows/nsis/installer.nsi b/browser/installer/windows/nsis/installer.nsi index c15f7133470..bb3b796a1ff 100755 --- a/browser/installer/windows/nsis/installer.nsi +++ b/browser/installer/windows/nsis/installer.nsi @@ -120,6 +120,7 @@ VIAddVersionKey "FileDescription" "${BrandShortName} Installer" !insertmacro RegCleanAppHandler !insertmacro RegCleanMain !insertmacro RegCleanUninstall +!insertmacro SetBrandNameVars !insertmacro UnloadUAC !insertmacro WriteRegStr2 !insertmacro WriteRegDWORD2 @@ -787,6 +788,9 @@ FunctionEnd # Initialization Functions Function .onInit + StrCpy $LANGUAGE 0 + ${SetBrandNameVars} "$EXEDIR\localized\distribution\setup.ini" + ${InstallOnInitCommon} "$(WARN_UNSUPPORTED_MSG)" !insertmacro MUI_INSTALLOPTIONS_EXTRACT "options.ini" @@ -797,8 +801,6 @@ Function .onInit !insertmacro createComponentsINI !insertmacro createShortcutsINI - StrCpy $LANGUAGE 0 - ; There must always be nonlocalized and localized directories. ${GetSize} "$EXEDIR\nonlocalized\" "/S=0K" $R5 $R7 $R8 ${GetSize} "$EXEDIR\localized\" "/S=0K" $R6 $R7 $R8 diff --git a/browser/installer/windows/nsis/uninstaller.nsi b/browser/installer/windows/nsis/uninstaller.nsi index 1cd04a6458c..f5517e200e3 100755 --- a/browser/installer/windows/nsis/uninstaller.nsi +++ b/browser/installer/windows/nsis/uninstaller.nsi @@ -121,6 +121,7 @@ VIAddVersionKey "FileDescription" "${BrandShortName} Helper" !insertmacro un.RegCleanUninstall !insertmacro un.RegCleanProtocolHandler !insertmacro un.RemoveQuotesFromPath +!insertmacro un.SetBrandNameVars !include shared.nsh @@ -466,7 +467,9 @@ Function un.onInit ${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 diff --git a/browser/locales/Makefile.in b/browser/locales/Makefile.in index 4224780dcce..c248ca04dba 100644 --- a/browser/locales/Makefile.in +++ b/browser/locales/Makefile.in @@ -193,6 +193,12 @@ include $(call EXPAND_LOCALE_SRCDIR,toolkit/locales)/installer/windows/charset.m repackage-win32-installer: WIN32_INSTALLER_OUT=$(_ABS_DIST)/install/sea/$(PKG_BASENAME).installer.exe repackage-win32-installer: $(WIN32_INSTALLER_IN) $(SUBMAKEFILES) +ifneq (en-US,$(AB_CD)) + @echo "Comparing $(AB_CD) to en-US installer locale files" + @$(PERL) $(topsrcdir)/toolkit/locales/compare-locales.pl $(srcdir)/en-US/installer $(LOCALE_SRCDIR)/installer + @echo "Verifying $(AB_CD) installer variable usage" + @$(PERL) $(topsrcdir)/toolkit/mozapps/installer/windows/nsis/check-locales.pl $(LOCALE_SRCDIR)/installer +endif @echo "Repackaging $(WIN32_INSTALLER_IN) into $(WIN32_INSTALLER_OUT)." ifdef MOZ_BRANDING_DIRECTORY $(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY) export diff --git a/browser/locales/en-US/installer/custom.properties b/browser/locales/en-US/installer/custom.properties index 0a40a69564f..61ae5a07134 100755 --- a/browser/locales/en-US/installer/custom.properties +++ b/browser/locales/en-US/installer/custom.properties @@ -41,67 +41,68 @@ # Accesskeys are defined by prefixing the letter that is to be used for the # accesskey with an ampersand (e.g. &). -# Do not replace ${BrandShortName} or ${BrandFullName} with a custom string. +# Do not replace $BrandShortName, $BrandFullName, or $BrandFullNameDA with a +# 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. -REG_APP_DESC=${BrandShortName} delivers safe, easy web browsing. A familiar user interface, enhanced security features including protection from online identity theft, and integrated search let you get the most out of the web. +REG_APP_DESC=$BrandShortName delivers safe, easy web browsing. A familiar user interface, enhanced security features including protection from online identity theft, and integrated search let you get the most out of the web. OPTIONAL_COMPONENTS_TITLE=Choose Optional Components -OPTIONAL_COMPONENTS_SUBTITLE=Choose which features of $(^NameDA) you want to install. +OPTIONAL_COMPONENTS_SUBTITLE=Choose which features of $BrandShortName you want to install. OPTIONAL_COMPONENTS_LABEL=Optional Components: -APP_DESC=Required files for the ${BrandShortName} application DOMI_TITLE=DOM Inspector DOMI_TEXT=Inspects the structure and properties of a window and its contents. -QFA_TITLE=Quality Feedback Agent -QFA_TEXT=Sends information about program crashes to Mozilla. -CONTEXT_OPTIONS=${BrandShortName} &Options -CONTEXT_SAFE_MODE=${BrandShortName} &Safe Mode +CONTEXT_OPTIONS=$BrandShortName &Options +CONTEXT_SAFE_MODE=$BrandShortName &Safe Mode SAFE_MODE=Safe Mode OPTIONS_PAGE_TITLE=Setup Type OPTIONS_PAGE_SUBTITLE=Choose setup options SHORTCUTS_PAGE_TITLE=Set Up Shortcuts SHORTCUTS_PAGE_SUBTITLE=Create Program Icons SUMMARY_PAGE_TITLE=Summary -SUMMARY_PAGE_SUBTITLE=Ready to start installing ${BrandShortName} -SUMMARY_INSTALLED_TO=${BrandShortName} will be installed to the following location: +SUMMARY_PAGE_SUBTITLE=Ready to start installing $BrandShortName +SUMMARY_INSTALLED_TO=$BrandShortName will be installed to the following location: SUMMARY_CLICK=Click Install to continue. -SURVEY_TEXT=&Tell us what you thought of ${BrandShortName} -LAUNCH_TEXT=&Launch ${BrandFullName} now -WARN_APP_RUNNING_INSTALL=${BrandFullName} must be closed to proceed with the installation.\n\nClick "OK" to exit ${BrandFullName} automatically and continue. -CREATE_ICONS_DESC=Create icons for ${BrandShortName}: +SURVEY_TEXT=&Tell us what you thought of $BrandShortName +LAUNCH_TEXT=&Launch $BrandShortName now +WARN_APP_RUNNING_INSTALL=$BrandShortName must be closed to proceed with the installation.\n\nClick "OK" to exit $BrandShortName automatically and continue. +CREATE_ICONS_DESC=Create icons for $BrandShortName: ICONS_DESKTOP=On my &Desktop ICONS_STARTMENU=In my &Start Menu Programs folder ICONS_QUICKLAUNCH=In my &Quick Launch bar -WARN_MANUALLY_CLOSE_APP_UNINSTALL=${BrandFullName} must be closed to proceed with the uninstall.\n\nPlease close ${BrandFullName} to continue. -WARN_MANUALLY_CLOSE_APP_LAUNCH=${BrandFullName} is already running.\n\nPlease close ${BrandFullName} prior to launching the version you have just installed. +WARN_MANUALLY_CLOSE_APP_UNINSTALL=$BrandShortName must be closed to proceed with the uninstall.\n\nPlease close $BrandShortName to continue. +WARN_MANUALLY_CLOSE_APP_LAUNCH=$BrandShortName is already running.\n\nPlease close $BrandShortName prior to launching the version you have just installed. 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_UNSUPPORTED_MSG=Sorry, ${BrandShortName} can't be installed. This version of ${BrandShortName} requires ${MinUnsupportedVer} or newer. -WARN_RESTART_REQUIRED_UNINSTALL=Your computer must be restarted to complete a previous uninstall of ${BrandShortName}. Do you want to reboot now? +WARN_UNSUPPORTED_MSG=Sorry, $BrandShortName can't be installed. This version of $BrandShortName requires ${MinUnsupportedVer} or newer. +WARN_RESTART_REQUIRED_UNINSTALL=Your computer must be restarted to complete a previous uninstall of $BrandShortName. Do you want to reboot now? ERROR_CREATE_DIRECTORY=Error creating directory:\n\n$0\n\nClick Cancel to stop the installation or\nRetry to try again. -UN_CONFIRM_PAGE_TITLE=Uninstall ${BrandFullName} -UN_CONFIRM_PAGE_SUBTITLE=Remove ${BrandFullName} from your computer. -UN_CONFIRM_UNINSTALLED_FROM=${BrandShortName} will be uninstalled from the following location: +UN_CONFIRM_PAGE_TITLE=Uninstall $BrandFullName +UN_CONFIRM_PAGE_SUBTITLE=Remove $BrandFullName from your computer. +UN_CONFIRM_UNINSTALLED_FROM=$BrandShortName will be uninstalled from the following location: UN_CONFIRM_CLICK=Click Uninstall to continue. -UN_REMOVE_PROFILES=&Remove my ${BrandShortName} personal data and customizations -UN_REMOVE_PROFILES_DESC=This will permanently remove your bookmarks, saved passwords, cookies and customizations. You may wish to keep this information if you plan on installing another version of ${BrandShortName} in the future. +UN_REMOVE_PROFILES=&Remove my $BrandShortName personal data and customizations +UN_REMOVE_PROFILES_DESC=This will permanently remove your bookmarks, saved passwords, cookies and customizations. You may wish to keep this information if you plan on installing another version of $BrandShortName in the future. -STATUS_INSTALL_APP=Installing ${BrandShortName}... +STATUS_INSTALL_APP=Installing $BrandShortName... STATUS_INSTALL_LANG=Installing Language Files (${AB_CD})... STATUS_INSTALL_OPTIONAL=Installing Optional Components... -STATUS_UNINSTALL_MAIN=Uninstalling ${BrandShortName}... +STATUS_UNINSTALL_MAIN=Uninstalling $BrandShortName... STATUS_CLEANUP=A Little Housekeeping... # _DESC strings support approximately 65 characters per line. # One line OPTIONS_SUMMARY=Choose the type of setup you prefer, then click Next. # One line -OPTION_STANDARD_DESC=${BrandShortName} will be installed with the most common options. +OPTION_STANDARD_DESC=$BrandShortName will be installed with the most common options. OPTION_STANDARD_RADIO=&Standard # One line -OPTION_COMPLETE_DESC=${BrandShortName} will be installed with all available options. +OPTION_COMPLETE_DESC=$BrandShortName will be installed with all available options. OPTION_COMPLETE_RADIO=C&omplete # Two lines OPTION_CUSTOM_DESC=You may choose individual options to be installed. Recommended for experienced users. diff --git a/browser/locales/en-US/installer/mui.properties b/browser/locales/en-US/installer/mui.properties index 037414379cc..1a82d9ef61e 100755 --- a/browser/locales/en-US/installer/mui.properties +++ b/browser/locales/en-US/installer/mui.properties @@ -44,54 +44,55 @@ # Accesskeys are defined by prefixing the letter that is to be used for the # accesskey with an ampersand (e.g. &). -# Do not replace $(^NameDA) or $(^Name) with a custom string. - -# Do not change $(^NameDA) to $(^Name) or $(^Name) to $(^NameDA). NameDA allows -# Name to contain an ampersand (e.g. DA stands for double ampersand) and -# prevents the letter following the ampersand being used as an accesskey. +# Do not replace $BrandShortName, $BrandFullName, or $BrandFullNameDA with a +# 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. -MUI_TEXT_WELCOME_INFO_TITLE=Welcome to the $(^NameDA) Setup Wizard -MUI_TEXT_WELCOME_INFO_TEXT=This wizard will guide you through the installation of $(^NameDA).\n\nIt is recommended that you close all other applications before starting Setup. This will make it possible to update relevant system files without having to reboot your computer.\n\n$_CLICK + +MUI_TEXT_WELCOME_INFO_TITLE=Welcome to the $BrandFullNameDA Setup Wizard +MUI_TEXT_WELCOME_INFO_TEXT=This wizard will guide you through the installation of $BrandFullNameDA.\n\nIt is recommended that you close all other applications before starting Setup. This will make it possible to update relevant system files without having to reboot your computer.\n\n$_CLICK MUI_TEXT_LICENSE_TITLE=License Agreement -MUI_TEXT_LICENSE_SUBTITLE=Please review the license terms before installing $(^NameDA). +MUI_TEXT_LICENSE_SUBTITLE=Please review the license terms before installing $BrandFullNameDA. MUI_INNERTEXT_LICENSE_TOP=Press Page Down to see the rest of the agreement. -MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX=If you accept the terms of the agreement, click the check box below. You must accept the agreement to install $(^NameDA). $_CLICK -MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS=If you accept the terms of the agreement, select the first option below. You must accept the agreement to install $(^NameDA). $_CLICK +MUI_INNERTEXT_LICENSE_BOTTOM_CHECKBOX=If you accept the terms of the agreement, click the check box below. You must accept the agreement to install $BrandFullNameDA. $_CLICK +MUI_INNERTEXT_LICENSE_BOTTOM_RADIOBUTTONS=If you accept the terms of the agreement, select the first option below. You must accept the agreement to install $BrandFullNameDA. $_CLICK MUI_TEXT_COMPONENTS_TITLE=Choose Components -MUI_TEXT_COMPONENTS_SUBTITLE=Choose which features of $(^NameDA) you want to install. +MUI_TEXT_COMPONENTS_SUBTITLE=Choose which features of $BrandFullNameDA you want to install. MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE=Description MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO=Position your mouse over a component to see its description. MUI_TEXT_DIRECTORY_TITLE=Choose Install Location -MUI_TEXT_DIRECTORY_SUBTITLE=Choose the folder in which to install $(^NameDA). +MUI_TEXT_DIRECTORY_SUBTITLE=Choose the folder in which to install $BrandFullNameDA. MUI_TEXT_INSTALLING_TITLE=Installing -MUI_TEXT_INSTALLING_SUBTITLE=Please wait while $(^NameDA) is being installed. +MUI_TEXT_INSTALLING_SUBTITLE=Please wait while $BrandFullNameDA is being installed. MUI_TEXT_FINISH_TITLE=Installation Complete MUI_TEXT_FINISH_SUBTITLE=Setup was completed successfully. MUI_TEXT_ABORT_TITLE=Installation Aborted MUI_TEXT_ABORT_SUBTITLE=Setup was not completed successfully. MUI_BUTTONTEXT_FINISH=&Finish -MUI_TEXT_FINISH_INFO_TITLE=Completing the $(^NameDA) Setup Wizard -MUI_TEXT_FINISH_INFO_TEXT=$(^NameDA) has been installed on your computer.\n\nClick Finish to close this wizard. -MUI_TEXT_FINISH_INFO_REBOOT=Your computer must be restarted in order to complete the installation of $(^NameDA). Do you want to reboot now? +MUI_TEXT_FINISH_INFO_TITLE=Completing the $BrandFullNameDA Setup Wizard +MUI_TEXT_FINISH_INFO_TEXT=$BrandFullNameDA has been installed on your computer.\n\nClick Finish to close this wizard. +MUI_TEXT_FINISH_INFO_REBOOT=Your computer must be restarted in order to complete the installation of $BrandFullNameDA. Do you want to reboot now? MUI_TEXT_FINISH_REBOOTNOW=Reboot now MUI_TEXT_FINISH_REBOOTLATER=I want to manually reboot later MUI_TEXT_STARTMENU_TITLE=Choose Start Menu Folder -MUI_TEXT_STARTMENU_SUBTITLE=Choose a Start Menu folder for the $(^NameDA) shortcuts. +MUI_TEXT_STARTMENU_SUBTITLE=Choose a Start Menu folder for the $BrandFullNameDA shortcuts. MUI_INNERTEXT_STARTMENU_TOP=Select the Start Menu folder in which you would like to create the program's shortcuts. You can also enter a name to create a new folder. -MUI_TEXT_ABORTWARNING=Are you sure you want to quit $(^Name) Setup? -MUI_UNTEXT_WELCOME_INFO_TITLE=Welcome to the $(^NameDA) Uninstall Wizard -MUI_UNTEXT_WELCOME_INFO_TEXT=This wizard will guide you through the uninstallation of $(^NameDA).\n\nBefore starting the uninstallation, make sure $(^NameDA) is not running.\n\n$_CLICK -MUI_UNTEXT_CONFIRM_TITLE=Uninstall $(^NameDA) -MUI_UNTEXT_CONFIRM_SUBTITLE=Remove $(^NameDA) from your computer. +MUI_TEXT_ABORTWARNING=Are you sure you want to quit $BrandFullName Setup? +MUI_UNTEXT_WELCOME_INFO_TITLE=Welcome to the $BrandFullNameDA Uninstall Wizard +MUI_UNTEXT_WELCOME_INFO_TEXT=This wizard will guide you through the uninstallation of $BrandFullNameDA.\n\nBefore starting the uninstallation, make sure $BrandFullNameDA is not running.\n\n$_CLICK +MUI_UNTEXT_CONFIRM_TITLE=Uninstall $BrandFullNameDA +MUI_UNTEXT_CONFIRM_SUBTITLE=Remove $BrandFullNameDA from your computer. MUI_UNTEXT_UNINSTALLING_TITLE=Uninstalling -MUI_UNTEXT_UNINSTALLING_SUBTITLE=Please wait while $(^NameDA) is being uninstalled. +MUI_UNTEXT_UNINSTALLING_SUBTITLE=Please wait while $BrandFullNameDA is being uninstalled. MUI_UNTEXT_FINISH_TITLE=Uninstallation Complete MUI_UNTEXT_FINISH_SUBTITLE=Uninstall was completed successfully. MUI_UNTEXT_ABORT_TITLE=Uninstallation Aborted MUI_UNTEXT_ABORT_SUBTITLE=Uninstall was not completed successfully. -MUI_UNTEXT_FINISH_INFO_TITLE=Completing the $(^NameDA) Uninstall Wizard -MUI_UNTEXT_FINISH_INFO_TEXT=$(^NameDA) has been uninstalled from your computer.\n\nClick Finish to close this wizard. -MUI_UNTEXT_FINISH_INFO_REBOOT=Your computer must be restarted in order to complete the uninstallation of $(^NameDA). Do you want to reboot now? -MUI_UNTEXT_ABORTWARNING=Are you sure you want to quit $(^Name) Uninstall? +MUI_UNTEXT_FINISH_INFO_TITLE=Completing the $BrandFullNameDA Uninstall Wizard +MUI_UNTEXT_FINISH_INFO_TEXT=$BrandFullNameDA has been uninstalled from your computer.\n\nClick Finish to close this wizard. +MUI_UNTEXT_FINISH_INFO_REBOOT=Your computer must be restarted in order to complete the uninstallation of $BrandFullNameDA. Do you want to reboot now? +MUI_UNTEXT_ABORTWARNING=Are you sure you want to quit $BrandFullName Uninstall? diff --git a/browser/locales/en-US/installer/override.properties b/browser/locales/en-US/installer/override.properties index 7d09ead353a..00ea4f94019 100755 --- a/browser/locales/en-US/installer/override.properties +++ b/browser/locales/en-US/installer/override.properties @@ -41,11 +41,11 @@ # Accesskeys are defined by prefixing the letter that is to be used for the # accesskey with an ampersand (e.g. &). -# Do not replace $(^NameDA) or $(^Name) with a custom string. - -# Do not change $(^NameDA) to $(^Name) or $(^Name) to $(^NameDA). NameDA allows -# Name to contain an ampersand (e.g. DA stands for double ampersand) and -# prevents the letter following the ampersand being used as an accesskey. +# Do not replace $BrandShortName, $BrandFullName, or $BrandFullNameDA with a +# 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. @@ -55,8 +55,8 @@ # and end of a strong enclose the add and additional double quote to the # beginning and end of the string (e.g. ""This will include quotes""). -SetupCaption=$(^Name) Setup -UninstallCaption=$(^Name) Uninstall +SetupCaption=$BrandFullName Setup +UninstallCaption=$BrandFullName Uninstall BackBtn=< &Back NextBtn=&Next > AcceptBtn=I &accept the terms in the License Agreement @@ -71,15 +71,15 @@ ClickNext=Click Next to continue. ClickInstall=Click Install to start the installation. ClickUninstall=Click Uninstall to start the uninstallation. Completed=Completed -LicenseTextRB=Please review the license agreement before installing $(^NameDA). If you accept all terms of the agreement, select the first option below. $_CLICK +LicenseTextRB=Please review the license agreement before installing $BrandFullNameDA. If you accept all terms of the agreement, select the first option below. $_CLICK ComponentsText=Check the components you want to install and uncheck the components you don't want to install. $_CLICK ComponentsSubText2_NoInstTypes=Select components to install: -DirText=Setup will install $(^NameDA) in the following folder. To install in a different folder, click Browse and select another folder. $_CLICK +DirText=Setup will install $BrandFullNameDA in the following folder. To install in a different folder, click Browse and select another folder. $_CLICK DirSubText=Destination Folder -DirBrowseText=Select the folder to install $(^NameDA) in: +DirBrowseText=Select the folder to install $BrandFullNameDA in: SpaceAvailable="Space available: " SpaceRequired="Space required: " -UninstallingText=$(^NameDA) will be uninstalled from the following folder. $_CLICK +UninstallingText=$BrandFullNameDA will be uninstalled from the following folder. $_CLICK UninstallingSubText=Uninstalling from: FileError=Error opening file for writing: \r\n\r\n$0\r\n\r\nClick Abort to stop the installation,\r\nRetry to try again, or\r\nIgnore to skip this file. FileError_NoIgnore=Error opening file for writing: \r\n\r\n$0\r\n\r\nClick Retry to try again, or\r\nCancel to stop the installation. diff --git a/toolkit/mozapps/installer/windows/nsis/check-locales.pl b/toolkit/mozapps/installer/windows/nsis/check-locales.pl new file mode 100755 index 00000000000..12bf8fa8f92 --- /dev/null +++ b/toolkit/mozapps/installer/windows/nsis/check-locales.pl @@ -0,0 +1,115 @@ +#!/usr/bin/perl -w +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is Mozilla Installer locale verification. +# +# The Initial Developer of the Original Code is Mozilla Foundation +# Portions created by the Initial Developer are Copyright (C) 2006 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Robert Strong +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + +# Note: this was written using compare-locales.pl as a template. + +$failure = 0; + +sub readProperties +{ + my ($file) = @_; + + open PROPS, "<$file" || die ("Couldn't open file $file"); + + local $/ = undef; + my $contents = ; + close PROPS; + + $contents =~ s/\\$$//gm; + + return $contents =~ /^\s*([^#!\r\n]*)$/gm; +} + +sub checkProperties +{ + my ($path) = @_; + + my @invalid; + + my @entities = readProperties("$gSourceDir/$path"); + + foreach my $entity (@entities) { + if ($entity =~ m|.*(\$\(\^Name\)).*| || + $entity =~ m|.*(\$\(\^NameDA\)).*| || + $entity =~ m|.*(\$\{BrandFullName\}).*| || + $entity =~ m|.*(\$\{BrandShortName\}).*|) { + push @invalid, "$entity\n *** incorrect variable usage please refer to en-US"; + } + } + + if (@invalid) { + $failure = 1; + print "Properties in $path using invalid values:\n"; + if (@invalid) { + print " In $gSourceDir: (change these in your localization)\n"; + map { print " $_\n"; } @invalid; + } + } +} + +sub checkDir +{ + my ($path) = @_; + + my (@entries); + + opendir(DIR, "$gSourceDir/$path") || + die ("Couldn't list $gSourceDir/$path"); + @entries = grep(!(/^(\.|CVS)/ || /~$/), readdir(DIR)); + closedir(DIR); + + foreach my $file (@entries) { + if (-d "$gSourceDir/$path/$file") { + checkDir("$path/$file"); + } else { + if ($file =~ /\.properties$/) { + checkProperties("$path/$file"); + } + } + } +} + +local ($gSourceDir) = @ARGV; +($gSourceDir) || die("Specify one directory to verify"); + +if (!-d $gSourceDir) { + die("Not a directory"); +} + +checkDir("."); + +exit $failure; diff --git a/toolkit/mozapps/installer/windows/nsis/common.nsh b/toolkit/mozapps/installer/windows/nsis/common.nsh index ac92936ead1..af7dcec9b84 100755 --- a/toolkit/mozapps/installer/windows/nsis/common.nsh +++ b/toolkit/mozapps/installer/windows/nsis/common.nsh @@ -324,47 +324,24 @@ WriteINIStr "$PLUGINSDIR\components.ini" "Field 1" Top "5" WriteINIStr "$PLUGINSDIR\components.ini" "Field 1" Bottom "15" - StrCpy $R1 2 ${If} ${FileExists} "$EXEDIR\optional\extensions\inspector@mozilla.org" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Type "checkbox" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Text "$(DOMI_TITLE)" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Left "15" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Right "-1" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Top "20" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Bottom "30" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" State "1" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Flags "GROUP" - IntOp $R1 $R1 + 1 - ${EndIf} - - ${If} ${FileExists} "$EXEDIR\optional\extensions\talkback@mozilla.org" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Type "checkbox" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Text "$(QFA_TITLE)" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Left "15" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Right "-1" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Top "55" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Bottom "65" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" State "1" - IntOp $R1 $R1 + 1 + WriteINIStr "$PLUGINSDIR\components.ini" "Field 2" Type "checkbox" + WriteINIStr "$PLUGINSDIR\components.ini" "Field 2" Text "$(DOMI_TITLE)" + WriteINIStr "$PLUGINSDIR\components.ini" "Field 2" Left "15" + WriteINIStr "$PLUGINSDIR\components.ini" "Field 2" Right "-1" + WriteINIStr "$PLUGINSDIR\components.ini" "Field 2" Top "20" + WriteINIStr "$PLUGINSDIR\components.ini" "Field 2" Bottom "30" + WriteINIStr "$PLUGINSDIR\components.ini" "Field 2" State "1" + WriteINIStr "$PLUGINSDIR\components.ini" "Field 2" Flags "GROUP" ${EndIf} ${If} ${FileExists} "$EXEDIR\optional\extensions\inspector@mozilla.org" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Type "label" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Text "$(DOMI_TEXT)" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Left "30" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Right "-1" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Top "32" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Bottom "52" - IntOp $R1 $R1 + 1 - ${EndIf} - - ${If} ${FileExists} "$EXEDIR\optional\extensions\talkback@mozilla.org" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Type "label" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Text "$(QFA_TEXT)" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Left "30" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Right "-1" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Top "67" - WriteINIStr "$PLUGINSDIR\components.ini" "Field $R1" Bottom "87" + WriteINIStr "$PLUGINSDIR\components.ini" "Field 3" Type "label" + WriteINIStr "$PLUGINSDIR\components.ini" "Field 3" Text "$(DOMI_TEXT)" + WriteINIStr "$PLUGINSDIR\components.ini" "Field 3" Left "30" + WriteINIStr "$PLUGINSDIR\components.ini" "Field 3" Right "-1" + WriteINIStr "$PLUGINSDIR\components.ini" "Field 3" Top "32" + WriteINIStr "$PLUGINSDIR\components.ini" "Field 3" Bottom "52" ${EndIf} !macroend @@ -1377,6 +1354,7 @@ StrCmp "$R5" "" +2 +1 WriteRegStr SHCTX "$R4\shell\open\command" "" "$R5" +!ifdef DDEApplication StrCmp "$R9" "true" +1 +11 WriteRegStr SHCTX "$R4\shell\open\ddeexec" "" "$\"%1$\",,0,0,,,," WriteRegStr SHCTX "$R4\shell\open\ddeexec" "NoActivateHandler" "" @@ -1388,6 +1366,7 @@ ; default handler and if this key exists IE's shell integration breaks. DeleteRegKey HKLM "$R4\shell\open\ddeexec\ifexec" DeleteRegKey HKCU "$R4\shell\open\ddeexec\ifexec" +!endif ClearErrors @@ -3662,6 +3641,113 @@ ################################################################################ # Macros for custom branding +/** + * Sets BrandFullName and / or BrandShortName to values provided in the specified + * ini file and defaults to BrandShortName and BrandFullName as defined in + * branding.nsi when the associated ini file entry is not specified. + * + * ini file format: + * [Branding] + * BrandFullName=Custom Full Name + * BrandShortName=Custom Short Name + * + * @param _PATH_TO_INI + * Path to the ini file. + * + * $R6 = return value from ReadINIStr + * $R7 = stores BrandShortName + * $R8 = stores BrandFullName + * $R9 = _PATH_TO_INI + */ +!macro SetBrandNameVars + + !ifndef ${_MOZFUNC_UN}SetBrandNameVars + !define _MOZFUNC_UN_TMP ${_MOZFUNC_UN} + !insertmacro ${_MOZFUNC_UN_TMP}WordReplace + !undef _MOZFUNC_UN + !define _MOZFUNC_UN ${_MOZFUNC_UN_TMP} + !undef _MOZFUNC_UN_TMP + + ; Prevent declaring vars twice when the SetBrandNameVars macro is + ; inserted into both the installer and uninstaller. + !ifndef SetBrandNameVars + Var BrandFullName + Var BrandFullNameDA + Var BrandShortName + !endif + + !verbose push + !verbose ${_MOZFUNC_VERBOSE} + !define ${_MOZFUNC_UN}SetBrandNameVars "!insertmacro ${_MOZFUNC_UN}SetBrandNameVarsCall" + + Function ${_MOZFUNC_UN}SetBrandNameVars + Exch $R9 + Push $R8 + Push $R7 + Push $R6 + + StrCpy $R8 "${BrandFullName}" + StrCpy $R7 "${BrandShortName}" + + IfFileExists "$R9" +1 finish + + ClearErrors + ReadINIStr $R6 $R9 "Branding" "BrandFullName" + IfErrors +2 +1 + StrCpy $R8 "$R6" + + ClearErrors + ReadINIStr $R6 $R9 "Branding" "BrandShortName" + IfErrors +2 +1 + StrCpy $R7 "$R6" + + finish: + StrCpy $BrandFullName "$R8" + ${${_MOZFUNC_UN}WordReplace} "$R8" "&" "&&" "+" $R8 + StrCpy $BrandFullNameDA "$R8" + StrCpy $BrandShortName "$R7" + + Pop $R6 + Pop $R7 + Pop $R8 + Exch $R9 + FunctionEnd + + !verbose pop + !endif +!macroend + +!macro SetBrandNameVarsCall _PATH_TO_INI + !verbose push + !verbose ${_MOZFUNC_VERBOSE} + Push "${_PATH_TO_INI}" + Call SetBrandNameVars + !verbose pop +!macroend + +!macro un.SetBrandNameVarsCall _PATH_TO_INI + !verbose push + !verbose ${_MOZFUNC_VERBOSE} + Push "${_PATH_TO_INI}" + Call un.SetBrandNameVars + !verbose pop +!macroend + +!macro un.SetBrandNameVars + !ifndef un.SetBrandNameVars + !verbose push + !verbose ${_MOZFUNC_VERBOSE} + !undef _MOZFUNC_UN + !define _MOZFUNC_UN "un." + + !insertmacro SetBrandNameVars + + !undef _MOZFUNC_UN + !define _MOZFUNC_UN + !verbose pop + !endif +!macroend + /** * Replaces the wizard's header image with the one specified. *