
   // If any subcomponent failed, the install aborts here.
   if (newSubFailure) {
      dbgMsg(ErrorMsg6) ;
      abortMe() ;
    }

   return 0 ;
}

// Displays HTML information file in a browser window.
function showReadme(ReadmeFile, InfoType) {
   if(!silentValue) {

     if(InfoType == "file") {
       // At the moment we are not supporting displaying files.  When we do
       //   we will probably want to modify how this behaves.  We will 
       //   probably need to have the entire path to the file passed in and 
       //   UI will be added to support helping the user to identify both 
       //   the file and its installed location.  Also, displaying (from 
       //   the Web, at least, is only support in 4.5 and later, so that 
       //   will need to be made very clear to users.
       var tmpStr = su.GetFolder("Communicator") ;
       if (tmpStr == null) {
          dbgMsg("Cannot get the Communicator folder") ;
          return ;
       }

       // Strip the colons out of Communicator Folder path for Mac.
       if(navigator.platform == "MacPPC") {
          i = tmpStr.indexOf(":") ;
          while (i != -1) {
      	    tmpStr = tmpStr.substr(0,i) + "/" + tmpStr.substr(i+1) ;
             i = tmpStr.indexOf(":") ;
          }
       }

       var wndw = window.open("file:///" + tmpStr + ReadmeFile, "installer", "menubar=1,scrollbars=1");
     }

     if(InfoType == "url") {
       var wndw = window.open(ReadmeFile, "installer", "menubar=1,scrollbars=1");
     }
   }
}

// Handles catastrophic errors.
function abortMe(err) {
   if(!abortCalled) {
      dbgMsg(Msg4 + err) ;
      if(silentValue && showErrMsg)
        alert(silentErrMsgText);
      su.AbortInstall() ;
      abortCalled = true ;
   }
}

