blob: 6003015e5fb7a39c1a995b2ffcb6a54e978c84c4 [file] [log] [blame]
#!/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.
# ========================================================================
# Note: The localized ClickOnce deployment manifest is generated in
# installers/build.scons.
Import('env')
clickonce_name = 'clickonce_bootstrap'
clickonce_binary = clickonce_name + '.exe'
clickonce_res = clickonce_name + '.res'
#
# Build the .res file.
#
env.RES(target=clickonce_res, source='clickonce_bootstrap.rc')
#
# Generate the executable.
#
exe_action = 'csc.exe /target:winexe /platform:x86 /out:$TARGET /win32res:%s '\
'$SOURCES' % (env.File(clickonce_res).path)
exe_output = env.Command(
target=clickonce_binary,
source='clickonce_bootstrap.cs',
action=exe_action
)
# Inform Hammer that the .res file must be built before the executeable
env.Requires(exe_output, clickonce_res)
clickonce_deploy_dir = '$TARGET_ROOT/Clickonce_Deployment'
clickonce_deploy_bin_dir = clickonce_deploy_dir + '/bin'
# Copy executable into Clickonce deployment directory.
replicate_output = env.Replicate(clickonce_deploy_bin_dir, exe_output)
#
# Generate the application manifest.
#
v = env['product_version'][0]
version_string = '%d.%d.%d.%d' % (v[0], v[1], v[2], v[3])
generate_manifest_action = ('@mage -New Application -ToFile $TARGET -Name %s'
' -Version %s -FromDirectory %s -Processor x86 -TrustLevel FullTrust' % (
clickonce_name, version_string, env.Dir(clickonce_deploy_bin_dir).abspath))
unsigned_manifest = env.Command(
target=clickonce_binary + '.manifest',
source=replicate_output,
action=generate_manifest_action
)
# Sign the application manifest.
manifest_target = '%s/%s.manifest' % (clickonce_deploy_dir, clickonce_binary)
signed_manifest = env.SignDotNetManifest(manifest_target, unsigned_manifest)
# Instruct Hammer to regenerate the manifests when either of these
# executables change
env.Depends(
target = [
unsigned_manifest,
signed_manifest,
],
dependency = [
'%s/%s' % (clickonce_deploy_bin_dir, clickonce_binary),
'%s/GoogleUpdateSetup.exe' % (clickonce_deploy_bin_dir),
]
)