delete xml; delete files;
int installX11(int argc, char *argv[]) {  File         *files;  XML          *xml;  string       s = argv[0];  string       working_dir = s.substr(0, s.find_last_of("/")+1);  string       input;  xml   = new XML(working_dir + SETUP_FILE);  files = new File();  // Wee need an object for file operations  InstMain setup;  if (!setup.Init(argc, argv)) {    cout << "...falling back onto console." << endl;    return 0;  }  // A little gossip...  Welcome welcome(xml, working_dir);  if (welcome.run() != RESPONSE_OK)    return 1;  welcome.hide();  // Show license...  if (xml->GetLicense() != "") {    ShowLicense license(xml, working_dir);    if (license.run() != RESPONSE_OK) {      return 1;    }    license.hide();  }  // Show target directory  ShowTarget target(xml, working_dir);  if (target.run() != RESPONSE_OK) {    return 1;  }  target.hide();  if (target.GetPath() != "")    xml->SetTargetDir(target.GetPath());  if (!files->isDir(xml->GetTargetDir())) {    MessageDialog msg((xml->GetTargetDir() +                        " does not exist! Create it now?").c_str(),                       MESSAGE_QUESTION, BUTTONS_YES_NO);    switch(msg.run()) {      case RESPONSE_YES: files->MkDir(xml->GetTargetDir());; break;      case RESPONSE_NO : return 1; break;    }  }  // do installation  GCopy win(xml, working_dir);  if ((win.run() != RESPONSE_OK) || win.isAborted()) {    return 1;  }  win.hide();  // Show README...  if (xml->GetReadme() != "") {    ShowReadme readme(xml, working_dir);    if (readme.run() != RESPONSE_OK)      return 1;    readme.hide();	}  return 1;}