[PC-BSD Commits] r790 - pcbsd/trunk/kcmPBMsource

svn at pcbsd.org svn at pcbsd.org
Mon Oct 22 08:44:51 PDT 2007


Author: tim
Date: 2007-10-22 08:44:50 -0700 (Mon, 22 Oct 2007)
New Revision: 790

Added:
   pcbsd/trunk/kcmPBMsource/pbi.cpp
   pcbsd/trunk/kcmPBMsource/pbi.h
Modified:
   pcbsd/trunk/kcmPBMsource/PBM.pro
   pcbsd/trunk/kcmPBMsource/pbm.ui
   pcbsd/trunk/kcmPBMsource/pbm.ui.h
Log:
Made some pretty serious changes to the internal architecture of the PBM.

The real benefit, is that everything is much tighter now, we don't need to keep several arrays in sync.

Users will notice that the PBI list is now sorted, something that wasn't easily doable in the old scheme.

Testers: This module will require heavy testing before 1.5, due to the major changes that have been made.



Modified: pcbsd/trunk/kcmPBMsource/PBM.pro
===================================================================
--- pcbsd/trunk/kcmPBMsource/PBM.pro	2007-10-16 17:27:23 UTC (rev 789)
+++ pcbsd/trunk/kcmPBMsource/PBM.pro	2007-10-22 15:44:50 UTC (rev 790)
@@ -5,7 +5,7 @@
 
 HEADERS	+= kcm.h
 
-SOURCES	+= kcm.cpp
+SOURCES	+= kcm.cpp pbi.cpp
 
 FORMS	= pbm.ui \
 	notroot.ui

Added: pcbsd/trunk/kcmPBMsource/pbi.cpp

Added: pcbsd/trunk/kcmPBMsource/pbi.h

Modified: pcbsd/trunk/kcmPBMsource/pbm.ui
===================================================================
--- pcbsd/trunk/kcmPBMsource/pbm.ui	2007-10-16 17:27:23 UTC (rev 789)
+++ pcbsd/trunk/kcmPBMsource/pbm.ui	2007-10-22 15:44:50 UTC (rev 790)
@@ -114,6 +114,9 @@
                                 <property name="selectionMode">
                                     <enum>Extended</enum>
                                 </property>
+                                <property name="variableHeight">
+                                    <bool>false</bool>
+                                </property>
                             </widget>
                             <widget class="QLayoutWidget">
                                 <property name="name">
@@ -318,29 +321,22 @@
     <include location="global" impldecl="in declaration">kdirwatch.h</include>
     <include location="global" impldecl="in declaration">qfile.h</include>
     <include location="global" impldecl="in declaration">kmessagebox.h</include>
+    <include location="local" impldecl="in declaration">pbi.h</include>
     <include location="local" impldecl="in implementation">pbm.ui.h</include>
 </includes>
 <variables>
-    <variable access="private">QProcess *RemoveFile;</variable>
-    <variable access="private">QString RealUserName;</variable>
-    <variable access="private">QProcess *CheckRoot;</variable>
-    <variable access="private">QProcess *RemoveScript;</variable>
-    <variable access="private">QString MimeFile[800][100];</variable>
-    <variable access="private">QString ProgExe[800][100];</variable>
-    <variable access="private">QString ProgWeb[800];</variable>
-    <variable access="private">QString ProgAuthor[800];</variable>
-    <variable access="private">QString ProgIcon[800];</variable>
-    <variable access="private">QString ProgVer[800];</variable>
-    <variable access="private">QString ProgName[800];</variable>
-    <variable access="private">QString ComponentName[500];</variable>
-    <variable access="private">QString ComponentDescr[500];</variable>
-    <variable access="private">QString ComponentDir[500];</variable>
-    <variable access="private">int ComponentInstalled[500];</variable>
-    <variable access="private">int ComponentWorkingItem;</variable>
-    <variable access="private">QProcess *removeComponentProc;</variable>
-    <variable access="private">QProcess *installComponentProc;</variable>
-    <variable access="private">uint ProgSize[800];</variable>
     <variable access="private">QProcess *InfoWindow;</variable>
+    <variable access="private">QProcess *installComponentProc;</variable>
+    <variable access="private">QProcess *removeComponentProc;</variable>
+    <variable access="private">int ComponentWorkingItem;</variable>
+    <variable access="private">int ComponentInstalled[500];</variable>
+    <variable access="private">QString ComponentDir[500];</variable>
+    <variable access="private">QString ComponentDescr[500];</variable>
+    <variable access="private">QString ComponentName[500];</variable>
+    <variable access="private">QProcess *RemoveScript;</variable>
+    <variable access="private">QProcess *CheckRoot;</variable>
+    <variable access="private">QString RealUserName;</variable>
+    <variable access="private">QProcess *RemoveFile;</variable>
 </variables>
 <slots>
     <slot access="private">RemoveButtonSlot()</slot>
@@ -357,9 +353,9 @@
 </slots>
 <functions>
     <function>ProgramInit()</function>
-    <function access="private">CleanPackageList( int RemNum )</function>
-    <function access="private">RemoveFiles( int RemNum )</function>
-    <function access="private">CheckScriptSlot( int item )</function>
+    <function access="private">CleanPackageList(PBI *pbi)</function>
+    <function access="private">RemoveFiles(PBI *pbi)</function>
+    <function access="private">CheckScriptSlot(PBI *pbi)</function>
     <function access="private">loadComponents()</function>
     <function access="private" returnType="QString">bytesToHumanReadable( float bytes )</function>
     <function access="private" returnType="int">getDirSize( QString path )</function>

Modified: pcbsd/trunk/kcmPBMsource/pbm.ui.h
===================================================================
--- pcbsd/trunk/kcmPBMsource/pbm.ui.h	2007-10-16 17:27:23 UTC (rev 789)
+++ pcbsd/trunk/kcmPBMsource/pbm.ui.h	2007-10-22 15:44:50 UTC (rev 790)
@@ -1,21 +1,27 @@
-/****************************************************************************
-** ui.h extension file, included from the uic-generated form implementation.
-**
-** If you want to add, delete, or rename functions or slots, use
-** Qt Designer to update this file, preserving your code.
-**
-** You should not define a constructor or destructor in this file.
-** Instead, write your code in functions called init() and destroy().
-** These will automatically be called by the form's constructor and
-** destructor.
-*****************************************************************************/
-/****************************************************************************
-*     Name: PBC-Wizard
-*  Version: 1.0
-*   Author: Kris Moore
-*  License: BSD (See LICENSE file for more detail)
-*     Date: 11-1-06
-*****************************************************************************/
+/***************************************************************************
+ *   Copyright (C) 2006 - 2007 PC-BSD Software   *
+ *   kris at pcbsd.com  *
+ *   tim at pcbsd.org   *
+ *                                                                         *
+ *   Permission is hereby granted, free of charge, to any person obtaining *
+ *   a copy of this software and associated documentation files (the       *
+ *   "Software"), to deal in the Software without restriction, including   *
+ *   without limitation the rights to use, copy, modify, merge, publish,   *
+ *   distribute, sublicense, and/or sell copies of the Software, and to    *
+ *   permit persons to whom the Software is furnished to do so, subject to *
+ *   the following conditions:                                             *
+ *                                                                         *
+ *   The above copyright notice and this permission notice shall be        *
+ *   included in all copies or substantial portions of the Software.       *
+ *                                                                         *
+ *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       *
+ *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    *
+ *   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ *   IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR     *
+ *   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
+ *   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR *
+ *   OTHER DEALINGS IN THE SOFTWARE.                                       *
+ ***************************************************************************/
 
 void PBM::ProgramInit()
 { 
@@ -56,15 +62,16 @@
 
 void PBM::RemoveButtonSlot()
 {
-   QValueList<int> selectedItems;
+   QValueList<PBI*> selectedItems;
    QStringList selectedNames;
    
    for (int i=0; i<SoftwareListBox->numRows(); i++)
    {
-      if (SoftwareListBox->isSelected(i))
+      PBI *pbi = dynamic_cast<PBI*>(SoftwareListBox->item(i));
+      if (pbi->isSelected())
       {
-         selectedItems += i;
-         selectedNames += ProgName[i] + " " + ProgVer[i];
+         selectedItems.append(pbi);
+         selectedNames += pbi->text();
       }
    }
    
@@ -77,19 +84,16 @@
       return;
    }
    
-   for (QValueList<int>::Iterator item = selectedItems.begin(); item != selectedItems.end(); ++item)
+   for (QValueList<PBI*>::Iterator item = selectedItems.begin(); item != selectedItems.end(); ++item)
    {
-      qDebug("Removing item: " + QString::number(*item) + " - " + ProgName[*item] + ProgVer[*item]);
-      SoftwareListBox->changeItem(*SoftwareListBox->pixmap(*item), tr("Removing") + "...", *item);
+      qDebug("Removing item: " + (*item)->text());
       CheckScriptSlot(*item);
       RemoveFiles(*item);
    }
    
-   uint iterations = 0;
-   for (QValueList<int>::Iterator item = selectedItems.begin(); item != selectedItems.end(); ++item)
+   for (QValueList<PBI*>::Iterator item = selectedItems.begin(); item != selectedItems.end(); ++item)
    {
-      CleanPackageList(*item - iterations);
-      iterations++;
+      CleanPackageList(*item);
    }
    
    tabPBM->setEnabled(TRUE);
@@ -99,10 +103,10 @@
 // Displays our items on the list
 void PBM::PopulateList()
 {
-    int i = -1;
-    int j = 0;
-    QString tmp;
-    QString ProgDirName;
+    PBI *pbi = 0;
+    SoftwareListBox->clear();
+    QPixmap defaultIcon;
+    defaultIcon.convertFromImage(QImage("/Programs/.config/application.png").smoothScale(40,40));
 
     qDebug("Opening ProgList");
     QFile file( "/Programs/.config/ProgList" );
@@ -116,46 +120,54 @@
             if (line.find("#" ) != 0)
            {
 		if (line.find("ProgName:" ) ==  0 )
-		{
-		    i++;
-		    ProgName[i] = line.replace("ProgName: ", "");
+                {
+                    if (pbi != 0) SoftwareListBox->insertItem(pbi);
+                    qDebug("PBI Count: " + QString::number(SoftwareListBox->count()));
+                    pbi = new PBI(defaultIcon);
+		    //ProgName[i] = line.replace("ProgName: ", "");
+                    pbi->setName(line.replace("ProgName: ", ""));
 		}
 		if ( line.find("ProgVer:") == 0)
 		{
-		    ProgVer[i] = line.replace("ProgVer: ", "");
+		    //ProgVer[i] = line.replace("ProgVer: ", "");
+                    pbi->setVersion(line.replace("ProgVer: ", ""));
 		}
 		if ( line.find("DefaultIcon:") == 0)
 		{
-		    ProgIcon[i] = line.replace("DefaultIcon: ", "");
+		    //ProgIcon[i] = line.replace("DefaultIcon: ", "");
+                    QString iconPath = line.replace("DefaultIcon: ", "");
+                    if (iconPath.isEmpty()) iconPath = "/Programs/.config/application.png";
+                    else iconPath = "/Programs/" + pbi->getName() + pbi->getVersion() + "/" + iconPath;
+                    iconPath.replace(" ", "");
+                    qDebug("iconPath: " + iconPath);
+                    pbi->setIcon(iconPath);
 		}
 		if ( line.find("ProgAuthor:") == 0)
 		{
-		    ProgAuthor[i] = line.replace("ProgAuthor: ", "");
+		    //ProgAuthor[i] = line.replace("ProgAuthor: ", "");
+                    pbi->setAuthor(line.replace("ProgAuthor: ", ""));
 		}
 		if ( line.find("ProgWeb:") == 0)
 		{
-		    ProgWeb[i] = line.replace("ProgWeb: ", "");
+		    //ProgWeb[i] = line.replace("ProgWeb: ", "");
+                    pbi->setWebsite(line.replace("ProgWeb: ", ""));
 		}
 		
 		if ( line.find("ExePath:") == 0)
 		{
-		    j = 0;
 		    while ( line.find("ExePath:") == 0)
 		    {
-		    ProgExe[i][j] = line.replace("ExePath: ", "");
-		    line = stream.readLine();
-		    j++;
+                       pbi->addExePath(line.replace("ExePath: ", ""));
+                       line = stream.readLine();
 		    }
 		}
 		
 		if ( line.find("MimeFile:") == 0)
 		{
-		    j = 0;
 		    while ( line.find("MimeFile:") == 0)
 		    {
-		    MimeFile[i][j] = line.replace("MimeFile: ", "");
-		    line = stream.readLine();
-		    j++;
+                       pbi->addMimeFile(line.replace("MimeFile: ", ""));
+                       line = stream.readLine();
 		    }
 		}
             }
@@ -163,10 +175,10 @@
         }
         file.close();
     }
-    
-    i = 0;
-    SoftwareListBox->clear();
-    
+    SoftwareListBox->insertItem(pbi);
+    qDebug(pbi->text());
+    SoftwareListBox->sort();
+    /**
     while (! ProgName[i].isEmpty())
     {
         tmp = ProgName[i];
@@ -202,145 +214,81 @@
         
         i++;
     }
+    **/
 }
 
 
-void PBM::CleanPackageList( int RemNum )
+void PBM::CleanPackageList(PBI *pbi)
 {
     QString NewConfig;
     QString ProgEntry;
     
-    // Remove Package from variables
-    int i = RemNum;
-    int j = 0;
-    while (! ProgName[i].isEmpty() )
-    {
-          ProgName[i] = ProgName[i+1];
-          ProgVer[i] = ProgVer[i+1];
-          ProgIcon[i] = ProgIcon[i+1];
-          ProgAuthor[i] = ProgAuthor[i+1];
-          ProgWeb[i] = ProgWeb[i+1];  
-	
-           j = 0;
-          while (! ProgExe[i+1][j].isEmpty() )
-         {
-                  ProgExe[i][j] = ProgExe[i+1][j];
-                  j++;
-          }
-          ProgExe[i][j] = "";
-	     
-           j = 0;
-          while (! MimeFile[i+1][j].isEmpty() )
-         {
-                  MimeFile[i][j] = MimeFile[i+1][j];
-                  j++;
-          }	  
-	  
-          MimeFile[i][j] = "";
-	  
-	  
-          i++;
-      }
-    
     // Save new File
     QFile file2( "/Programs/.config/ProgList" );
-    if ( file2.open( IO_WriteOnly ) ) {
+    if ( file2.open( IO_WriteOnly ) )
+    {
         QTextStream stream2( &file2 );
 
 	stream2 << "# PC-BSD - Install Config File\n";
 	stream2 << "# Please do not edit this file manually!\n";
 	stream2 << "#######################\n";
 	
-	i = 0;
-	while (! ProgName[i].isEmpty() )
-               {
-	    stream2 << "\n[ Program Entry ]\n";
-	    
-	    stream2 << "ProgName: " + ProgName[i] << "\n";
-	    stream2 << "ProgVer: " + ProgVer[i] << "\n";
-	    stream2 << "ProgAuthor: " + ProgAuthor[i] << "\n";
-	    stream2 << "ProgWeb: " + ProgWeb[i] << "\n";    
-	    stream2 << "DefaultIcon: " + ProgIcon[i] << "\n";
-	    j = 0;
-	    while (! ProgExe[i][j].isEmpty() )
-	    {
-		stream2 << "ExePath: " + ProgExe[i][j] << "\n";
-		j++;
-	    }
-	    
-	    j = 0;
-	    while (! MimeFile[i][j].isEmpty() )
-	    {
-		stream2 << "MimeFile: " + MimeFile[i][j] << "\n";
-		j++;
-	    }
-	    i++;
-                }
-
-
+        for (int i=0; i<SoftwareListBox->numRows(); i++)
+        {
+           PBI *item = dynamic_cast<PBI*>(SoftwareListBox->item(i));
+           if (item != pbi)
+           {
+              stream2 << "\n[ Program Entry ]\n";
+              stream2 << "ProgName: " + item->getName() << "\n";
+              stream2 << "ProgVer: " + item->getVersion() << "\n";
+              stream2 << "ProgAuthor: " + item->getAuthor() << "\n";
+              stream2 << "ProgWeb: " + item->getWebsite() << "\n";
+              stream2 << "DefaultIcon: " + item->getIconPath().section("/", 2, -1, QString::SectionSkipEmpty) << "\n";
+              
+              QStringList exePath = item->getExePath();
+              for (QStringList::Iterator exe = exePath.begin(); exe != exePath.end(); ++exe) stream2 << "ExePath: " + *exe << "\n";
+              
+              QStringList mimeFile = item->getMimeFile();
+              for (QStringList::Iterator mime = mimeFile.begin(); mime != mimeFile.end(); ++mime) stream2 << "MimeFile: " + *mime << "\n";
+           }
+        }
         file2.close();
-	
     }
-    
-    
-
 }
 
 
-void PBM::RemoveFiles( int RemNum )
+void PBM::RemoveFiles(PBI *pbi)
 {
-    QString ProgDirName;
-    
-        QString tmp;
-        tmp = ProgName[RemNum];
-        tmp.replace(" ", "");
-        ProgDirName = tmp;
-        tmp = ProgVer[RemNum];
-        tmp.replace(" ", "");
-        ProgDirName = ProgDirName + tmp;
-    
+    QString ProgDirName = pbi->getName() + pbi->getVersion();
+    qDebug("ProgDir: " + ProgDirName);
     QString Binary;
-        
-    int i = 0;
     
     // Remove the Mime Fles
-    while ( ! MimeFile[RemNum][i].isEmpty() )
+    QStringList mimeFile = pbi->getMimeFile();
+    for (QStringList::Iterator mime = mimeFile.begin(); mime != mimeFile.end(); ++mime)
     {
 	// Remove the hidden file
 	RemoveFile = new QProcess( this );
 	RemoveFile->addArgument( "rm" );
-	RemoveFile->addArgument( "/usr/local/share/applnk/.hidden/" + MimeFile[RemNum][i] + ".desktop" ); 
-	 
-	if ( !RemoveFile->start() ) {
-	      
-	}
-	
+	RemoveFile->addArgument( "/usr/local/share/applnk/.hidden/" + *mime + ".desktop" );
+        RemoveFile->start();
+
 	// Remove the application file
 	RemoveFile = new QProcess( this );
 	RemoveFile->addArgument( "rm" );
-	RemoveFile->addArgument( "/usr/local/share/mimelnk/application/" + MimeFile[RemNum][i] + ".desktop" ); 
-	 
-	if ( !RemoveFile->start() ) {
-	      
-	}
-	
-	i++;
+	RemoveFile->addArgument( "/usr/local/share/mimelnk/application/" + *mime + ".desktop" );
+        RemoveFile->start();
     }
     
-    
-    i = 0;
     // Remove the scripts
-    while ( ! ProgExe[RemNum][i].isEmpty() )
+    QStringList exePath = pbi->getExePath();
+    for (QStringList::Iterator exe = exePath.begin(); exe != exePath.end(); ++exe)
     {
-	if ( ProgExe[RemNum][i].findRev("/" ) != -1 )
-	{
-	    Binary = ProgExe[RemNum][i].remove(0, ProgExe[RemNum][i].findRev("/") );
-	} else {
-	    Binary = ProgExe[RemNum][i];  
-	}
+	if ((*exe).findRev("/") != -1) Binary = (*exe).remove(0, (*exe).findRev("/"));
+	else Binary = *exe;
 	
 	// Close without delete if binary is empty!!!!!!!!!!!!!!!!!!!! Change this to display error
-	if (Binary.isEmpty() or ProgName[RemNum].isEmpty() or ProgDirName.isEmpty())
+	if (Binary.isEmpty() || pbi->getName().isEmpty() || ProgDirName.isEmpty())
 	{
 	    QMessageBox::information( this, tr("Error!"), tr("Error in return of Binary / ProgName / ProgDirName!\n Please contact PC-BSD developers!") );
 	    close();  
@@ -349,76 +297,37 @@
 	// Remove the script
 	RemoveFile = new QProcess( this );
 	RemoveFile->addArgument( "rm" );
-	RemoveFile->addArgument( "/Programs/.sbin/" + Binary ); 
-		   
-	if ( !RemoveFile->start() ) {
-	      
-	}
+	RemoveFile->addArgument( "/Programs/.sbin/" + Binary );
+        RemoveFile->start();
 	
-	// Remove the link
-	//RemoveFile = new QProcess( this );
-	//RemoveFile->addArgument( "rm" );
-	//RemoveFile->addArgument( "/usr/local/bin/" + Binary ); 
-		   
-	//if ( !RemoveFile->start() ) {
-	      
-	//}
-	
 	// Remove the Desktop item
 	RemoveFile = new QProcess( this );
 	RemoveFile->addArgument( "/Programs/.bin/RemoveDesktopLink.sh" );
 	RemoveFile->addArgument( Binary + ".desktop" ); 
-	RemoveFile->addArgument( ProgName[RemNum] ); 	   
-	if ( !RemoveFile->start() ) {
-	      
-	}
-	
-         i++;
+	RemoveFile->addArgument( pbi->getName() );
+        RemoveFile->start();
      }
-    
-        	// Remove the start menu item
-	//RemoveFile = new QProcess( this );
-	//RemoveFile->addArgument( "rm" );
-	//RemoveFile->addArgument( "-r" );
-	//RemoveFile->addArgument( "/usr/home/" + RealUserName + "/.kde/share/applnk/My Programs/" + ProgName[RemNum] ); 
-		   
-	//if ( !RemoveFile->start() ) {
-	//      
-	//}
-    
-    
-    
-    	// Remove the start menu item
-	RemoveFile = new QProcess( this );
-	RemoveFile->addArgument( "rm" );
-	RemoveFile->addArgument( "-r" );
-	RemoveFile->addArgument( "/usr/local/share/applnk/My Programs/" + ProgName[RemNum] ); 
-	
-	if ( !RemoveFile->start() ) {
-	      
-	}
-	
-	// Remove the start menu item
-	RemoveFile = new QProcess( this );
-	RemoveFile->addArgument( "rm" );
-	RemoveFile->addArgument( "-rf" );
-	RemoveFile->addArgument( "/usr/local/share/applnk/" + ProgName[RemNum] ); 
-
-		   
-	if ( !RemoveFile->start() ) {
-	      
-	}
-	
-	// Remove the program folder
-	RemoveFile = new QProcess( this );
-	RemoveFile->addArgument( "rm" );
-	RemoveFile->addArgument( "-r" );
-	RemoveFile->addArgument( "/Programs/" + ProgDirName ); 
-	
-		   
-	if ( !RemoveFile->start() ) {
-	      
-	}
+     
+     // Remove the start menu item
+     RemoveFile = new QProcess( this );
+     RemoveFile->addArgument( "rm" );
+     RemoveFile->addArgument( "-r" );
+     RemoveFile->addArgument( "/usr/local/share/applnk/My Programs/" + pbi->getName() );
+     RemoveFile->start();
+     
+     // Remove the start menu item
+     RemoveFile = new QProcess( this );
+     RemoveFile->addArgument( "rm" );
+     RemoveFile->addArgument( "-rf" );
+     RemoveFile->addArgument( "/usr/local/share/applnk/" + pbi->getName());
+     RemoveFile->start();
+     
+     // Remove the program folder
+     RemoveFile = new QProcess( this );
+     RemoveFile->addArgument( "rm" );
+     RemoveFile->addArgument( "-r" );
+     RemoveFile->addArgument( "/Programs/" + ProgDirName );
+     RemoveFile->start();
 }
 
 
@@ -435,13 +344,12 @@
 }
 
 
-void PBM::CheckScriptSlot(int item)
+void PBM::CheckScriptSlot(PBI *pbi)
 {
-   QString progDir = ProgName[item] + ProgVer[item];
-   progDir.replace(" ", "");
+   QString progDir = pbi->getName() + pbi->getVersion();
    
    // Check if a custom removal script exists, and run it
-   QFile CheckScript("/Programs/" + progDir + "/PBI.RemoveScript.sh");
+   QFile CheckScript("/Programs/" + progDir + "/pbi->RemoveScript.sh");
    if (CheckScript.exists())
    {
       // Write out the wrapper script
@@ -453,7 +361,7 @@
          stream << "PROGDIR=\"" + progDir + "\"; export PROGDIR\n";
          stream << "USERNAME=\"" + RealUserName + "\"; export USERNAME\n";
          stream << "INSTALLMODE=\"GUI\"; export INSTALLMODE\n";
-         stream << "sh /Programs/" + progDir + "/PBI.RemoveScript.sh ${PROGDIR}\nexit ${?}";
+         stream << "sh /Programs/" + progDir + "/pbi->RemoveScript.sh ${PROGDIR}\nexit ${?}";
          file.close();
       }
       



More information about the Commits mailing list