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

Unified Diff: cloud_print/virtual_driver/win/install/setup.cc

Issue 2590433003: Re-enable building both 32 and 64 bit version of the GCP port monitor. (Closed)
Patch Set: Fix some issues with 32/64 bit installation. Created 4 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/tools/build/win/FILES.cfg ('k') | cloud_print/virtual_driver/win/port_monitor/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cloud_print/virtual_driver/win/install/setup.cc
diff --git a/cloud_print/virtual_driver/win/install/setup.cc b/cloud_print/virtual_driver/win/install/setup.cc
index 6b0cf616b7cd24ba86460cc923b9053f9c66806a..99c0bef30b64d889eb4e0707f7f8319f6f073cc8 100644
--- a/cloud_print/virtual_driver/win/install/setup.cc
+++ b/cloud_print/virtual_driver/win/install/setup.cc
@@ -53,8 +53,21 @@ base::FilePath GetSystemPath(const base::string16& binary) {
return path.Append(binary);
}
+base::FilePath GetNativeSystemPath(const base::string16& binary) {
+ if (!IsSystem64Bit())
+ return GetSystemPath(binary);
+ base::FilePath path;
+ // Sysnative will bypass filesystem redirection and give us
+ // the location of the 64bit system32 from a 32 bit process.
+ if (!PathService::Get(base::DIR_WINDOWS, &path)) {
+ LOG(ERROR) << "Unable to get windows path.";
+ return path;
+ }
+ return path.Append(L"sysnative").Append(binary);
+}
+
void SpoolerServiceCommand(const char* command) {
- base::FilePath net_path = GetSystemPath(L"net");
+ base::FilePath net_path = GetNativeSystemPath(L"net");
if (net_path.empty())
return;
base::CommandLine command_line(net_path);
@@ -71,13 +84,13 @@ void SpoolerServiceCommand(const char* command) {
HRESULT RegisterPortMonitor(bool install, const base::FilePath& install_path) {
DCHECK(install || install_path.empty());
- base::FilePath target_path = GetSystemPath(L"gcp_portmon.dll");
+ base::FilePath target_path = GetNativeSystemPath(GetPortMonitorDllName());
if (target_path.empty()) {
LOG(ERROR) << "Unable to get port monitor target path.";
return HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND);
}
if (install) {
- base::FilePath source_path = install_path.Append(L"gcp_portmon.dll");
+ base::FilePath source_path = install_path.Append(GetPortMonitorDllName());
if (!base::CopyFile(source_path, target_path)) {
LOG(ERROR) << "Unable copy port monitor dll from " << source_path.value()
<< " to " << target_path.value();
@@ -88,7 +101,7 @@ HRESULT RegisterPortMonitor(bool install, const base::FilePath& install_path) {
return S_OK;
}
- base::FilePath regsvr32_path = GetSystemPath(L"regsvr32.exe");
+ base::FilePath regsvr32_path = GetNativeSystemPath(L"regsvr32.exe");
if (regsvr32_path.empty()) {
LOG(ERROR) << "Can't find regsvr32.exe.";
return HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND);
@@ -101,7 +114,7 @@ HRESULT RegisterPortMonitor(bool install, const base::FilePath& install_path) {
}
// Use system32 path here because otherwise ::AddMonitor would fail.
- command_line.AppendArgPath(GetSystemPath(L"gcp_portmon.dll"));
+ command_line.AppendArgPath(GetSystemPath(GetPortMonitorDllName()));
base::LaunchOptions options;
options.wait = true;
« no previous file with comments | « chrome/tools/build/win/FILES.cfg ('k') | cloud_print/virtual_driver/win/port_monitor/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698