diff --git a/Fltk/onelabGroup.cpp b/Fltk/onelabGroup.cpp
index bf175911d0a01f614a7297fed490bf0454d17c86..7bbf0de59e665f1f6254be4f46dd74eb4e4039cb 100644
--- a/Fltk/onelabGroup.cpp
+++ b/Fltk/onelabGroup.cpp
@@ -660,6 +660,14 @@ static void onelab_choose_executable_cb(Fl_Widget *w, void *data)
   const char *old = 0;
   if(!c->getExecutable().empty()) old = c->getExecutable().c_str();
 
+  if(!w){
+    const char *old = fl_close;
+    fl_close = "OK";
+    fl_message("This appears to be the first time you are trying to run %s.\n\n"
+               "Please select the path to the executable.", c->getName().c_str());
+    fl_close = old;
+  }
+
   std::string title = "Choose location of " + c->getName() + " executable";
   if(fileChooser(FILE_CHOOSER_SINGLE, title.c_str(), pattern.c_str(), old)){
     std::string exe = fileChooserGetName(1);
@@ -1506,8 +1514,11 @@ void onelabGroup::rebuildSolverList()
 void onelabGroup::addSolver(const std::string &name, const std::string &executable,
                             const std::string &remoteLogin, int index)
 {
-  if(onelab::server::instance()->findClient(name) !=
-     onelab::server::instance()->lastClient()) return; // solver already exists
+  onelab::server::citer it = onelab::server::instance()->findClient(name);
+  if(it != onelab::server::instance()->lastClient()){
+    if(executable.empty()) onelab_choose_executable_cb(0, (void *)it->second);
+    return; // solver already exists
+  }
 
   // unregister the other non-local clients so we keep only the new one
   std::vector<onelab::client*> networkClients;
@@ -1525,8 +1536,7 @@ void onelabGroup::addSolver(const std::string &name, const std::string &executab
                                                                  remoteLogin);
   c->setIndex(index);
   opt_solver_name(index, GMSH_SET, name);
-  if(executable.empty())
-    onelab_choose_executable_cb(0, (void *)c);
+  if(executable.empty()) onelab_choose_executable_cb(0, (void *)c);
   opt_solver_remote_login(index, GMSH_SET, remoteLogin);
 
   FlGui::instance()->onelab->rebuildSolverList();