| Index: installer/win/build.scons
|
| ===================================================================
|
| --- installer/win/build.scons (revision 30708)
|
| +++ installer/win/build.scons (working copy)
|
| @@ -1,246 +0,0 @@
|
| -# Copyright 2009, Google Inc.
|
| -# All rights reserved.
|
| -#
|
| -# Redistribution and use in source and binary forms, with or without
|
| -# modification, are permitted provided that the following conditions are
|
| -# met:
|
| -#
|
| -# * Redistributions of source code must retain the above copyright
|
| -# notice, this list of conditions and the following disclaimer.
|
| -# * Redistributions in binary form must reproduce the above
|
| -# copyright notice, this list of conditions and the following disclaimer
|
| -# in the documentation and/or other materials provided with the
|
| -# distribution.
|
| -# * Neither the name of Google Inc. nor the names of its
|
| -# contributors may be used to endorse or promote products derived from
|
| -# this software without specific prior written permission.
|
| -#
|
| -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
| -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
| -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
| -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
| -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| -
|
| -
|
| -import os
|
| -Import('env')
|
| -
|
| -INPUTS = [
|
| - 'custom_actions.cc',
|
| -]
|
| -
|
| -CUSTOM_ACTIONS_LIBS = [
|
| - 'advapi32',
|
| - 'dxguid',
|
| - 'msi',
|
| - 'ole32',
|
| - 'oleaut32',
|
| - 'shell32',
|
| - 'shlwapi',
|
| - 'user32',
|
| -]
|
| -
|
| -# Build the dll, provide our own set of libraries to be linked with our dll.
|
| -# It is important to have full control of this since custom actions will run
|
| -# in a 'sandbox' and can't have external dependencies.
|
| -cactions = env.ComponentLibrary('cactions', INPUTS, LIBS=CUSTOM_ACTIONS_LIBS,
|
| - COMPONENT_STATIC=False)
|
| -
|
| -# copy to artifacts
|
| -env.Replicate('$ARTIFACTS_DIR', cactions[0])
|
| -
|
| -# Unique guid for o3d namespace generated by www.guidgen.com
|
| -o3d_namespace_guid = 'B445DBAE-F5F9-435A-9A9B-088261CDF00A'
|
| -
|
| -# Pull out version numbers.
|
| -nppversion = env.get('O3D_PLUGIN_VERSION_COMMAS')
|
| -dotnppversion = env.get('O3D_PLUGIN_VERSION')
|
| -# We don't actually want the extras version to update by itself; it should
|
| -# change only when we actually add something to the installer or change the
|
| -# d3dx9 version. This version is therefore independent of the o3d plugin and
|
| -# sdk versions.
|
| -extrasversion ='0,1,1,0'
|
| -dotextrasversion = '0.1.1.0'
|
| -
|
| -# TODO: this should be a tool!!
|
| -
|
| -# Utility function for generating GUID's in the o3d namespace.
|
| -def gen_named_guid(namespace_guid, name, version):
|
| - nbguidgen_exe = env.File('$SCONSTRUCT_DIR/nbguidgen/win/nbguidgen.exe')
|
| - guid = os.popen('%s %s %s' %
|
| - (nbguidgen_exe.abspath, namespace_guid,
|
| - '%s-%s' % (name, version))).read()
|
| - return guid
|
| -
|
| -def get_guid_generator(namespace_guid, version):
|
| - return lambda name: gen_named_guid(namespace_guid, name, version)
|
| -
|
| -# TODO: These all return the same generator if their versions match.
|
| -# Is that a problem? Do we really need more than one of them?
|
| -plugin_guid_generator = \
|
| - get_guid_generator(o3d_namespace_guid, nppversion)
|
| -extras_guid_generator = \
|
| - get_guid_generator(o3d_namespace_guid, extrasversion)
|
| -
|
| -google_update_reg_path = 'Software\\Google\\Update\\Clients\\'
|
| -google_update_state_reg_path = 'Software\\Google\\Update\\ClientState\\'
|
| -
|
| -# Guids and other variables for the plugin installer:
|
| -o3d_npp_product_guid = plugin_guid_generator('o3d_product')
|
| -o3d_npp_package_guid = plugin_guid_generator('o3d_package')
|
| -dx_redist_guid = plugin_guid_generator('dx_redist')
|
| -d3dx_guid = plugin_guid_generator('d3dx')
|
| -
|
| -# Changing the following values would break upgrade paths, so we hard-code the
|
| -# values instead of generating them. The commands used to generate them are
|
| -# kept, so that we can avoid creating collisions accidentally.
|
| -
|
| -# bad_old_o3d_upgrade_code = gen_named_guid(o3d_namespace_guid,
|
| -# 'magicflute_upgrade', '')
|
| -# o3d_npp_upgrade_code = gen_named_guid(o3d_namespace_guid,
|
| -# 'plugin_upgrade', '')
|
| -# o3d_extras_upgrade_code = gen_named_guid(o3d_namespace_guid,
|
| -# 'extras_upgrade', '')
|
| -bad_old_o3d_upgrade_code = 'dc819ed6-4155-3cff-b580-45626aed5848'
|
| -o3d_npp_upgrade_code = '0f098121-2876-3c23-bd4c-501220ecbb42'
|
| -o3d_extras_upgrade_code = 'c271f2f0-c7ad-3bc9-8216-211436aa2244'
|
| -
|
| -# Keep these around for historical reasons; if we ever want to bring the SDK
|
| -# back, we might want to use the same GUIDs and Google Update project for
|
| -# simplicity.
|
| -#o3d_sdk_upgrade_code = 'd6b024ab-1784-348b-80c5-96ab43799d0a'
|
| -#o3d_sdk_google_update_guid = '{00764f6f-9998-4520-9c41-94a30e36565a}'
|
| -
|
| -o3d_npp_component_guid = plugin_guid_generator(
|
| - 'o3d_npplugin_component')
|
| -o3d_iep_component_guid = plugin_guid_generator(
|
| - 'o3d_ieplugin_component')
|
| -o3d_npp_google_update_reg_component_guid = plugin_guid_generator(
|
| - 'o3d_user_google_update_reg_component')
|
| -o3d_reporter_guid = plugin_guid_generator('o3d_reporter')
|
| -o3d_driver_blacklist_guid = plugin_guid_generator(
|
| - 'o3d_driver_blacklist')
|
| -o3d_software_renderer_guid = plugin_guid_generator(
|
| - 'o3d_software_renderer')
|
| -o3d_npp_google_update_guid = '{70308795-045C-42da-8F4E-D452381A7459}'
|
| -o3d_npp_reg_key = '%s%s' % (google_update_reg_path, o3d_npp_google_update_guid)
|
| -o3d_npp_state_reg_key = '%s%s' % (
|
| - google_update_state_reg_path, o3d_npp_google_update_guid)
|
| -
|
| -# Guids and other variables for the extras installer:
|
| -o3d_extras_d3dx_component_guid = plugin_guid_generator(
|
| - 'o3d_extras_d3dx_component')
|
| -o3d_extras_product_guid = extras_guid_generator('o3d_extras_product')
|
| -o3d_extras_package_guid = extras_guid_generator('o3d_extras_package')
|
| -o3d_get_extras_guid = gen_named_guid(o3d_namespace_guid,
|
| - 'extras_installer', '')
|
| -
|
| -o3d_extras_google_update_guid = '{34B2805D-C72C-4f81-AED5-5A22D1E092F1}'
|
| -o3d_extras_reg_key = '%s%s' % (google_update_reg_path, o3d_extras_google_update_guid)
|
| -
|
| -# Wix tool needs to be in the PATH.
|
| -# TODO: the wix tool should not need this dance!
|
| -wix_path = env.Dir('$WIX_DIR')
|
| -path = os.environ['PATH']
|
| -path += os.pathsep + wix_path.abspath
|
| -os.environ['PATH'] = path
|
| -
|
| -# Add the wix tool to the SCons environment.
|
| -env.Tool('wix')
|
| -
|
| -# Lookup the plugin to be installed
|
| -npplugin_path = env.File('$ARTIFACTS_DIR/npo3dautoplugin.dll')
|
| -ieplugin_path = env.File('$ARTIFACTS_DIR/o3d_host.dll')
|
| -conditioner_path = env.File('$ARTIFACTS_DIR/o3dConditioner.exe')
|
| -cglib1_path = env.File('$ARTIFACTS_DIR/cg.dll')
|
| -cglib2_path = env.File('$ARTIFACTS_DIR/cgGL.dll')
|
| -cgc_path = env.File('$ARTIFACTS_DIR/cgc.exe')
|
| -docs_path = env.File('$SCONSTRUCT_DIR/installer/win/docs.url')
|
| -rep_path = env.File('$ARTIFACTS_DIR/reporter.exe')
|
| -dbl_path = env.File('$SCONSTRUCT_DIR/installer/win/driver_blacklist.txt')
|
| -get_extras_path = env.File('$ARTIFACTS_DIR/getextras.exe')
|
| -custom_actions_path = env.File('$ARTIFACTS_DIR/cactions.dll')
|
| -
|
| -# Tell wix to include the software renderer IFF it's there.
|
| -software_renderer_path = \
|
| - env.File('$SWIFTSHADER_DIR/swiftshader_d3d9.dll').abspath
|
| -include_software_renderer = os.path.exists(software_renderer_path)
|
| -
|
| -# Path to custom actions dll.
|
| -cactions_dll_path = env.File('$ARTIFACTS_DIR/cactions.dll')
|
| -
|
| -# Pass flags to the wix compiler.
|
| -env.Append(WIXCANDLEFLAGS = [
|
| - '-dCustomActionsPath=' + custom_actions_path.abspath,
|
| - '-dD3DXGuid=' + d3dx_guid,
|
| - '-dDBLGuid=' + o3d_driver_blacklist_guid,
|
| - '-dDBLPath=' + dbl_path.abspath,
|
| - '-dDeprecatedUpgradeCode=' + bad_old_o3d_upgrade_code,
|
| - '-dGetExtrasGuid=' + o3d_get_extras_guid,
|
| - '-dGetExtrasPath=' + get_extras_path.abspath,
|
| - '-dIEPluginPath=' + ieplugin_path.abspath,
|
| - '-dIepComponentGuid=' + o3d_iep_component_guid,
|
| - '-dIncludeSoftwareRenderer=%s' % include_software_renderer,
|
| - '-dNPPluginPath=' + npplugin_path.abspath,
|
| - '-dNppComponentGuid=' + o3d_npp_component_guid,
|
| - '-dNppGoogleUpdateRegGuid=' + o3d_npp_google_update_reg_component_guid,
|
| - '-dNppGoogleUpdateRegKey=' + o3d_npp_reg_key,
|
| - '-dNppGoogleUpdateStateRegKey=' + o3d_npp_state_reg_key,
|
| - '-dNppPackageGuid=' + o3d_npp_package_guid,
|
| - '-dNppProductGuid=' + o3d_npp_product_guid,
|
| - '-dNppUpgradeCode=' + o3d_npp_upgrade_code,
|
| - '-dNppVersion=' + dotnppversion,
|
| - '-dRepGuid=' + o3d_reporter_guid,
|
| - '-dRepPath=' + rep_path.abspath,
|
| - '-dSoftwareRendererGuid=' + o3d_software_renderer_guid,
|
| - '-dSoftwareRendererPath=' + software_renderer_path,
|
| -])
|
| -
|
| -# Build installer
|
| -installer_msi = env.WiX('o3d.msi', ['o3d.wxs'])
|
| -
|
| -# Make sure that the plugin dll has been built before building the installer.
|
| -# Make sure that the custom action dll has been built before building the
|
| -# installer.
|
| -# Relies on reporter.exe being built prior to installer.
|
| -env.Depends(installer_msi,
|
| - [npplugin_path, ieplugin_path, cactions_dll_path, rep_path,
|
| - get_extras_path])
|
| -
|
| -# Copy to artifacts.
|
| -env.Replicate('$ARTIFACTS_DIR', installer_msi)
|
| -
|
| -
|
| -
|
| -# Path to DirectX redistribution files.
|
| -dx_redist_path = env.Dir('$DIRECTX_REDIST_DIR')
|
| -
|
| -# Only build o3dextras if we have the dx redistributables.
|
| -if os.path.exists(dx_redist_path.abspath):
|
| - # New WiX flags for the Extras package [currently just the d3dx9 dll]. Note
|
| - # that this DOESN'T make the above flags go away; it just adds new ones or
|
| - # overwrites name clashes. So we use distinctive names so as to avoid
|
| - # surprises. The only flag from above that's used in the extras installer is
|
| - # DxRedistPath.
|
| - env.Append(WIXCANDLEFLAGS = [
|
| - '-dDxRedistPath=' + dx_redist_path.abspath,
|
| - '-dExtrasD3DXComponentGuid=' + o3d_extras_d3dx_component_guid,
|
| - '-dExtrasProductGuid=' + o3d_extras_product_guid,
|
| - '-dExtrasUpgradeCode=' + o3d_extras_upgrade_code,
|
| - '-dExtrasPackageGuid=' + o3d_extras_package_guid,
|
| - '-dExtrasVersion=' + dotextrasversion,
|
| - '-dExtrasGoogleUpdateRegGuid=' + o3d_extras_google_update_guid,
|
| - '-dExtrasGoogleUpdateRegKey=' + o3d_extras_reg_key,
|
| - ])
|
| -
|
| - # Build the installer
|
| - extras_msi = env.WiX('o3dextras.msi', ['o3dextras.wxs'])
|
| -
|
| - # copy to artifacts
|
| - env.Replicate('$ARTIFACTS_DIR', extras_msi)
|
|
|