Index: installers/build.scons |
diff --git a/installers/build.scons b/installers/build.scons |
deleted file mode 100644 |
index 8300f92179216a1f39bbd9ecc05a578041001742..0000000000000000000000000000000000000000 |
--- a/installers/build.scons |
+++ /dev/null |
@@ -1,230 +0,0 @@ |
-#!/usr/bin/python2.4 |
-# |
-# Copyright 2009 Google Inc. |
-# |
-# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 |
-# |
-# Unless required by applicable law or agreed to in writing, software |
-# distributed under the License is distributed on an "AS IS" BASIS, |
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-# See the License for the specific language governing permissions and |
-# limitations under the License. |
-# ======================================================================== |
- |
- |
-Import('env') |
- |
-import codecs |
-import os |
-import re |
-import string |
- |
-from installers import build_metainstaller |
- |
-_RECOVERY_MARKUP_DLL_BASE_NAME = 'recovery_markup' |
-_RECOVERY_MARKUP_DLL = _RECOVERY_MARKUP_DLL_BASE_NAME + '.dll' |
- |
-_CLICKONCE_DEPLOY_DIR = '$TARGET_ROOT/clickonce_deployment' |
- |
-# This will be of the form 'GoogleInstaller_en.application'. |
-def _GetClickOnceDeploymentName(language): |
- return 'GoogleInstaller_%s.application' % (language) |
- |
-# Generate a ClickOnce deployment manifest personalized with the localized |
-# display name of 'Google Installer'. |
-def _GenerateDeploymentForOneLanguage(omaha_version_info, language): |
- clickonce_deployment_name = _GetClickOnceDeploymentName(language) |
- |
- clickonce_manifest_name = 'clickonce_bootstrap.exe.manifest' |
- clickonce_manifest = '%s/%s' % (_CLICKONCE_DEPLOY_DIR, |
- clickonce_manifest_name) |
- |
- # Generate the deployment manifest with a dummy name of 'xxxXXXxxx'. The |
- # Python commands module does not work with Unicode strings, so we will |
- # substitute the name in the add_trusturlparams_and_name_command below. |
- generate_deploy_manifest_command = ( |
- '@mage -New Deployment -Install false -ToFile $TARGET -Name xxxXXXxxx' |
- ' -Version %s -Processor x86 -AppManifest $SOURCE -AppCodeBase %s' % |
- (omaha_version_info.GetVersionString(), clickonce_manifest_name)) |
- |
- # Have to set up a clear chain of source->target1->target2->target3->etc so |
- # that declarative Hammer will know the order in which to run each command. |
- clickonce_target_1 = env.Command( |
- target=clickonce_deployment_name + '.base', |
- source=clickonce_manifest, |
- action=generate_deploy_manifest_command, |
- ) |
- |
- # Get the localized 'Google Installer' string. |
- mi_generated_resource = ( |
- '$MAIN_DIR/mi_exe_stub/mi_generated_resources_%s.rc' % language) |
- f_in = codecs.open(env.File(mi_generated_resource).abspath, 'r', 'utf16') |
- mi_resource_contents = f_in.read() |
- f_in.close() |
- |
- # Get and format strings necessary to generate the display name. |
- # index() will throw and abort the build if there is no match. |
- |
- # First, get the company name. |
- company_name_start = (mi_resource_contents.index('IDS_FRIENDLY_COMPANY_NAME')) |
- company_name_start = mi_resource_contents.index('"', company_name_start) |
- company_name_end = mi_resource_contents.index('"', company_name_start + 1) |
- # Since it is inserted into the display name, the quotes must be dropped. |
- company_name = mi_resource_contents[company_name_start + 1:company_name_end] |
- if -1 != company_name.find('"'): |
- raise Exception('Slice indexes are incorrect!') |
- |
- # Now get the installer display name and replace the placeholder with the |
- # company name. |
- display_name_start = ( |
- mi_resource_contents.index('IDS_INSTALLER_DISPLAY_NAME')) |
- display_name_start = mi_resource_contents.index('"', display_name_start) |
- display_name_end = mi_resource_contents.index('"', display_name_start + 1) |
- display_name = mi_resource_contents[display_name_start:display_name_end + 1] |
- display_name = display_name.replace('%1!s!', company_name) |
- |
- # display_name is utf8 encoded to allow the commands and the default codec to |
- # pass it through. |
- display_name = display_name.encode('utf8') |
- |
- # mage.exe does not provide a way to add the trustURLParameters attribute to |
- # an application manifest. This script fills that gap. It also adds in the |
- # localized display name, to get around issues with the Python commands |
- # module. |
- add_trusturlparams_and_name_command = ( |
- '@python %s --manifest_file=$SOURCE --output_file=$TARGET --display_name=' |
- '%s' % (env.File('$MAIN_DIR/clickonce/add_trusturlparams.py').abspath, |
- display_name)) |
- |
- # This is the next step in the target chain |
- clickonce_target_2 = env.Command( |
- target=clickonce_deployment_name + '.unsigned', |
- source=clickonce_target_1, |
- action=add_trusturlparams_and_name_command, |
- ) |
- |
- # Sign the deployment manifest. |
- # This will be of the form |
- # 'scons-out\dbg-win\clickonce_deployment\GoogleInstaller_en.application'. |
- manifest_target = '%s/%s' % (_CLICKONCE_DEPLOY_DIR, clickonce_deployment_name) |
- env.SignDotNetManifest(manifest_target, clickonce_target_2) |
- |
- |
- |
-def _BuildSetup(omaha_versions_info, is_repair = False): |
- # Build the meta-installer for each version. |
- _PRODUCT_NAME = 'GoogleUpdate' |
- |
- for omaha_version_info in omaha_versions_info: |
- prefix = omaha_version_info.filename_prefix |
- |
- source_binary = '$OBJ_ROOT/mi_exe_stub/%smi_exe_stub.exe' % prefix |
- |
- if is_repair: |
- _BuildSetupRepairVersion(omaha_version_info, |
- source_binary, |
- _PRODUCT_NAME, |
- prefix) |
- else: |
- _BuildSetupVersion(omaha_version_info, |
- source_binary, |
- _PRODUCT_NAME, |
- prefix) |
- |
- |
- |
-def _BuildSetupRepairVersion(omaha_version_info, |
- source_binary, |
- product_name, |
- prefix = ''): |
- # Build the target setup executable by merging the empty metafile |
- # with the resource dll built earlier |
- merged_output = env.Command( |
- target='%smi_exe_stub_repair.exe' % (prefix), |
- source=[source_binary, '$OBJ_ROOT/installers/' + _RECOVERY_MARKUP_DLL], |
- action='@$MAIN_DIR/tools/resmerge --copyappend $SOURCES $TARGET', |
- ) |
- |
- build_metainstaller.BuildMetaInstaller( |
- env=env, |
- target_name='%s%sSetup_repair.exe' % (prefix, product_name), |
- omaha_version_info=omaha_version_info, |
- empty_metainstaller_path=merged_output, |
- omaha_files_path='$STAGING_DIR', |
- prefix = prefix, |
- suffix = '_repair', |
- additional_payload_contents = [ |
- '$STAGING_DIR/GoogleUpdateHelperPatch.msp', |
- ], |
- ) |
- |
- |
- |
-def _BuildSetupVersion(omaha_version_info, |
- source_binary, |
- product_name, |
- prefix = ''): |
- target_name = '%s%sSetup.exe' % (prefix, product_name) |
- |
- build_metainstaller.BuildMetaInstaller( |
- env=env, |
- omaha_version_info=omaha_version_info, |
- target_name=target_name, |
- empty_metainstaller_path=source_binary, |
- omaha_files_path='$STAGING_DIR', |
- prefix=prefix |
- ) |
- |
- # Generate the i18n ClickOnce deployment manifest for languages that we |
- # support. |
- if env.Bit('all') or 'OMAHA_BUILD_CLICKONCE' in os.environ.keys(): |
- for language in omaha_version_info.GetSupportedLanguages(): |
- _GenerateDeploymentForOneLanguage(omaha_version_info, language) |
- |
- # zh-HK needs a deployment file, but it is not in |
- # omaha_version_info.GetSupportedLanguages() and there is no |
- # mi_generated_resources_zh-HK.rc file. The few translations are inherited |
- # from zh-TW, and there are no language code-specific values in the |
- # deployment file, so just copy the zh-TW file to zh-HK. |
- env.Command( |
- target='%s/%s' % (_CLICKONCE_DEPLOY_DIR, |
- _GetClickOnceDeploymentName('zh-HK')), |
- source='%s/%s' % (_CLICKONCE_DEPLOY_DIR, |
- _GetClickOnceDeploymentName('zh-TW')), |
- action='@copy /y $SOURCES $TARGET' |
- ) |
- |
-if not env.Bit('official_installers'): |
- omaha_versions_info = env['omaha_versions_info'] |
- |
- # Build the normal tagged installers. |
- _BuildSetup(omaha_versions_info) |
- |
- env.Replicate( |
- target=[ |
- '$TARGET_ROOT/clickonce_deployment/bin/', |
- '$STAGING_DIR', |
- ], |
- source='$OBJ_ROOT/installers/GoogleUpdateSetup.exe', |
- ) |
- |
- # Build the repair installer. |
- _BuildSetup(omaha_versions_info, is_repair = True) |
- |
- # Build a resource DLL containing the recovery markup resource. |
- dll_env = env.Clone(COMPONENT_STATIC=False) |
- dll_env['LINKFLAGS'] += ['/noentry'] |
- |
- dll_inputs = [ |
- '../installers/resource_only_dll.def', |
- dll_env.RES('recovery_markup.res', |
- '$MAIN_DIR/recovery/recovery_markup.rc') |
- ] |
- |
- dll_env.ComponentLibrary(_RECOVERY_MARKUP_DLL_BASE_NAME, dll_inputs) |
- |
- |