Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(192)

Side by Side Diff: chrome/test/mini_installer/path_resolver.py

Issue 23757002: Check whether Chromium or Google Chrome is being tested. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Make GetProductName private. Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import os 5 import os
6 import string 6 import string
7 import win32api 7 import win32api
8 import win32com.client 8 import win32com.client
9 from win32com.shell import shell, shellcon 9 from win32com.shell import shell, shellcon
10 10
11 11
12 def _GetProductName(file_path):
13 """Returns the product name of the given file.
14
15 Args:
16 file_path: The absolute or relative path to the file.
17
18 Returns:
19 A string representing the product name of the file, or None if the product
20 name was not found.
21 """
22 language_and_codepage_pairs = win32api.GetFileVersionInfo(
23 file_path, '\\VarFileInfo\\Translation')
24 if not language_and_codepage_pairs:
25 return None
26 product_name_entry = ('\\StringFileInfo\\%04x%04x\\ProductName' %
27 language_and_codepage_pairs[0])
28 return win32api.GetFileVersionInfo(file_path, product_name_entry)
29
30
12 def ResolvePath(path): 31 def ResolvePath(path):
13 """Resolves variables in a file path, and returns the resolved path. 32 """Resolves variables in a file path, and returns the resolved path.
14 33
15 This method resolves only variables defined below. It does not resolve 34 This method resolves only variables defined below. It does not resolve
16 environment variables. Any dollar signs that are not part of variables must be 35 environment variables. Any dollar signs that are not part of variables must be
17 escaped with $$, otherwise a KeyError or a ValueError will be raised. 36 escaped with $$, otherwise a KeyError or a ValueError will be raised.
18 37
19 Args: 38 Args:
20 path: An absolute or relative path. 39 path: An absolute or relative path.
21 40
(...skipping 12 matching lines...) Expand all
34 root key, of Chrome for Google Update. 53 root key, of Chrome for Google Update.
35 """ 54 """
36 program_files_path = shell.SHGetFolderPath(0, shellcon.CSIDL_PROGRAM_FILES, 55 program_files_path = shell.SHGetFolderPath(0, shellcon.CSIDL_PROGRAM_FILES,
37 None, 0) 56 None, 0)
38 local_appdata_path = shell.SHGetFolderPath(0, shellcon.CSIDL_LOCAL_APPDATA, 57 local_appdata_path = shell.SHGetFolderPath(0, shellcon.CSIDL_LOCAL_APPDATA,
39 None, 0) 58 None, 0)
40 # TODO(sukolsak): Copy the mini_installer.exe from the build output into here. 59 # TODO(sukolsak): Copy the mini_installer.exe from the build output into here.
41 mini_installer_path = os.path.abspath('mini_installer.exe') 60 mini_installer_path = os.path.abspath('mini_installer.exe')
42 mini_installer_file_version = win32com.client.Dispatch( 61 mini_installer_file_version = win32com.client.Dispatch(
43 'Scripting.FileSystemObject').GetFileVersion(mini_installer_path) 62 'Scripting.FileSystemObject').GetFileVersion(mini_installer_path)
44 # TODO(sukolsak): Check whether this is Chrome or Chromium. 63 mini_installer_product_name = _GetProductName(mini_installer_path)
45 is_chrome = True 64 if mini_installer_product_name == 'Google Chrome':
46 if is_chrome:
47 chrome_short_name = 'Chrome' 65 chrome_short_name = 'Chrome'
48 chrome_long_name = 'Google Chrome' 66 chrome_long_name = 'Google Chrome'
49 chrome_dir = 'Google\\Chrome' 67 chrome_dir = 'Google\\Chrome'
50 chrome_update_registry_subkey = ('Software\\Google\\Update\\Clients\\' 68 chrome_update_registry_subkey = ('Software\\Google\\Update\\Clients\\'
51 '{8A69D345-D564-463c-AFF1-A69D9E530F96}') 69 '{8A69D345-D564-463c-AFF1-A69D9E530F96}')
52 else: 70 elif mini_installer_product_name == 'Chromium':
53 chrome_short_name = 'Chromium' 71 chrome_short_name = 'Chromium'
54 chrome_long_name = 'Chromium' 72 chrome_long_name = 'Chromium'
55 chrome_dir = 'Chromium' 73 chrome_dir = 'Chromium'
56 chrome_update_registry_subkey = 'Software\\Chromium' 74 chrome_update_registry_subkey = 'Software\\Chromium'
75 else:
76 raise KeyError("Unknown mini_installer product name '%s'" %
77 mini_installer_product_name)
57 78
58 variable_mapping = { 79 variable_mapping = {
59 'PROGRAM_FILES': program_files_path, 80 'PROGRAM_FILES': program_files_path,
60 'LOCAL_APPDATA': local_appdata_path, 81 'LOCAL_APPDATA': local_appdata_path,
61 'MINI_INSTALLER': mini_installer_path, 82 'MINI_INSTALLER': mini_installer_path,
62 'MINI_INSTALLER_FILE_VERSION': mini_installer_file_version, 83 'MINI_INSTALLER_FILE_VERSION': mini_installer_file_version,
63 'CHROME_SHORT_NAME': chrome_short_name, 84 'CHROME_SHORT_NAME': chrome_short_name,
64 'CHROME_LONG_NAME': chrome_long_name, 85 'CHROME_LONG_NAME': chrome_long_name,
65 'CHROME_DIR': chrome_dir, 86 'CHROME_DIR': chrome_dir,
66 'CHROME_UPDATE_REGISTRY_SUBKEY': chrome_update_registry_subkey, 87 'CHROME_UPDATE_REGISTRY_SUBKEY': chrome_update_registry_subkey,
67 } 88 }
68 return string.Template(path).substitute(variable_mapping) 89 return string.Template(path).substitute(variable_mapping)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698