From: vsr Date: Wed, 11 Feb 2009 13:42:32 +0000 (+0000) Subject: Fix problem with incorrect application dir path X-Git-Tag: V4_1_4sp2~6 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=1fd6f8e3b7ac0c111ab16fd2818fbd3576fe70a4;p=tools%2Finstall.git Fix problem with incorrect application dir path --- diff --git a/bin/SALOME_InstallWizard b/bin/SALOME_InstallWizard index fbce562..e294c30 100755 Binary files a/bin/SALOME_InstallWizard and b/bin/SALOME_InstallWizard differ diff --git a/src/SALOME_HelpWindow.cxx b/src/SALOME_HelpWindow.cxx index bbaafd1..c0f0763 100644 --- a/src/SALOME_HelpWindow.cxx +++ b/src/SALOME_HelpWindow.cxx @@ -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; diff --git a/src/SALOME_InstallWizard.cxx b/src/SALOME_InstallWizard.cxx index 7008dcf..20da19d 100644 --- a/src/SALOME_InstallWizard.cxx +++ b/src/SALOME_InstallWizard.cxx @@ -43,6 +43,7 @@ #include #include #include +#include #ifdef WNT #include @@ -60,10 +61,45 @@ 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( "Copyright © 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE

" - "Copyright © 2003-2007 OPEN CASCADE,
EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&D,
LEG, PRINCIPIA R&D, BUREAU VERITAS"); + copyright->setText( "Copyright © 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" diff --git a/src/SALOME_InstallWizard.hxx b/src/SALOME_InstallWizard.hxx index 3d18fac..4a42840 100644 --- a/src/SALOME_InstallWizard.hxx +++ b/src/SALOME_InstallWizard.hxx @@ -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; }