Commit d33d0b27 authored by grt@chromium.org's avatar grt@chromium.org

mini_installer code cleanups (no functional changes).

- Move constants into *_constants.{cc,h}.
- Remove unused constants.
- Lay foundation for detailed process exit codes.

BUG=385419

Review URL: https://codereview.chromium.org/365143002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@282032 0039d316-1c4b-4281-b951-d872f2087c98
parent cb9354f9
...@@ -39,10 +39,12 @@ ...@@ -39,10 +39,12 @@
'mini_installer/configuration.h', 'mini_installer/configuration.h',
'mini_installer/decompress.cc', 'mini_installer/decompress.cc',
'mini_installer/decompress.h', 'mini_installer/decompress.h',
'mini_installer/exit_code.h',
'mini_installer/mini_installer.cc', 'mini_installer/mini_installer.cc',
'mini_installer/mini_installer.h',
'mini_installer/mini_installer.ico', 'mini_installer/mini_installer.ico',
'mini_installer/mini_installer.rc', 'mini_installer/mini_installer.rc',
'mini_installer/mini_installer_constants.cc',
'mini_installer/mini_installer_constants.h',
'mini_installer/mini_installer_exe_version.rc.version', 'mini_installer/mini_installer_exe_version.rc.version',
'mini_installer/mini_installer_resource.h', 'mini_installer/mini_installer_resource.h',
'mini_installer/mini_string.cc', 'mini_installer/mini_string.cc',
......
...@@ -22,10 +22,12 @@ ...@@ -22,10 +22,12 @@
'mini_installer/configuration.h', 'mini_installer/configuration.h',
'mini_installer/decompress.cc', 'mini_installer/decompress.cc',
'mini_installer/decompress.h', 'mini_installer/decompress.h',
'mini_installer/exit_code.h',
'mini_installer/mini_installer.cc', 'mini_installer/mini_installer.cc',
'mini_installer/mini_installer.h',
'mini_installer/mini_installer.ico', 'mini_installer/mini_installer.ico',
'mini_installer/mini_installer.rc', 'mini_installer/mini_installer.rc',
'mini_installer/mini_installer_constants.cc',
'mini_installer/mini_installer_constants.h',
'mini_installer/mini_installer_exe_version.rc.version', 'mini_installer/mini_installer_exe_version.rc.version',
'mini_installer/mini_installer_resource.h', 'mini_installer/mini_installer_resource.h',
'mini_installer/mini_string.cc', 'mini_installer/mini_string.cc',
......
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_INSTALLER_MINI_INSTALLER_EXIT_CODE_H_
#define CHROME_INSTALLER_MINI_INSTALLER_EXIT_CODE_H_
namespace mini_installer {
// mini_installer process exit codes (the underlying type is uint32_t).
enum ExitCode {
SUCCESS_EXIT_CODE = 0,
GENERIC_ERROR = 1,
// The next three generic values are here for historic reasons. New additions
// should have values strictly greater than them. This is to prevent
// collisions with setup.exe's installer::InstallStatus enum since the two are
// surfaced similarly by Google Update.
GENERIC_INITIALIZATION_FAILURE = 101,
GENERIC_UNPACKING_FAILURE = 102,
GENERIC_SETUP_FAILURE = 103,
};
} // namespace mini_installer
#endif // CHROME_INSTALLER_MINI_INSTALLER_EXIT_CODE_H_
...@@ -27,12 +27,14 @@ ...@@ -27,12 +27,14 @@
#include "chrome/installer/mini_installer/appid.h" #include "chrome/installer/mini_installer/appid.h"
#include "chrome/installer/mini_installer/configuration.h" #include "chrome/installer/mini_installer/configuration.h"
#include "chrome/installer/mini_installer/decompress.h" #include "chrome/installer/mini_installer/decompress.h"
#include "chrome/installer/mini_installer/mini_installer.h" #include "chrome/installer/mini_installer/exit_code.h"
#include "chrome/installer/mini_installer/mini_installer_constants.h"
#include "chrome/installer/mini_installer/mini_string.h" #include "chrome/installer/mini_installer/mini_string.h"
#include "chrome/installer/mini_installer/pe_resource.h" #include "chrome/installer/mini_installer/pe_resource.h"
namespace mini_installer { namespace mini_installer {
typedef DWORD ProcessExitCode;
typedef StackString<MAX_PATH> PathString; typedef StackString<MAX_PATH> PathString;
typedef StackString<MAX_PATH * 4> CommandString; typedef StackString<MAX_PATH * 4> CommandString;
...@@ -143,7 +145,7 @@ bool ReadValueFromRegistry(HKEY root_key, const wchar_t *sub_key, ...@@ -143,7 +145,7 @@ bool ReadValueFromRegistry(HKEY root_key, const wchar_t *sub_key,
bool OpenClientStateKey(HKEY root_key, const wchar_t* app_guid, REGSAM access, bool OpenClientStateKey(HKEY root_key, const wchar_t* app_guid, REGSAM access,
RegKey* key) { RegKey* key) {
PathString client_state_key; PathString client_state_key;
return client_state_key.assign(kApRegistryKeyBase) && return client_state_key.assign(kClientStateKeyBase) &&
client_state_key.append(app_guid) && client_state_key.append(app_guid) &&
(key->Open(root_key, (key->Open(root_key,
client_state_key.get(), client_state_key.get(),
...@@ -184,7 +186,7 @@ void SetInstallerFlags(const Configuration& configuration) { ...@@ -184,7 +186,7 @@ void SetInstallerFlags(const Configuration& configuration) {
if (configuration.is_multi_install()) { if (configuration.is_multi_install()) {
if (OpenClientStateKey(root_key, app_guid, key_access, &key)) { if (OpenClientStateKey(root_key, app_guid, key_access, &key)) {
// The product has a client state key. See if it's a single-install. // The product has a client state key. See if it's a single-install.
ret = key.ReadValue(kApRegistryValueName, value.get(), value.capacity()); ret = key.ReadValue(kApRegistryValue, value.get(), value.capacity());
if (ret != ERROR_FILE_NOT_FOUND && if (ret != ERROR_FILE_NOT_FOUND &&
(ret != ERROR_SUCCESS || (ret != ERROR_SUCCESS ||
FindTagInStr(value.get(), kMultiInstallTag, NULL))) { FindTagInStr(value.get(), kMultiInstallTag, NULL))) {
...@@ -204,7 +206,7 @@ void SetInstallerFlags(const Configuration& configuration) { ...@@ -204,7 +206,7 @@ void SetInstallerFlags(const Configuration& configuration) {
return; return;
value.clear(); value.clear();
ret = key.ReadValue(kApRegistryValueName, value.get(), value.capacity()); ret = key.ReadValue(kApRegistryValue, value.get(), value.capacity());
} }
// The conditions below are handling two cases: // The conditions below are handling two cases:
...@@ -218,7 +220,7 @@ void SetInstallerFlags(const Configuration& configuration) { ...@@ -218,7 +220,7 @@ void SetInstallerFlags(const Configuration& configuration) {
if (!StrEndsWith(value.get(), kFullInstallerSuffix) && if (!StrEndsWith(value.get(), kFullInstallerSuffix) &&
value.append(kFullInstallerSuffix)) { value.append(kFullInstallerSuffix)) {
key.WriteValue(kApRegistryValueName, value.get()); key.WriteValue(kApRegistryValue, value.get());
} }
} }
} }
...@@ -232,7 +234,7 @@ bool GetSetupExePathForGuidFromRegistry(bool system_level, ...@@ -232,7 +234,7 @@ bool GetSetupExePathForGuidFromRegistry(bool system_level,
const HKEY root_key = system_level ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; const HKEY root_key = system_level ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER;
RegKey key; RegKey key;
return OpenClientStateKey(root_key, app_guid, KEY_QUERY_VALUE, &key) && return OpenClientStateKey(root_key, app_guid, KEY_QUERY_VALUE, &key) &&
(key.ReadValue(kUninstallRegistryValueName, path, size) == ERROR_SUCCESS); (key.ReadValue(kUninstallRegistryValue, path, size) == ERROR_SUCCESS);
} }
// Gets the setup.exe path from Registry by looking the value of Uninstall // Gets the setup.exe path from Registry by looking the value of Uninstall
...@@ -269,10 +271,11 @@ bool GetSetupExePathFromRegistry(const Configuration& configuration, ...@@ -269,10 +271,11 @@ bool GetSetupExePathFromRegistry(const Configuration& configuration,
return false; return false;
} }
// Calls CreateProcess with good default parameters and waits for the process // Calls CreateProcess with good default parameters and waits for the process to
// to terminate returning the process exit code. // terminate returning the process exit code. |exit_code|, if non-NULL, is
// populated with the process exit code.
bool RunProcessAndWait(const wchar_t* exe_path, wchar_t* cmdline, bool RunProcessAndWait(const wchar_t* exe_path, wchar_t* cmdline,
int* exit_code) { ProcessExitCode* exit_code) {
STARTUPINFOW si = {sizeof(si)}; STARTUPINFOW si = {sizeof(si)};
PROCESS_INFORMATION pi = {0}; PROCESS_INFORMATION pi = {0};
if (!::CreateProcess(exe_path, cmdline, NULL, NULL, FALSE, CREATE_NO_WINDOW, if (!::CreateProcess(exe_path, cmdline, NULL, NULL, FALSE, CREATE_NO_WINDOW,
...@@ -287,10 +290,8 @@ bool RunProcessAndWait(const wchar_t* exe_path, wchar_t* cmdline, ...@@ -287,10 +290,8 @@ bool RunProcessAndWait(const wchar_t* exe_path, wchar_t* cmdline,
if (WAIT_OBJECT_0 != wr) { if (WAIT_OBJECT_0 != wr) {
ret = false; ret = false;
} else if (exit_code) { } else if (exit_code) {
if (!::GetExitCodeProcess(pi.hProcess, if (!::GetExitCodeProcess(pi.hProcess, exit_code))
reinterpret_cast<DWORD*>(exit_code))) {
ret = false; ret = false;
}
} }
::CloseHandle(pi.hProcess); ::CloseHandle(pi.hProcess);
...@@ -352,7 +353,7 @@ BOOL CALLBACK OnResourceFound(HMODULE module, const wchar_t* type, ...@@ -352,7 +353,7 @@ BOOL CALLBACK OnResourceFound(HMODULE module, const wchar_t* type,
!resource.WriteToDisk(full_path.get())) !resource.WriteToDisk(full_path.get()))
return FALSE; return FALSE;
if (StrStartsWith(name, kChromePrefix)) { if (StrStartsWith(name, kChromeArchivePrefix)) {
if (!ctx->chrome_resource_path->assign(full_path.get())) if (!ctx->chrome_resource_path->assign(full_path.get()))
return FALSE; return FALSE;
} else if (StrStartsWith(name, kSetupPrefix)) { } else if (StrStartsWith(name, kSetupPrefix)) {
...@@ -382,7 +383,7 @@ bool UnpackBinaryResources(const Configuration& configuration, HMODULE module, ...@@ -382,7 +383,7 @@ bool UnpackBinaryResources(const Configuration& configuration, HMODULE module,
// Generate the setup.exe path where we patch/uncompress setup resource. // Generate the setup.exe path where we patch/uncompress setup resource.
PathString setup_dest_path; PathString setup_dest_path;
if (!setup_dest_path.assign(base_path) || if (!setup_dest_path.assign(base_path) ||
!setup_dest_path.append(kSetupName)) !setup_dest_path.append(kSetupExe))
return false; return false;
// Prepare the input to OnResourceFound method that needs a location where // Prepare the input to OnResourceFound method that needs a location where
...@@ -408,10 +409,11 @@ bool UnpackBinaryResources(const Configuration& configuration, HMODULE module, ...@@ -408,10 +409,11 @@ bool UnpackBinaryResources(const Configuration& configuration, HMODULE module,
bool success = true; bool success = true;
if (!GetSetupExePathFromRegistry(configuration, cmd_line.get(), if (!GetSetupExePathFromRegistry(configuration, cmd_line.get(),
cmd_line.capacity()) || cmd_line.capacity()) ||
!cmd_line.append(L" --") ||
!cmd_line.append(kCmdUpdateSetupExe) || !cmd_line.append(kCmdUpdateSetupExe) ||
!cmd_line.append(L"=\"") || !cmd_line.append(L"=\"") ||
!cmd_line.append(setup_path->get()) || !cmd_line.append(setup_path->get()) ||
!cmd_line.append(L"\"") || !cmd_line.append(L"\" --") ||
!cmd_line.append(kCmdNewSetupExe) || !cmd_line.append(kCmdNewSetupExe) ||
!cmd_line.append(L"=\"") || !cmd_line.append(L"=\"") ||
!cmd_line.append(setup_dest_path.get()) || !cmd_line.append(setup_dest_path.get()) ||
...@@ -425,10 +427,10 @@ bool UnpackBinaryResources(const Configuration& configuration, HMODULE module, ...@@ -425,10 +427,10 @@ bool UnpackBinaryResources(const Configuration& configuration, HMODULE module,
// installer results for consumption by Google Update. // installer results for consumption by Google Update.
AppendCommandLineFlags(configuration, &cmd_line); AppendCommandLineFlags(configuration, &cmd_line);
int exit_code = 0; ProcessExitCode exit_code = SUCCESS_EXIT_CODE;
if (success && if (success &&
(!RunProcessAndWait(NULL, cmd_line.get(), &exit_code) || (!RunProcessAndWait(NULL, cmd_line.get(), &exit_code) ||
exit_code != ERROR_SUCCESS)) { exit_code != SUCCESS_EXIT_CODE)) {
success = false; success = false;
} }
...@@ -487,7 +489,7 @@ bool UnpackBinaryResources(const Configuration& configuration, HMODULE module, ...@@ -487,7 +489,7 @@ bool UnpackBinaryResources(const Configuration& configuration, HMODULE module,
// Executes setup.exe, waits for it to finish and returns the exit code. // Executes setup.exe, waits for it to finish and returns the exit code.
bool RunSetup(const Configuration& configuration, const wchar_t* archive_path, bool RunSetup(const Configuration& configuration, const wchar_t* archive_path,
const wchar_t* setup_path, int* exit_code) { const wchar_t* setup_path, ProcessExitCode* exit_code) {
// There could be three full paths in the command line for setup.exe (path // There could be three full paths in the command line for setup.exe (path
// to exe itself, path to archive and path to log file), so we declare // to exe itself, path to archive and path to log file), so we declare
// total size as three + one additional to hold command line options. // total size as three + one additional to hold command line options.
...@@ -505,7 +507,8 @@ bool RunSetup(const Configuration& configuration, const wchar_t* archive_path, ...@@ -505,7 +507,8 @@ bool RunSetup(const Configuration& configuration, const wchar_t* archive_path,
} }
// Append the command line param for chrome archive file // Append the command line param for chrome archive file
if (!cmd_line.append(kCmdInstallArchive) || if (!cmd_line.append(L" --") ||
!cmd_line.append(kCmdInstallArchive) ||
!cmd_line.append(L"=\"") || !cmd_line.append(L"=\"") ||
!cmd_line.append(archive_path) || !cmd_line.append(archive_path) ||
!cmd_line.append(L"\"")) !cmd_line.append(L"\""))
...@@ -714,14 +717,14 @@ void DeleteOldChromeTempDirectories() { ...@@ -714,14 +717,14 @@ void DeleteOldChromeTempDirectories() {
// required actions taken. The installer must exit and return the returned // required actions taken. The installer must exit and return the returned
// |exit_code|. // |exit_code|.
bool ProcessNonInstallOperations(const Configuration& configuration, bool ProcessNonInstallOperations(const Configuration& configuration,
int* exit_code) { ProcessExitCode* exit_code) {
bool ret = false; bool ret = false;
switch (configuration.operation()) { switch (configuration.operation()) {
case Configuration::CLEANUP: case Configuration::CLEANUP:
// Cleanup has already taken place in DeleteOldChromeTempDirectories at // Cleanup has already taken place in DeleteOldChromeTempDirectories at
// this point, so just tell our caller to exit early. // this point, so just tell our caller to exit early.
*exit_code = 0; *exit_code = SUCCESS_EXIT_CODE;
ret = true; ret = true;
break; break;
...@@ -741,8 +744,7 @@ bool ProcessNonInstallOperations(const Configuration& configuration, ...@@ -741,8 +744,7 @@ bool ProcessNonInstallOperations(const Configuration& configuration,
bool ShouldDeleteExtractedFiles() { bool ShouldDeleteExtractedFiles() {
wchar_t value[2] = {0}; wchar_t value[2] = {0};
if (ReadValueFromRegistry(HKEY_CURRENT_USER, kCleanupRegistryKey, if (ReadValueFromRegistry(HKEY_CURRENT_USER, kCleanupRegistryKey,
kCleanupRegistryValueName, value, kCleanupRegistryValue, value, arraysize(value)) &&
arraysize(value)) &&
value[0] == L'0') { value[0] == L'0') {
return false; return false;
} }
...@@ -752,7 +754,7 @@ bool ShouldDeleteExtractedFiles() { ...@@ -752,7 +754,7 @@ bool ShouldDeleteExtractedFiles() {
// Main function. First gets a working dir, unpacks the resources and finally // Main function. First gets a working dir, unpacks the resources and finally
// executes setup.exe to do the install/upgrade. // executes setup.exe to do the install/upgrade.
int WMain(HMODULE module) { ProcessExitCode WMain(HMODULE module) {
#if defined(COMPONENT_BUILD) #if defined(COMPONENT_BUILD)
if (::GetEnvironmentVariable(L"MINI_INSTALLER_TEST", NULL, 0) == 0) { if (::GetEnvironmentVariable(L"MINI_INSTALLER_TEST", NULL, 0) == 0) {
static const wchar_t kComponentBuildIncompatibleMessage[] = static const wchar_t kComponentBuildIncompatibleMessage[] =
...@@ -760,7 +762,7 @@ int WMain(HMODULE module) { ...@@ -760,7 +762,7 @@ int WMain(HMODULE module) {
L" run setup.exe with the same command line instead. See" L" run setup.exe with the same command line instead. See"
L" http://crbug.com/127233#c17 for details."; L" http://crbug.com/127233#c17 for details.";
::MessageBox(NULL, kComponentBuildIncompatibleMessage, NULL, MB_ICONERROR); ::MessageBox(NULL, kComponentBuildIncompatibleMessage, NULL, MB_ICONERROR);
return 1; return GENERIC_ERROR;
} }
#endif #endif
...@@ -772,7 +774,7 @@ int WMain(HMODULE module) { ...@@ -772,7 +774,7 @@ int WMain(HMODULE module) {
// TODO(grt): Make the exit codes more granular so we know where the popular // TODO(grt): Make the exit codes more granular so we know where the popular
// errors truly are. // errors truly are.
int exit_code = 101; ProcessExitCode exit_code = GENERIC_INITIALIZATION_FAILURE;
// Parse the command line. // Parse the command line.
Configuration configuration; Configuration configuration;
...@@ -780,13 +782,13 @@ int WMain(HMODULE module) { ...@@ -780,13 +782,13 @@ int WMain(HMODULE module) {
return exit_code; return exit_code;
if (configuration.query_component_build()) { if (configuration.query_component_build()) {
// Exit immediately with an exit code of 1 to indicate component build and 0 // Exit immediately with a generic success exit code (0) to indicate
// to indicate static build. This is used by the tests in // component build and a generic failure exit code (1) to indicate static
// /src/chrome/test/mini_installer/. // build. This is used by the tests in /src/chrome/test/mini_installer/.
#if defined(COMPONENT_BUILD) #if defined(COMPONENT_BUILD)
return 1; return SUCCESS_EXIT_CODE;
#else #else
return 0; return GENERIC_ERROR;
#endif #endif
} }
...@@ -798,7 +800,7 @@ int WMain(HMODULE module) { ...@@ -798,7 +800,7 @@ int WMain(HMODULE module) {
// First get a path where we can extract payload // First get a path where we can extract payload
PathString base_path; PathString base_path;
if (!GetWorkDir(module, &base_path)) if (!GetWorkDir(module, &base_path))
return 101; return GENERIC_INITIALIZATION_FAILURE;
#if defined(GOOGLE_CHROME_BUILD) #if defined(GOOGLE_CHROME_BUILD)
// Set the magic suffix in registry to try full installer next time. We ignore // Set the magic suffix in registry to try full installer next time. We ignore
...@@ -812,7 +814,7 @@ int WMain(HMODULE module) { ...@@ -812,7 +814,7 @@ int WMain(HMODULE module) {
PathString setup_path; PathString setup_path;
if (!UnpackBinaryResources(configuration, module, base_path.get(), if (!UnpackBinaryResources(configuration, module, base_path.get(),
&archive_path, &setup_path)) { &archive_path, &setup_path)) {
exit_code = 102; exit_code = GENERIC_UNPACKING_FAILURE;
} else { } else {
// While unpacking the binaries, we paged in a whole bunch of memory that // While unpacking the binaries, we paged in a whole bunch of memory that
// we don't need anymore. Let's give it back to the pool before running // we don't need anymore. Let's give it back to the pool before running
...@@ -820,7 +822,7 @@ int WMain(HMODULE module) { ...@@ -820,7 +822,7 @@ int WMain(HMODULE module) {
::SetProcessWorkingSetSize(::GetCurrentProcess(), -1, -1); ::SetProcessWorkingSetSize(::GetCurrentProcess(), -1, -1);
if (!RunSetup(configuration, archive_path.get(), setup_path.get(), if (!RunSetup(configuration, archive_path.get(), setup_path.get(),
&exit_code)) { &exit_code)) {
exit_code = 103; exit_code = GENERIC_SETUP_FAILURE;
} }
} }
...@@ -833,7 +835,8 @@ int WMain(HMODULE module) { ...@@ -833,7 +835,8 @@ int WMain(HMODULE module) {
} // namespace mini_installer } // namespace mini_installer
int MainEntryPoint() { int MainEntryPoint() {
int result = mini_installer::WMain(::GetModuleHandle(NULL)); mini_installer::ProcessExitCode result =
mini_installer::WMain(::GetModuleHandle(NULL));
::ExitProcess(result); ::ExitProcess(result);
} }
......
// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef CHROME_INSTALLER_MINI_INSTALLER_MINI_INSTALLER_H_ #include "chrome/installer/mini_installer/mini_installer_constants.h"
#define CHROME_INSTALLER_MINI_INSTALLER_MINI_INSTALLER_H_
namespace mini_installer { namespace mini_installer {
// Various filenames // Various filenames and prefixes.
const wchar_t kSetupName[] = L"setup.exe"; // The target name of the installer extracted from resources.
const wchar_t kChromePrefix[] = L"chrome"; const wchar_t kSetupExe[] = L"setup.exe";
// The prefix of the chrome archive resource.
const wchar_t kChromeArchivePrefix[] = L"chrome";
// The prefix of the installer resource.
const wchar_t kSetupPrefix[] = L"setup"; const wchar_t kSetupPrefix[] = L"setup";
// setup.exe command line arguments // Command line switch names for setup.exe.
const wchar_t kCmdInstallArchive[] = L" --install-archive"; const wchar_t kCmdInstallArchive[] = L"install-archive";
const wchar_t kCmdUpdateSetupExe[] = L" --update-setup-exe"; const wchar_t kCmdUpdateSetupExe[] = L"update-setup-exe";
const wchar_t kCmdNewSetupExe[] = L" --new-setup-exe"; const wchar_t kCmdNewSetupExe[] = L"new-setup-exe";
// Temp directory prefix that this process creates // Temp directory prefix that this process creates.
const wchar_t kTempPrefix[] = L"CR_"; const wchar_t kTempPrefix[] = L"CR_";
// Google Update will use the full installer if this suffix is found in the ap // ap value suffix to force subsequent updates to use the full rather than
// value. // differential updater.
const wchar_t kFullInstallerSuffix[] = L"-full"; const wchar_t kFullInstallerSuffix[] = L"-full";
// ap value tag for a multi-install product. // ap value tag for a multi-install product.
const wchar_t kMultiInstallTag[] = L"-multi"; const wchar_t kMultiInstallTag[] = L"-multi";
// The resource types that would be unpacked from the mini installer. // The resource types that would be unpacked from the mini installer.
// 'BN' is uncompressed binary and 'BL' is LZ compressed binary. // Uncompressed binary.
const wchar_t kBinResourceType[] = L"BN"; const wchar_t kBinResourceType[] = L"BN";
// LZ compressed binary.
const wchar_t kLZCResourceType[] = L"BL"; const wchar_t kLZCResourceType[] = L"BL";
// 7zip archive.
const wchar_t kLZMAResourceType[] = L"B7"; const wchar_t kLZMAResourceType[] = L"B7";
// Registry key to get uninstall command // Registry value names.
const wchar_t kApRegistryValueName[] = L"ap"; // The name of an app's Client State registry value that holds its tag/channel.
// Registry key that tells Chrome installer not to delete extracted files. const wchar_t kApRegistryValue[] = L"ap";
const wchar_t kCleanupRegistryValueName[] = L"ChromeInstallerCleanup"; // The name of the value in kCleanupRegistryKey that tells the installer not to
// Registry key to get uninstall command // delete extracted files.
const wchar_t kUninstallRegistryValueName[] = L"UninstallString"; const wchar_t kCleanupRegistryValue[] = L"ChromeInstallerCleanup";
// The name of an app's Client State registry value that holds the path to its
// uninstaller.
const wchar_t kUninstallRegistryValue[] = L"UninstallString";
// Paths for the above registry keys // Registry key paths.
#if defined(GOOGLE_CHROME_BUILD) #if defined(GOOGLE_CHROME_BUILD)
// The concatenation of this plus the Google Update GUID is the app registry // The path to the key containing each app's Client State registry key.
// key. const wchar_t kClientStateKeyBase[] =
const wchar_t kApRegistryKeyBase[] = L"Software\\Google\\Update\\ClientState\\"; L"Software\\Google\\Update\\ClientState\\";
const wchar_t kUninstallRegistryKey[] = // The path to the key in which kCleanupRegistryValue is found.
const wchar_t kCleanupRegistryKey[] =
L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Google Chrome"; L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Google Chrome";
const wchar_t kCleanupRegistryKey[] = L"Software\\Google";
#else #else
const wchar_t kApRegistryKeyBase[] = L"Software\\Chromium"; // The path to the key containing each app's Client State registry key.
const wchar_t kUninstallRegistryKey[] = const wchar_t kClientStateKeyBase[] = L"Software\\Chromium";
L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Chromium"; // The path to the key in which kCleanupRegistryValue is found.
const wchar_t kCleanupRegistryKey[] = L"Software\\Chromium"; const wchar_t kCleanupRegistryKey[] = L"Software\\Chromium";
#endif #endif
// One gigabyte is the biggest resource size that it can handle. // One gigabyte is the biggest resource size that it can handle.
const int kMaxResourceSize = 1024*1024*1024; const size_t kMaxResourceSize = 1024*1024*1024;
// This is the file that contains the list of files to be linked in the
// executable. This file is updated by the installer generator tool chain.
const wchar_t kManifestFilename[] = L"packed_files.txt";
} // namespace mini_installer } // namespace mini_installer
#endif // CHROME_INSTALLER_MINI_INSTALLER_MINI_INSTALLER_H_
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_INSTALLER_MINI_INSTALLER_MINI_INSTALLER_CONSTANTS_H_
#define CHROME_INSTALLER_MINI_INSTALLER_MINI_INSTALLER_CONSTANTS_H_
namespace mini_installer {
// Various filenames and prefixes.
extern const wchar_t kSetupExe[];
extern const wchar_t kChromeArchivePrefix[];
extern const wchar_t kSetupPrefix[];
// Unprefixed command line switch names for setup.exe.
extern const wchar_t kCmdInstallArchive[];
extern const wchar_t kCmdUpdateSetupExe[];
extern const wchar_t kCmdNewSetupExe[];
extern const wchar_t kTempPrefix[];
extern const wchar_t kFullInstallerSuffix[];
extern const wchar_t kMultiInstallTag[];
// The resource types that would be unpacked from the mini installer.
extern const wchar_t kBinResourceType[];
extern const wchar_t kLZCResourceType[];
extern const wchar_t kLZMAResourceType[];
// Registry value names.
extern const wchar_t kApRegistryValue[];
extern const wchar_t kCleanupRegistryValue[];
extern const wchar_t kUninstallRegistryValue[];
// Registry key paths.
extern const wchar_t kClientStateKeyBase[];
extern const wchar_t kCleanupRegistryKey[];
extern const size_t kMaxResourceSize;
} // namespace mini_installer
#endif // CHROME_INSTALLER_MINI_INSTALLER_MINI_INSTALLER_CONSTANTS_H_
...@@ -254,7 +254,7 @@ def IsComponentBuild(mini_installer_path): ...@@ -254,7 +254,7 @@ def IsComponentBuild(mini_installer_path):
query_command = mini_installer_path + ' --query-component-build' query_command = mini_installer_path + ' --query-component-build'
script_dir = os.path.dirname(os.path.abspath(__file__)) script_dir = os.path.dirname(os.path.abspath(__file__))
exit_status = subprocess.call(query_command, shell=True, cwd=script_dir) exit_status = subprocess.call(query_command, shell=True, cwd=script_dir)
return exit_status != 0 return exit_status == 0
def main(): def main():
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment