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) |