]> SALOME platform Git repositories - tools/install.git/commitdiff
Salome HOME
Implementation of the 0019993 improvement ("If error of installation in installWizard...
authorakl <akl@opencascade.com>
Wed, 8 Apr 2009 07:15:51 +0000 (07:15 +0000)
committerakl <akl@opencascade.com>
Wed, 8 Apr 2009 07:15:51 +0000 (07:15 +0000)
bin/SALOME_InstallWizard
doc/progresspage1.png
doc/progresspage2.png
doc/readme.html
src/SALOME_InstallWizard.cxx
src/SALOME_InstallWizard.hxx
src/globals.h

index fa9d3be36c1a425752d1e858f1d4087406ae531a..99158b782a9a798427712d852f87e4a17c151cd5 100755 (executable)
Binary files a/bin/SALOME_InstallWizard and b/bin/SALOME_InstallWizard differ
index 20ac54bd92a6c5b6b2e85a6c0eba0e84395c44c3..465ce5873dd99be5afa79e7c959513389b222af7 100644 (file)
Binary files a/doc/progresspage1.png and b/doc/progresspage1.png differ
index c2aad1f876b3d869617a27d15a87cc2738f6133b..50cc18b6c854e03572b58f37722fc42d77f64c09 100644 (file)
Binary files a/doc/progresspage2.png and b/doc/progresspage2.png differ
index 968eb4e2cbec1add9d884004d90ab769c5a6024b..9dfc60df42e0d75a3a2bdade3814b7bd767f93d4 100755 (executable)
@@ -419,7 +419,7 @@ previous pages. You can review again your choices and change them if
 necessary returning to the previous pages. <br>
 When you are sure that everything is OK, press <i>"Next"</i>
 button to
-follow to the <a href="#ProgressPage">progress page</a>.
+follow to the <a href="#ProgressPage1">progress page</a>.
 </p>
 <center><a name="ProgressPage1"></a><br>
 <img alt="Progress page (not started yet)" src="progresspage1.png" style="width: 593px; height: 495px;">
@@ -428,14 +428,16 @@ not started yet
 </p>
 </center>
 <div style="text-align: left;">To start the installation
-of the selected
-products click <i>"Start"</i>
+of the selected products click <i>"Start"</i>
 button. It launches the shell installation script and you will be able
 to see the output of the script in the topmost frame of the dialog box.
-If any
-errors occur during the installation progress, the corresponding
-messages
-will be printed to the log window in the bold red font.<br>
+If any errors occur during the installation progress, the corresponding
+messages will be printed to the log window in the bold red font and 
+installation process will be aborted with error message box. But user 
+has possibility to change this default behaviour by 
+<i>"Ignore installation errors"</i> checkbox. It is necessary to check 
+it before start and all occured errors will be passed, 
+and installation will be continued in any case.<br>
 </div>
 <div style="text-align: left;">It is possible to break the
 installation at any time by pressing <span style="font-style: italic;">"Stop"</span>
index 8198b96bdbaadf86a2c0413425e2ac4fa7f6e734..0dafef5d19ab7085fd03013b94b16df5b884909c 100644 (file)
@@ -1344,14 +1344,20 @@ void SALOME_InstallWizard::setupProgressPage()
   progressView = new ProgressView( widget );
   progressView->setSizePolicy( QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Expanding ) );
   progressView->setMinimumSize( 100, 10 );
+  // possibility to ignore all errors
+  ignoreErrCBox = new QCheckBox( tr( "Ignore errors" ), widget );
+  setAboutInfo( ignoreErrCBox, tr( "Check this option if you want to proceed installation \nprocess even there will be some errors" ) );
+  ignoreErrCBox->setChecked( false );
+  // product installation status bar
   statusLab = new QLabel( widget );
   statusLab->setFrameShape( QButtonGroup::LineEditPanel );
   setAboutInfo( progressView, tr( "Installation status on the selected products" ) );
   // layouting
   layout->addRowSpacing( 0, 6 );
-  layout->addWidget( resultLab,    1, 0 );
-  layout->addWidget( progressView, 2, 0 );
-  layout->addWidget( statusLab,    3, 0 );
+  layout->addWidget( resultLab,     1, 0 );
+  layout->addWidget( progressView,  2, 0 );
+  layout->addWidget( ignoreErrCBox, 3, 0 );
+  layout->addWidget( statusLab,     4, 0 );
   // layouting
   pageLayout->addWidget( splitter,  0, 0 );
   // adding page
@@ -1881,11 +1887,7 @@ void SALOME_InstallWizard::checkModifyLaResult()
                           QMessageBox::NoButton );
     // enable <Next> button
     setNextEnabled( true );
-    nextButton()->setText( tr( "&Start" ) );
-    setAboutInfo( nextButton(), tr( "Start installation process" ) );
-    // reconnect Next button - to use it as Start button
-    disconnect( this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
-    disconnect( this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
+    doPostActions( tr( "&Start" ), tr( "Start installation process" ) );
     connect(    this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
     // enable <Back> button
     setBackEnabled( true );
@@ -2271,6 +2273,12 @@ void SALOME_InstallWizard::launchScript()
     }
     return;
   }
+
+  // else try to find aborted product
+  prodProc = progressView->findStatus( Aborted );
+  if ( !prodProc.isNull() )
+    return; // installation has been aborted
+
   ___MESSAGE___( "All products have been installed successfully" );
   // all products are installed successfully
   MapProducts::Iterator mapIter;
@@ -2321,10 +2329,7 @@ void SALOME_InstallWizard::completeInstallation()
   statusLab->setText( tr( "Installation completed" ) );
   // <Next> button
   setNextEnabled( true );
-  nextButton()->setText( tr( "&Next >" ) );
-  setAboutInfo( nextButton(), tr( "Move to the next step of the installation procedure" ) );
-  disconnect( this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
-  disconnect( this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
+  doPostActions( tr( "&Next >" ), tr( "Move to the next step of the installation procedure" ) );
   connect(    this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
   // <Back> button
   setBackEnabled( true );
@@ -2339,7 +2344,7 @@ void SALOME_InstallWizard::completeInstallation()
   if ( hasErrors ) {
     if ( QMessageBox::warning( this,
                               tr( "Warning" ),
-                              tr( "There were some errors and/or warnings during the installation.\n"
+                              tr( "There were some errors during the installation.\n"
                                   "Do you want to save the installation log?" ),
                               tr( "&Save" ),
                               tr( "&Cancel" ),
@@ -2564,10 +2569,7 @@ void SALOME_InstallWizard::clean(bool rmDir)
 // ================================================================
 void SALOME_InstallWizard::pageChanged( const QString & mytitle)
 {
-  nextButton()->setText( tr( "&Next >" ) );
-  setAboutInfo( nextButton(), tr( "Move to the next step of the installation procedure" ) );
-  disconnect( this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
-  disconnect( this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
+  doPostActions( tr( "&Next >" ), tr( "Move to the next step of the installation procedure" ) );
   connect(    this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
   cancelButton()->disconnect();
   connect( cancelButton(), SIGNAL( clicked()), this, SLOT( reject() ) );
@@ -2676,11 +2678,7 @@ void SALOME_InstallWizard::pageChanged( const QString & mytitle)
       passedParams->clear();
       passedParams->setEnabled( false );
       QFont f = parametersLab->font(); f.setBold( false ); parametersLab->setFont( f );
-      nextButton()->setText( tr( "&Start" ) );
-      setAboutInfo( nextButton(), tr( "Start installation process" ) );
-      // reconnect Next button - to use it as Start button
-      disconnect( this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
-      disconnect( this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
+      doPostActions( tr( "&Start" ), tr( "Start installation process" ) );
       connect(    this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
       setNextEnabled( true );
       // reconnect Cancel button to terminate process
@@ -2820,6 +2818,8 @@ void SALOME_InstallWizard::onStart()
   installInfo->setFinished( false );
   passedParams->clear();
   passedParams->setEnabled( false );
+  // disable 'Ignore errors' checkbox during installation process
+  ignoreErrCBox->setEnabled( false );
   QFont f = parametersLab->font(); f.setBold( false ); parametersLab->setFont( f );
 
   // update status label
@@ -2874,11 +2874,7 @@ void SALOME_InstallWizard::onStart()
        statusLab->setText( tr( "Installation has been aborted" ) );
        // enable <Next> button
        setNextEnabled( true );
-       nextButton()->setText( tr( "&Start" ) );
-       setAboutInfo( nextButton(), tr( "Start installation process" ) );
-       // reconnect Next button - to use it as Start button
-       disconnect( this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
-       disconnect( this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
+       doPostActions( tr( "&Start" ), tr( "Start installation process" ) );
        connect(    this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
        // enable <Back> button
        setBackEnabled( true );
@@ -2960,13 +2956,9 @@ void SALOME_InstallWizard::onStart()
        // installation aborted
        abort();
        statusLab->setText( tr( "Installation has been aborted by user" ) );
-       // enable <Next> button
+       // update <Next> button
        setNextEnabled( true );
-       nextButton()->setText( tr( "&Start" ) );
-       setAboutInfo( nextButton(), tr( "Start installation process" ) );
-       // reconnect Next button - to use it as Start button
-       disconnect( this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
-       disconnect( this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
+       doPostActions( tr( "&Start" ), tr( "Start installation process" ) );
        connect(    this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
        // enable <Back> button
        setBackEnabled( true );
@@ -3018,16 +3010,9 @@ void SALOME_InstallWizard::productInstalled()
     installInfo->setFinished( true );
     // enable <Next> button
     setNextEnabled( true );
-    nextButton()->setText( tr( "&Start" ) );
-    setAboutInfo( nextButton(), tr( "Start installation process" ) );
-    // reconnect Next button - to use it as Start button
-    disconnect( this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
-    disconnect( this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
+    doPostActions( tr( "&Start" ), tr( "Start installation process" ) );
     connect(    this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
-    //nextButton()->setText( tr( "&Next >" ) );
-    //setAboutInfo( nextButton(), tr( "Move to the next step of the installation procedure" ) );
-    //disconnect( this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
-    //disconnect( this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
+    //doPostActions( tr( "&Next >" ), tr( "Move to the next step of the installation procedure" ) );
     //connect(    this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
     // enable <Back> button
     setBackEnabled( true );
@@ -3188,6 +3173,10 @@ void SALOME_InstallWizard::readFromStderr( )
     installInfo->scrollToBottom();
     hasErrors = true;
   }
+
+  // stop or proceed installation process
+  manageInstProc();
+
   // VSR: 10/11/05 - disable answer mode ==>
   // passedParams->setEnabled( true );
   // passedParams->setFocus();
@@ -3195,6 +3184,41 @@ void SALOME_InstallWizard::readFromStderr( )
   // VSR: 10/11/05 - disable answer mode <==
 }
 // ================================================================
+/*!
+ *  SALOME_InstallWizard::manageInstProc
+ *  QProcess slot: -->stop installation if there is an error in stderr
+ */
+// ================================================================
+void SALOME_InstallWizard::manageInstProc()
+{
+  if ( !hasErrors || ignoreErrCBox->isChecked() )
+    return; //proceed installation process
+  
+  // abort the current installation
+  statusLab->setText( tr( "Aborting installation..." ) );
+  abort();
+  statusLab->setText( tr( "Installation has been aborted because some errors" ) );
+  if ( QMessageBox::critical( this,
+                             tr( "Error" ),
+                             tr( "Installation process has been stopped, because an error occured \n"
+                                 "during an installation of the current product!\n"
+                                 "Please see the installation progress view for more details about the error.\n\n"
+                                 "Do you want to save the installation log?" ),
+                             tr( "&Save" ),
+                             tr( "&Cancel" ),
+                             QString::null,
+                             0,
+                             1 ) == 0 )
+    saveLog();
+  // enable <Next> button
+  setNextEnabled( true );
+  doPostActions( tr( "&Start" ), tr( "Start installation process" ) );
+  connect( this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
+  // enable <Back> button
+  setBackEnabled( true );
+  installInfo->setFinished( true );
+}
+// ================================================================
 /*!
  *  SALOME_InstallWizard::setDependancies
  *  Sets dependancies for the product item
@@ -3205,6 +3229,24 @@ void SALOME_InstallWizard::setDependancies( QCheckListItem* item, Dependancies d
   productsMap[item] = dep;
 }
 // ================================================================
+/*!
+ *  SALOME_InstallWizard::doPostActions
+ *  Executes some actions after finish of installation process (successful or not)
+ */
+// ================================================================
+void SALOME_InstallWizard::doPostActions( const QString& btnText,
+                                         const QString& btnAboutInfo )
+{
+  // update <Next> button
+  nextButton()->setText( btnText );
+  setAboutInfo( nextButton(), btnAboutInfo );
+  // reconnect Next button - to use it as Start button
+  disconnect( this, SIGNAL( nextClicked() ), this, SLOT( next() ) );
+  disconnect( this, SIGNAL( nextClicked() ), this, SLOT( onStart() ) );
+  // enable 'Ignore errors' checkbox
+  ignoreErrCBox->setEnabled( true );
+}
+// ================================================================
 /*!
  *  SALOME_InstallWizard::addFinishButton
  *  Add button for the <Finish> page.
index e2b26cd2da1f575bc23fc15ad9dbef70c6e3583a..94a6c9345aefd25b90363d255211b61fe9d92eed 100644 (file)
@@ -193,6 +193,10 @@ class SALOME_InstallWizard: public InstallWizard
   // set dependancies
   void setDependancies( QCheckListItem* item, Dependancies dep);
 
+  // executes some actions after finish of installation process (successful or not)
+  void doPostActions( const QString& btnText,
+                     const QString& btnAboutInfo );
+
   // add button for the <Finish> page
   void addFinishButton( const QString& label, 
                        const QString& tooltip, 
@@ -348,6 +352,8 @@ class SALOME_InstallWizard: public InstallWizard
   void readFromStdout();
   // -->something was written to stderr
   void readFromStderr();
+  // -->stop installation process if there is an error in stderr
+  void manageInstProc();
 
  private:
   QString          myIWName;       // Installation Wizard's name
@@ -438,6 +444,7 @@ class SALOME_InstallWizard: public InstallWizard
   QLineEdit*       passedParams;   // user can pass data to running script
   QTextEdit*       installProgress;// contains information about progress of installing selected products
   ProgressView*    progressView;   // displays information about progress of installing selected products
+  QCheckBox*       ignoreErrCBox;  // checkbox to ignore installation errors
   QLabel*          statusLab;      // displays currently performed action
   // --> finish page
   QWidget*         readmePage;     // page itself
index a7fe46d7c2970bdc2026ef8ee523425ad51e6f14..6d57705749f35480bfe3061deaaacde84614dd37 100644 (file)
@@ -17,7 +17,7 @@
 
 #define __IW_VERSION_MAJOR__ 1
 #define __IW_VERSION_MINOR__ 1
-#define __IW_VERSION_PATCH__ 6
+#define __IW_VERSION_PATCH__ 7
 
 #define __IW_VERSION__ (__IW_VERSION_MAJOR__*10000 + \
                         __IW_VERSION_MINOR__*100   + \