This source file includes following definitions.
- program
- Clear
- Initialize
- InitializeFromCommandLine
#include "chrome/installer/mini_installer/configuration.h"
#include <windows.h>
#include <shellapi.h>
#include "chrome/installer/mini_installer/appid.h"
namespace mini_installer {
Configuration::Configuration() : args_(NULL) {
Clear();
}
Configuration::~Configuration() {
Clear();
}
const wchar_t* Configuration::program() const {
return args_ == NULL || argument_count_ < 1 ? NULL : args_[0];
}
void Configuration::Clear() {
if (args_ != NULL) {
::LocalFree(args_);
args_ = NULL;
}
chrome_app_guid_ = google_update::kAppGuid;
command_line_ = NULL;
operation_ = INSTALL_PRODUCT;
argument_count_ = 0;
has_chrome_ = false;
has_chrome_frame_ = false;
has_app_host_ = false;
is_multi_install_ = false;
is_system_level_ = false;
}
bool Configuration::Initialize() {
return InitializeFromCommandLine(::GetCommandLine());
}
bool Configuration::InitializeFromCommandLine(const wchar_t* command_line) {
Clear();
command_line_ = command_line;
args_ = ::CommandLineToArgvW(command_line_, &argument_count_);
if (args_ != NULL) {
for (int i = 1; i < argument_count_; ++i) {
if (0 == ::lstrcmpi(args_[i], L"--chrome-sxs"))
chrome_app_guid_ = google_update::kSxSAppGuid;
else if (0 == ::lstrcmpi(args_[i], L"--chrome"))
has_chrome_ = true;
else if (0 == ::lstrcmpi(args_[i], L"--chrome-frame"))
has_chrome_frame_ = true;
else if ((0 == ::lstrcmpi(args_[i], L"--app-host")) ||
(0 == ::lstrcmpi(args_[i], L"--app-launcher")))
has_app_host_ = true;
else if (0 == ::lstrcmpi(args_[i], L"--multi-install"))
is_multi_install_ = true;
else if (0 == ::lstrcmpi(args_[i], L"--system-level"))
is_system_level_ = true;
else if (0 == ::lstrcmpi(args_[i], L"--cleanup"))
operation_ = CLEANUP;
}
if (!is_multi_install_)
has_chrome_ = !(has_chrome_frame_ || has_app_host_);
}
return args_ != NULL;
}
}