]> SALOME platform Git repositories - tools/install.git/commitdiff
Salome HOME
Fix problem with incorrect application dir path
authorvsr <vsr@opencascade.com>
Wed, 11 Feb 2009 13:42:32 +0000 (13:42 +0000)
committervsr <vsr@opencascade.com>
Wed, 11 Feb 2009 13:42:32 +0000 (13:42 +0000)
bin/SALOME_InstallWizard
src/SALOME_HelpWindow.cxx
src/SALOME_InstallWizard.cxx
src/SALOME_InstallWizard.hxx

index fbce562761800d76a666e447df2317acd985ab96..e294c3017216cb17ccb0bcf653b09f1041bd1730 100755 (executable)
Binary files a/bin/SALOME_InstallWizard and b/bin/SALOME_InstallWizard differ
index bbaafd1b024fd880cecaa8c46678a4ce0a85fc54..c0f076391acc897d35bfbf3b9e126a34ca77fb33 100644 (file)
@@ -31,7 +31,7 @@
 // ================================================================
 HelpWindow::HelpWindow( SALOME_InstallWizard* wizard ) : QMainWindow( 0, "SalomeProHelpWindow", WDestructiveClose )
 {
-  QString hlpFile = QDir::currentDirPath() + "/doc/readme.html";
+  QString hlpFile = QDir( SALOME_InstallWizard::rootDirPath() ).filePath( "doc/readme.html" );
   QString hlpDir = ".";
   // caption
   setCaption( wizard->getCaption() + " " + wizard->getIWName() + " " + tr( "Help" ) );
@@ -149,7 +149,7 @@ void HelpWindow::keyPressEvent( QKeyEvent* e )
 // ================================================================
 HelpWindow* HelpWindow::openHelp( SALOME_InstallWizard* wizard )
 {
-  if ( QFile::exists( QDir::currentDirPath() + "/doc/readme.html" ) )
+  if ( QFile::exists( QDir( SALOME_InstallWizard::rootDirPath() ).filePath( "doc/readme.html" ) ) )
     return new HelpWindow( wizard );
   else
     return 0;
index 7008dcfbfe5f32bbe9c5e87ab2aa0a241d76b6e3..20da19db067ba4acb06ab0d67d052ea5c380be5c 100644 (file)
@@ -43,6 +43,7 @@
 #include <qradiobutton.h>
 #include <qbuttongroup.h>
 #include <qregexp.h>
+#include <qdir.h>
 
 #ifdef WNT
 #include <iostream.h>
 QString tmpDirName() { return QString(  "/INSTALLWORK" ) + QString::number( getpid() ); }
 #define TEMPDIRNAME tmpDirName()
 
+// ================================================================
+/*!
+ *  Script
+ *  Helper class to generate shell command
+ */
+// ================================================================
+class Script
+{
+public:
+  Script( const QString& cmd = QString::null, const QString& sep = " " ) : mySeparator( sep )
+  {
+    append( cmd );
+  }
+  void append( const QString& cmd )
+  {
+    if ( !cmd.isEmpty() ) myList.append( cmd );
+  }
+  Script& operator<<( const QString& cmd )
+  {
+    append( cmd );
+    return *this;
+  }
+  QString script() const
+  {
+    return myList.join( mySeparator );
+  }
+  void clear()
+  {
+    myList.clear();
+  }
+private:
+  QStringList myList;
+  QString     mySeparator;
+};
+
 // ================================================================
 /*!
  *  ProcessThread
- *  Class for executing systen commands
+ *  Class for executing system commands
  */
 // ================================================================
 static QMutex myMutex(false);
@@ -276,10 +312,11 @@ static bool makeDir( const QString& theDir, QString& theCreated )
       QFileInfo fi( aDir.left( start ) );
       if ( !fi.exists() ) {
        // VSR: Create directory and set permissions to allow other users to remove it
-       QString script = "mkdir " + fi.absFilePath();
-       script += "; chmod 777 " + fi.absFilePath();
-       script += " > /dev/null";
-       if ( system( script.latin1() ) )
+       Script script;
+       script << "mkdir"     << QUOTE( fi.absFilePath() ) << ">& /dev/null" << "&&";
+       script << "chmod 777" << QUOTE( fi.absFilePath() ) << ">& /dev/null";
+       ___MESSAGE___( "script = " << script.script().latin1() );
+       if ( system( script.script().latin1() ) )
          return false;
        // VSR: Remember the top of the created directory (to remove it in the end of the installation)
        if ( theCreated.isNull() )
@@ -290,9 +327,10 @@ static bool makeDir( const QString& theDir, QString& theCreated )
   }
   if ( !QFileInfo( aDir ).exists() ) {
     // VSR: Create directory, other users should NOT have possibility to remove it!!!
-    QString script = "mkdir " + aDir;
-    script += " > /dev/null";
-    if ( system( script.latin1() ) )
+    Script script;
+    script << "mkdir" << QUOTE( aDir ) << ">& /dev/null";
+    ___MESSAGE___( "script = " << script.script().latin1() );
+    if ( system( script.script().latin1() ) )
       return false;
     // VSR: Remember the top of the created directory (to remove it in the end of the installation)
     if ( theCreated.isNull() )
@@ -427,8 +465,7 @@ public:
                      .arg( __IW_VERSION_MINOR__ ) \
                      .arg( __IW_VERSION_PATCH__ ) );
     QLabel* copyright = new QLabel( this, "copyright" );
-    copyright->setText( "<b>Copyright</b> &copy; 2007-2008 CEA/DEN, EDF R&amp;D, OPEN CASCADE<br><br>"
-                       "<b>Copyright</b> &copy; 2003-2007 OPEN CASCADE,<br>EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&amp;D,<br>LEG, PRINCIPIA R&amp;D, BUREAU VERITAS");
+    copyright->setText( "<b>Copyright</b> &copy; 2007-2009 CEA/DEN" );
     QFont font = title->font();
     font.setPointSize( (int)( font.pointSize() * 1.8 ) );
     title->setFont( font );
@@ -490,10 +527,9 @@ SALOME_InstallWizard::SALOME_InstallWizard(const QString& aXmlFileName,
   singleDir    = aSingleDir;
   stateChanged = true;
 
-  QDir appDir( qApp->applicationDirPath() );
-  appDir.cdUp();
-  binPath = appDir.filePath( "Products/BINARIES" );
-  srcPath = appDir.filePath( "Products/SOURCES" );
+  QDir rootDir( rootDirPath() );
+  binPath = rootDir.filePath( "Products/BINARIES" );
+  srcPath = rootDir.filePath( "Products/SOURCES" );
   oneProdDirName = "PRODUCTS";
   
   commonPlatform = "Debian 3.1";
@@ -504,7 +540,6 @@ SALOME_InstallWizard::SALOME_InstallWizard(const QString& aXmlFileName,
   // ... get current platform
   curPlatform = currentPlatform().join(" ");
   //cout << "curOS = " << curPlatform << endl;
-  //curPlatform = "";
   refPlatform = "";
   // ... check XML and platform definition
   getXmlAndPlatform();
@@ -609,13 +644,13 @@ SALOME_InstallWizard::SALOME_InstallWizard(const QString& aXmlFileName,
 SALOME_InstallWizard::~SALOME_InstallWizard()
 {
   shellProcess->kill(); // kill it for sure
-  QString script = "kill -9 ";
   int PID = (int)shellProcess->processIdentifier();
   if ( PID > 0 ) {
-    script += QString::number( PID );
-    script += " > /dev/null";
-    ___MESSAGE___( "script: " << script.latin1() );
-    if ( system( script.latin1() ) ) {
+    Script script;
+    script << "kill -9" << QString::number( PID ) << ">& /dev/null";
+    ___MESSAGE___( "script: " << script.script().latin1() );
+    if ( system( script.script().latin1() ) ) {
+      // error
     }
   }
   delete myThread;
@@ -650,10 +685,11 @@ QStringList SALOME_InstallWizard::currentPlatform()
     QFile file( osFileName );
     if ( file.open( IO_ReadOnly ) ) {
       QTextStream stream( &file );
-      while( !stream.atEnd() ) {
-        QString str = stream.readLine().stripWhiteSpace();
+      QStringList lines = QStringList::split( "\n", stream.read() );
+      file.close();
+      for ( uint i = 0; i < lines.count(); i++ ) {
+       QString str = lines[i];
         if ( str.isEmpty() ) continue;
-        file.close();
         // parse line
         QRegExp regvar = QRegExp( "(.*)\\s+[^\\s]*[R|r]elease[^\\s]*\\s+([\\d.]*)" );
         int pos = regvar.search( str );
@@ -689,6 +725,24 @@ QStringList SALOME_InstallWizard::currentPlatform()
   if ( !platArch.isEmpty() )    vals.append( platArch ); 
   return vals;
 }
+
+// ================================================================
+/*!
+ *  SALOME_InstallWizard::rootDirPath
+ *  Get application root dir
+ */
+// ================================================================
+QString SALOME_InstallWizard::rootDirPath()
+{
+  static QString rootDir;
+  if ( rootDir.isEmpty() ) {
+    QDir appDir( qApp->applicationDirPath() );
+    appDir.cdUp();
+    rootDir = appDir.absPath();
+  }
+  return rootDir;
+}
+
 // ================================================================
 /*!
  *  SALOME_InstallWizard::getPlatformBinPath
@@ -712,13 +766,15 @@ MapXmlFiles SALOME_InstallWizard::getXmlMap( const QString& aXmlFileName )
   MapXmlFiles xmlMap;
   QStringList xmlList;
   if ( !aXmlFileName.isEmpty() )
-    xmlList.append( aXmlFileName );
+    xmlList.append( QFileInfo( aXmlFileName ).absFilePath() );
   else {
-    QDir dir( QDir::currentDirPath() );
-    xmlList = dir.entryList( "*.xml", QDir::Files | QDir::Readable );
+    QDir dir( rootDirPath() );
+    QStringList entries = dir.entryList( "*.xml", QDir::Files | QDir::Readable );
+    if ( entries.remove( "config.xml" ) )
+      entries.append( "config.xml" );
+    for ( uint i = 0; i < entries.count(); i++ )
+      xmlList.append( QDir( rootDirPath() ).filePath( entries[i] ) ); 
   }
-  if ( xmlList.remove( "config.xml" ) )
-    xmlList.append( "config.xml" );
   // XML files parsing
   QFile file;
   QDomDocument doc( "xml_doc" );
@@ -1335,7 +1391,7 @@ void SALOME_InstallWizard::setupReadmePage()
   pageLayout->addLayout( hLayout );
 
   // loading README file
-  QString readmeFile = QDir::currentDirPath() + "/README";
+  QString readmeFile = QDir( rootDirPath() ).filePath( "README" );
   QString text;
   if ( readFile( readmeFile, text ) )
     readme->setText( text );
@@ -1638,13 +1694,13 @@ bool SALOME_InstallWizard::acceptData( const QString& pageTitle )
       return false;
     }
     // run script that checks available disk space for installing of products    // returns 1 in case of error
+    QDir rd( rootDirPath() );
     QFileInfo fi( QDir::cleanDirPath( targetFolder->text().stripWhiteSpace() ) );
-    QString script = "./config_files/checkSize.sh '";
-    script += fi.absFilePath();
-    script += "' ";
-    script += QString( "%1" ).arg( totSize );
-    ___MESSAGE___( "script = " << script.latin1() );
-    if ( system( script ) ) {
+    Script script;
+    script << QUOTE( rd.filePath( "config_files/checkSize.sh" ) );
+    script << QUOTE( fi.absFilePath() ) << QString::number( totSize );
+    ___MESSAGE___( "script = " << script.script().latin1() );
+    if ( system( script.script().latin1() ) ) {
       QMessageBox::critical( this,
                              tr( "Out of space" ),
                              tr( "There is no available disk space for installing of selected products" ),
@@ -1658,12 +1714,11 @@ bool SALOME_InstallWizard::acceptData( const QString& pageTitle )
     // run script that check available disk space for temporary files
     // returns 1 in case of error
     QFileInfo fit( QDir::cleanDirPath( tempFolder->text().stripWhiteSpace() ) );
-    QString tscript = "./config_files/checkSize.sh '";
-    tscript += fit.absFilePath();
-    tscript += "' ";
-    tscript += QString( "%1" ).arg( tempSize );
-    ___MESSAGE___( "script = " << tscript.latin1() );
-    if ( system( tscript ) ) {
+    Script tscript;
+    tscript << QUOTE( rd.filePath( "config_files/checkSize.sh" ) );
+    tscript << QUOTE( fit.absFilePath() ) << QString::number( tempSize );
+    ___MESSAGE___( "script = " << tscript.script().latin1() );
+    if ( system( tscript.script().latin1() ) ) {
       QMessageBox::critical( this,
                             tr( "Out of space" ),
                             tr( "There is no available disk space for the temporary files" ),
@@ -1699,11 +1754,12 @@ bool SALOME_InstallWizard::acceptData( const QString& pageTitle )
          }
          // check installation script existence
          else {
-           QFileInfo fi( QString("./config_files/") + item->text(2) );
+           QDir rd( rootDirPath() );
+           QFileInfo fi( rd.filePath( QString( "config_files/%1" ).arg( item->text(2) ) ) );
            if ( !fi.exists() || !fi.isExecutable() ) {
              QMessageBox::warning( this,
                                    tr( "Error" ),
-                                   tr( "The script %1 required for %2 doesn't exist or doesn't have execute permissions.").arg("./config_files/" + item->text(2)).arg(item->text(0)),
+                                   tr( "The script %1 required for %2 doesn't exist or doesn't have execute permissions.").arg(fi.filePath()).arg(item->text(0)),
                                    QMessageBox::Ok,
                                    QMessageBox::NoButton,
                                    QMessageBox::NoButton );
@@ -1795,7 +1851,7 @@ void SALOME_InstallWizard::runModifyLaFiles()
   // ... update status label
   statusLab->setText( tr( "Modification of *.la files of SALOME modules..." ) );
   // set process arguments
-  modifyLaProc->setWorkingDirectory( QDir::cleanDirPath( QFileInfo( "./config_files/" ).absFilePath() ) );
+  modifyLaProc->setWorkingDirectory( QDir( rootDirPath() ).filePath( "config_files" ) );
   modifyLaProc->addArgument( "modifyLaFiles.sh" );
   modifyLaProc->addArgument( "modify_la_files" );
   modifyLaProc->addArgument( QDir::cleanDirPath( QFileInfo( targetFolder->text().stripWhiteSpace() ).absFilePath() ) );
@@ -1848,7 +1904,7 @@ void SALOME_InstallWizard::runCheckFLib()
   // ... update status label
   statusLab->setText( tr( "Check Fortran libraries..." ) );
   // ... search "not found" libraries
-  checkFLibProc->setWorkingDirectory( QDir::cleanDirPath( QFileInfo( "./config_files/" ).absFilePath() ) );
+  checkFLibProc->setWorkingDirectory( QDir( rootDirPath() ).filePath( "config_files" ) );
   checkFLibProc->addArgument( "checkFortran.sh" );
   checkFLibProc->addArgument( "find_libraries" );
   checkFLibProc->addArgument( QDir::cleanDirPath( QFileInfo( targetFolder->text().stripWhiteSpace() ).absFilePath() ) );
@@ -1944,8 +2000,8 @@ void SALOME_InstallWizard::checkProductPage()
   QFileInfo fi( QDir::cleanDirPath( targetFolder->text().stripWhiteSpace() ) );
   if ( fi.exists() ) {
     diskSpaceProc->clearArguments();
-    QString script = "./config_files/diskSpace.sh";
-    diskSpaceProc->addArgument( script );
+    diskSpaceProc->setWorkingDirectory( QDir( rootDirPath() ).filePath( "config_files" ) );
+    diskSpaceProc->addArgument( "diskSpace.sh" );
     diskSpaceProc->addArgument( fi.absFilePath() );
     // run script
     diskSpaceProc->start();
@@ -2084,7 +2140,7 @@ void SALOME_InstallWizard::launchScript()
     // fill in script parameters
     shellProcess->clearArguments();
     // ... script name
-    shellProcess->setWorkingDirectory( QDir::cleanDirPath( QFileInfo( "./config_files/" ).absFilePath() ) );
+    shellProcess->setWorkingDirectory( QDir( rootDirPath() ).filePath( "config_files" ) );
     if ( !extraProducts.contains( prodProc ) ) {
       item = findItem( prodProc );
       shellProcess->addArgument( item->text(2) );
@@ -2106,7 +2162,7 @@ void SALOME_InstallWizard::launchScript()
     if ( notInstall.contains( prodProc ) || prodProc == "gcc" ) {
       shellProcess->addArgument( "try_preinstalled" );
       shellProcess->addArgument( QFileInfo( tmpFolder ).absFilePath() );
-      shellProcess->addArgument( QDir::currentDirPath() + "/Products" );
+      shellProcess->addArgument( QDir( rootDirPath() ).filePath( "Products" ) );
       statusLab->setText( tr( "Collecting environment for '" ) + prodProc + "'..." );
     }
     // ... binaries ?
@@ -2194,18 +2250,16 @@ void SALOME_InstallWizard::launchScript()
     if ( item->isOn() && dep.pickUpEnvironment() ) {
       statusLab->setText( tr( "Pick-up products environment for " ) + dep.getName().latin1() + "..." );
       ___MESSAGE___( "... for " << dep.getName().latin1() );
-      QString script;
-      script += "cd " + QUOTE( QFileInfo( QDir::cleanDirPath( "./config_files/" ) ).absFilePath() ) + "; ";
-      script += item->text(2) + " ";
-      script += "pickup_env ";
-      script += QUOTE( QFileInfo( QDir::cleanDirPath( tempFolder->text().stripWhiteSpace() ) + TEMPDIRNAME ).absFilePath() ) + " ";
-      script += QUOTE( QFileInfo( QDir::cleanDirPath( QDir::currentDirPath() + "/Products" ) ).absFilePath() ) + " ";
-      script += QUOTE( QFileInfo( QDir::cleanDirPath( targetFolder->text().stripWhiteSpace() ) ).absFilePath() ) + " ";
-      script += depproducts + " ";
-      script += item->text(0) + " ";
-      script += QUOTE( prodSequence.join( " " ) );
-      ___MESSAGE___( "... --> " << script.latin1() );
-      if ( system( script.latin1() ) ) {
+      QDir rd( rootDirPath() );
+      Script script;
+      script << "cd" << QUOTE( rd.filePath( "config_files" ) ) << ";";
+      script << item->text(2) << "pickup_env";
+      script << QUOTE( QFileInfo( QDir::cleanDirPath( tempFolder->text().stripWhiteSpace() ) + TEMPDIRNAME ).absFilePath() );
+      script << QUOTE( QFileInfo( QDir::cleanDirPath( QDir( rootDirPath() ).filePath( "Products" ) ) ).absFilePath() );
+      script << QUOTE( QFileInfo( QDir::cleanDirPath( targetFolder->text().stripWhiteSpace() ) ).absFilePath() );
+      script << depproducts << item->text(0) << QUOTE( prodSequence.join( " " ) );
+      ___MESSAGE___( "... --> " << script.script().latin1() );
+      if ( system( script.script().latin1() ) ) {
        ___MESSAGE___( "ERROR" );
       }
     }
@@ -2332,15 +2386,15 @@ void SALOME_InstallWizard::onFinishButton()
   ButtonList::Iterator it;
   for ( it = buttons.begin(); it != buttons.end(); ++it ) {
     if ( (*it).button() && (*it).button() == btn ) {
-      QString script;
-      script += "( cd " + QUOTE( QFileInfo( QDir::cleanDirPath( "./config_files/" ) ).absFilePath() ) + "; ";
-      script +=  + (*it).script();
-      script += " execute ";
-      script += QUOTE( QFileInfo( QDir::cleanDirPath( targetFolder->text().stripWhiteSpace() ) ).absFilePath() ) + " ";
-      script += QUOTE( QFileInfo( QDir::cleanDirPath( tempFolder->text().stripWhiteSpace() ) + TEMPDIRNAME ).absFilePath() ) + " ";
-      script += " > /dev/null )";
-      ___MESSAGE___( "script: " << script.latin1() );
-      if ( (*it).script().isEmpty() || system( script.latin1() ) ) {
+      QDir rd( rootDirPath() );
+      Script script;
+      script << "cd" << QUOTE( rd.filePath( "config_files" ) ) << ";";
+      script << (*it).script() << "execute";
+      script << QUOTE( QFileInfo( QDir::cleanDirPath( targetFolder->text().stripWhiteSpace() ) ).absFilePath() );
+      script << QUOTE( QFileInfo( QDir::cleanDirPath( tempFolder->text().stripWhiteSpace() ) + TEMPDIRNAME ).absFilePath() );
+      script << ">& /dev/null";
+      ___MESSAGE___( "script: " << script.script().latin1() );
+      if ( (*it).script().isEmpty() || system( script.script().latin1() ) ) {
        QMessageBox::warning( this,
                              tr( "Error" ),
                              tr( "Can't perform action!"),
@@ -2448,22 +2502,26 @@ void SALOME_InstallWizard::clean(bool rmDir)
   myWC.wakeAll();
   while ( myThread->running() );
   // first remove temporary files
-  QString script = "cd ./config_files/; remove_tmp.sh '";
-  script += tempFolder->text().stripWhiteSpace() + TEMPDIRNAME;
-  script += "' ";
-  script += QUOTE(getAllProducts(productsMap));
-  script += " > /dev/null";
-  ___MESSAGE___( "script = " << script.latin1() );
-  if ( system( script.latin1() ) ) {
+  QDir rd( rootDirPath() );
+  Script script;
+  script << "cd" << QUOTE( rd.filePath( "config_files" ) ) << ";";
+  script << "remove_tmp.sh" << QUOTE( tempFolder->text().stripWhiteSpace() + TEMPDIRNAME );
+  script << QUOTE( getAllProducts( productsMap ) );
+  script << ">& /dev/null";
+  ___MESSAGE___( "script = " << script.script().latin1() );
+  if ( system( script.script().latin1() ) ) {
+    // error
   }
   // then try to remove created temporary directory
   //script = "rm -rf " + QDir::cleanDirPath( tempFolder->text().stripWhiteSpace() ) + TEMPDIRNAME;
   if ( rmDir && !tmpCreated.isNull() ) {
-    script = "rm -rf " + tmpCreated;
-    script += " > /dev/null";
-    if ( system( script.latin1() ) ) {
+    script.clear();
+    script << "rm -rf" << QUOTE( tmpCreated );
+    script << ">& /dev/null";
+    if ( system( script.script().latin1() ) ) {
+      // error
     }
-    ___MESSAGE___( "script = " << script.latin1() );
+    ___MESSAGE___( "script = " << script.script().latin1() );
   }
 }
 // ================================================================
@@ -2602,15 +2660,15 @@ void SALOME_InstallWizard::pageChanged( const QString & mytitle)
     ButtonList::Iterator it;
     for ( it = buttons.begin(); it != buttons.end(); ++it ) {
       if ( (*it).button() ) {
-       QString script;
-       script += "( cd " + QUOTE( QFileInfo( QDir::cleanDirPath( "./config_files/" ) ).absFilePath() ) + "; ";
-       script +=  + (*it).script();
-       script += " check_enabled ";
-       script += QUOTE( QFileInfo( QDir::cleanDirPath( targetFolder->text().stripWhiteSpace() ) ).absFilePath() ) + " ";
-       script += QUOTE( QFileInfo( QDir::cleanDirPath( tempFolder->text().stripWhiteSpace() ) + TEMPDIRNAME ).absFilePath() ) + " ";
-       script += " > /dev/null )";
-       ___MESSAGE___( "script: " << script.latin1() );
-       (*it).button()->setEnabled( !(*it).script().isEmpty() && !system( script.latin1() ) );
+       QDir rd( rootDirPath() );
+       Script script;
+       script << "cd" << QUOTE( rd.filePath( "config_files" ) ) << ";";
+       script << (*it).script() << "check_enabled";
+       script << QUOTE( QFileInfo( QDir::cleanDirPath( targetFolder->text().stripWhiteSpace() ) ).absFilePath() );
+       script << QUOTE( QFileInfo( QDir::cleanDirPath( tempFolder->text().stripWhiteSpace() ) + TEMPDIRNAME ).absFilePath() );
+       script << ">& /dev/null";
+       ___MESSAGE___( "script: " << script.script().latin1() );
+       (*it).button()->setEnabled( !(*it).script().isEmpty() && !system( script.script().latin1() ) );
       }
     }
     finishButton()->setEnabled( true );
@@ -2766,10 +2824,12 @@ void SALOME_InstallWizard::onStart()
       // update status label
       statusLab->setText( tr( "Check Fortran compiler..." ) );
       // check Fortran compiler.
-      QString script = "./config_files/checkFortran.sh find_compilers";
-      script += " " + QUOTE( QFileInfo( QDir::cleanDirPath( tempFolder->text().stripWhiteSpace() ) + TEMPDIRNAME ).absFilePath() );
-      ___MESSAGE___( "script = " << script.latin1() );
-      if ( system( script ) ) {
+      QDir rd( rootDirPath() );
+      Script script;
+      script << QUOTE( rd.filePath( "config_files/checkFortran.sh" ) ) << "find_compilers";
+      script << QUOTE( QFileInfo( QDir::cleanDirPath( tempFolder->text().stripWhiteSpace() ) + TEMPDIRNAME ).absFilePath() );
+      ___MESSAGE___( "script = " << script.script().latin1() );
+      if ( system( script.script().latin1() ) ) {
        QMessageBox::critical( this,
                               tr( "Error" ),
                               tr( "Fortran compiler was not found at current system!\n"
@@ -2852,10 +2912,12 @@ void SALOME_InstallWizard::onStart()
 
     // create a backup of 'env_build.csh', 'env_build.sh', 'env_products.csh', 'env_products.sh'
     // ( backup of 'salome.csh' and 'salome.sh' is made if pick-up environment is called )
-    QString script = "./config_files/backupEnv.sh ";
-    script += QUOTE( QFileInfo( QDir::cleanDirPath( targetFolder->text().stripWhiteSpace() ) ).absFilePath() );
-    ___MESSAGE___( "script = " << script.latin1() );
-    if ( system( script ) ) {
+    QDir rd( rootDirPath() );
+    Script script;
+    script << QUOTE( rd.filePath( "config_files/backupEnv.sh" ) );
+    script << QUOTE( QFileInfo( QDir::cleanDirPath( targetFolder->text().stripWhiteSpace() ) ).absFilePath() );
+    ___MESSAGE___( "script = " << script.script().latin1() );
+    if ( system( script.script().latin1() ) ) {
       if ( QMessageBox::warning( this,
                                 tr( "Warning" ),
                                 tr( "Backup environment files have not been created.\n"
index 3d18fac874912424587fe1e09d9e27b45fb1b5b8..4a42840ce50208b15cd62d8d7c06db34bbe5c905 100644 (file)
@@ -172,6 +172,8 @@ class SALOME_InstallWizard: public InstallWizard
   QString getBasePlatform();
   // get current platform
   static QStringList currentPlatform();
+  // get application root dir
+  static QString     rootDirPath();
 
   // get binaries path
   QString getBinPath() const { return binPath; }