OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """Copies necessary add-in files into place to install the add-in. | 6 """Copies necessary add-in files into place to install the add-in. |
7 | 7 |
8 This script will copy the necessary files for the Visual Studio add-in | 8 This script will copy the necessary files for the Visual Studio add-in |
9 to where Visual Studio can find them. It assumes the current directory | 9 to where Visual Studio can find them. It assumes the current directory |
10 contains the necessary files to copy. | 10 contains the necessary files to copy. |
11 """ | 11 """ |
12 | 12 |
13 import create_ppapi_platform | 13 import create_ppapi_platform |
14 import ctypes | 14 import ctypes |
15 import os | 15 import os |
16 import optparse | 16 import optparse |
17 import platform | 17 import platform |
18 import shutil | 18 import shutil |
19 import sys | 19 import sys |
20 import time | 20 import time |
21 | 21 |
22 NACL_PLATFORM_NAME = 'NaCl' | 22 NACL_PLATFORM_NAME = 'NaCl' |
23 PEPPER_PLATFORM_NAME = 'PPAPI' | 23 PEPPER_PLATFORM_NAME = 'PPAPI' |
24 | 24 |
25 DEFAULT_VS_USER_DIRECTORY = os.path.expandvars( | 25 DEFAULT_VS_USER_DIRECTORY = os.path.expandvars( |
26 '%USERPROFILE%\\My Documents\\Visual Studio 2010') | 26 '%USERPROFILE%\\My Documents\\Visual Studio 2010') |
27 | 27 |
28 DEFAULT_MS_BUILD_DIRECTORY = os.path.expandvars('%ProgramFiles(x86)%\\MSBuild') | |
29 | |
30 SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) | 28 SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) |
31 | 29 |
32 ADDIN_FILES = ['NativeClientVSAddIn.AddIn', 'NativeClientVSAddIn.dll'] | 30 ADDIN_FILES = ['NativeClientVSAddIn.AddIn', 'NativeClientVSAddIn.dll'] |
33 | 31 |
34 class InstallError(Exception): | 32 class InstallError(Exception): |
35 """Error class for this installer indicating a fatal but expected error.""" | 33 """Error class for this installer indicating a fatal but expected error.""" |
36 pass | 34 pass |
37 | 35 |
38 def UninstallDirectory(directory): | 36 def UninstallDirectory(directory): |
39 if os.path.exists(directory): | 37 if os.path.exists(directory): |
(...skipping 28 matching lines...) Expand all Loading... |
68 answer = raw_input().strip().lower() | 66 answer = raw_input().strip().lower() |
69 if answer in ('y', 'yes'): | 67 if answer in ('y', 'yes'): |
70 return True | 68 return True |
71 if answer in ('n', 'no'): | 69 if answer in ('n', 'no'): |
72 return False | 70 return False |
73 | 71 |
74 | 72 |
75 def main(): | 73 def main(): |
76 parser = optparse.OptionParser(usage='Usage: %prog [options]') | 74 parser = optparse.OptionParser(usage='Usage: %prog [options]') |
77 parser.add_option('-b', '--msbuild-path', dest='msbuild_path', | 75 parser.add_option('-b', '--msbuild-path', dest='msbuild_path', |
78 default=DEFAULT_MS_BUILD_DIRECTORY, metavar='PATH', | 76 metavar='PATH', help='Provide the path to the MSBuild directory') |
79 help='Provide the path to the MSBuild directory') | |
80 parser.add_option('-a', '--vsuser-path', dest='vsuser_path', | 77 parser.add_option('-a', '--vsuser-path', dest='vsuser_path', |
81 default=DEFAULT_VS_USER_DIRECTORY, metavar='PATH', | 78 default=DEFAULT_VS_USER_DIRECTORY, metavar='PATH', |
82 help='Provide the path to the Visual Studio user directory') | 79 help='Provide the path to the Visual Studio user directory') |
83 parser.add_option('-f', '--force', action="store_true", | 80 parser.add_option('-f', '--force', action="store_true", |
84 default=False, help='Force an overwrite of existing files') | 81 default=False, help='Force an overwrite of existing files') |
85 parser.add_option('-p', '--ppapi', action="store_true", dest='install_ppapi', | 82 parser.add_option('-p', '--ppapi', action="store_true", dest='install_ppapi', |
86 help='Install PPAPI template without asking.') | 83 help='Install PPAPI template without asking.') |
87 parser.add_option('-n', '--no-ppapi', action="store_false", | 84 parser.add_option('-n', '--no-ppapi', action="store_false", |
88 dest='install_ppapi', help='Do not install PPAPI template and do not ask') | 85 dest='install_ppapi', help='Do not install PPAPI template and do not ask') |
89 parser.add_option('-u', '--uninstall', action="store_true", | 86 parser.add_option('-u', '--uninstall', action="store_true", |
90 dest='uninstall', help='Remove the add-in.') | 87 dest='uninstall', help='Remove the add-in.') |
91 (options, args) = parser.parse_args() | 88 (options, args) = parser.parse_args() |
92 | 89 |
93 print "*************************************************" | 90 print "*************************************************" |
94 print "Native-Client Visual Studio 2010 Add-in Installer" | 91 print "Native-Client Visual Studio 2010 Add-in Installer" |
95 print "*************************************************\n" | 92 print "*************************************************\n" |
96 | 93 |
97 if platform.system() != 'Windows': | 94 if platform.system() != 'Windows': |
98 raise InstallError('Must install to Windows system') | 95 raise InstallError('Must install to Windows system') |
99 | 96 |
| 97 if not options.msbuild_path: |
| 98 # Find the x86 program files folder. If we are uing a 64-bit version of |
| 99 # python.exe then ProgramFiles(x86). If we using a 32-bit python then |
| 100 # ProgramFiles will always be set to point the x86 program files even |
| 101 # under W0W64. |
| 102 if 'ProgramFiles(x86)' in os.environ: |
| 103 options.msbuild_path = os.path.expandvars('%ProgramFiles(x86)%\\MSBuild') |
| 104 else: |
| 105 options.msbuild_path = os.path.expandvars('%ProgramFiles%\\MSBuild') |
| 106 |
| 107 |
100 if CheckForRunningProgams(): | 108 if CheckForRunningProgams(): |
101 if not options.force: | 109 if not options.force: |
102 print "Visual Studio and MSBuild must be closed during installation" | 110 print "Visual Studio and MSBuild must be closed during installation" |
103 if not Ask("Kill all instances now?"): | 111 if not Ask("Kill all instances now?"): |
104 raise InstallError('Please close all Visual Studio or MSBuild ' | 112 raise InstallError('Please close all Visual Studio or MSBuild ' |
105 'instances before installing') | 113 'instances before installing') |
106 os.system("taskkill.exe /IM MSBuild.exe /f") | 114 os.system("taskkill.exe /IM MSBuild.exe /f") |
107 os.system("taskkill.exe /IM devenv.exe") | 115 os.system("taskkill.exe /IM devenv.exe") |
108 if CheckForRunningProgams(): | 116 if CheckForRunningProgams(): |
109 for i in xrange(10): | 117 for i in xrange(10): |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
227 except shutil.Error as e: | 235 except shutil.Error as e: |
228 print "Error while copying file. Please ensure file is not in use." | 236 print "Error while copying file. Please ensure file is not in use." |
229 print e | 237 print e |
230 except WindowsError as e: | 238 except WindowsError as e: |
231 if e.winerror == 5: | 239 if e.winerror == 5: |
232 print "Access denied error. Please ensure Visual Studio and MSBuild" | 240 print "Access denied error. Please ensure Visual Studio and MSBuild" |
233 print "processes are closed." | 241 print "processes are closed." |
234 else: | 242 else: |
235 raise | 243 raise |
236 sys.exit(rtn) | 244 sys.exit(rtn) |
OLD | NEW |