Index: remoting/host/win/wts_session_process_launcher.cc |
diff --git a/remoting/host/win/wts_session_process_launcher.cc b/remoting/host/win/wts_session_process_launcher.cc |
index 0a7ee1ba7b3eeb0f647c05aaf8df1fda0fc23ebe..0e09e93d7b0bcba5e8d75cd0efdf05a3dc2ac6db 100644 |
--- a/remoting/host/win/wts_session_process_launcher.cc |
+++ b/remoting/host/win/wts_session_process_launcher.cc |
@@ -15,8 +15,11 @@ |
#include "base/bind.h" |
#include "base/bind_helpers.h" |
#include "base/command_line.h" |
+#include "base/file_path.h" |
+#include "base/file_util.h" |
#include "base/logging.h" |
#include "base/single_thread_task_runner.h" |
+#include "base/path_service.h" |
#include "base/process_util.h" |
#include "base/rand_util.h" |
#include "base/stringprintf.h" |
@@ -40,6 +43,9 @@ namespace { |
const int kMaxLaunchDelaySeconds = 60; |
const int kMinLaunchDelaySeconds = 1; |
+const FilePath::CharType kMe2meHostBinaryName[] = |
+ FILE_PATH_LITERAL("remoting_me2me_host.exe"); |
+ |
// Match the pipe name prefix used by Chrome IPC channels. |
const wchar_t kChromePipeNamePrefix[] = L"\\\\.\\pipe\\chrome."; |
@@ -214,11 +220,9 @@ const uint32 kInvalidSessionId = 0xffffffff; |
WtsSessionProcessLauncher::WtsSessionProcessLauncher( |
const base::Closure& stopped_callback, |
WtsConsoleMonitor* monitor, |
- const FilePath& host_binary, |
scoped_refptr<base::SingleThreadTaskRunner> main_message_loop, |
scoped_refptr<base::SingleThreadTaskRunner> ipc_message_loop) |
: Stoppable(main_message_loop, stopped_callback), |
- host_binary_(host_binary), |
main_message_loop_(main_message_loop), |
ipc_message_loop_(ipc_message_loop), |
monitor_(monitor), |
@@ -249,6 +253,15 @@ void WtsSessionProcessLauncher::LaunchProcess() { |
launch_time_ = base::Time::Now(); |
+ // Construct the host binary name. |
+ FilePath dir_path; |
+ if (!PathService::Get(base::DIR_EXE, &dir_path)) { |
+ LOG(ERROR) << "Failed to get the executable file name."; |
+ Stop(); |
+ return; |
+ } |
+ FilePath host_binary = dir_path.Append(kMe2meHostBinaryName); |
+ |
std::wstring channel_name; |
ScopedHandle pipe; |
if (CreatePipeForIpcChannel(this, &channel_name, &pipe)) { |
@@ -261,7 +274,7 @@ void WtsSessionProcessLauncher::LaunchProcess() { |
// Create the host process command line passing the name of the IPC channel |
// to use and copying known switches from the service's command line. |
- CommandLine command_line(host_binary_); |
+ CommandLine command_line(host_binary); |
command_line.AppendSwitchNative(kChromotingIpcSwitchName, channel_name); |
command_line.CopySwitchesFrom(*CommandLine::ForCurrentProcess(), |
kCopiedSwitchNames, |
@@ -269,7 +282,7 @@ void WtsSessionProcessLauncher::LaunchProcess() { |
// Try to launch the process and attach an object watcher to the returned |
// handle so that we get notified when the process terminates. |
- if (LaunchProcessWithToken(host_binary_, |
+ if (LaunchProcessWithToken(host_binary, |
command_line.GetCommandLineString(), |
session_token_, |
&process_)) { |