1 15 16 30 package ixenon.free.uninstall; 31 32 import java.util.*; 33 import java.io.*; 34 import ixenon.free.install.*; 35 36 42 public class DefaultUninstaller 43 implements Uninstallable 44 { 45 protected String targetFile; 46 protected File binDir; 47 protected Vector fileList; 48 protected Vector dirList; 49 50 56 public DefaultUninstaller( File binDir, String targetFile ) 57 { 58 String osname = System.getProperty("os.name"); 59 60 if ( osname.startsWith("Windows 95") || 61 osname.startsWith("Windows 98") || 62 osname.startsWith("Windows NT") || 63 osname.startsWith("Windows 2000") || 64 osname.startsWith("OS/2") ) { 65 targetFile = targetFile + ".bat"; 66 } 67 68 this.binDir = binDir; 69 this.targetFile = targetFile; 70 fileList = new Vector(); 71 dirList = new Vector(); 72 } 73 74 75 public String getTargetFilename() 76 { 77 return targetFile; 78 } 79 80 83 public void addFile( String filename ) 84 { 85 fileList.addElement( new File(filename).getAbsolutePath() ); 86 } 87 88 91 public void addFile( File file ) 92 { 93 if (file.isDirectory() ) 94 dirList.addElement( file.getAbsolutePath() ); 95 else 96 fileList.addElement( file.getAbsolutePath() ); 97 } 98 99 102 public void generateScript() 103 { 104 FreeInstallerApplication theApp = 105 FreeInstallerApplication.getInstance(); 106 107 String osname = System.getProperty("os.name"); 108 String fileSep = System.getProperty("file.separator"); 109 String pathSep = System.getProperty("path.separator"); 110 111 PrintWriter pwriter=null; 112 FileWriter fwriter=null; 113 114 theApp.printInfo( "Generating the uninstaller script:`"+targetFile+"'" ); 115 116 try { 117 fwriter = new FileWriter( targetFile ); 118 pwriter = new PrintWriter( fwriter ); 119 String remark; 120 121 if ( osname.startsWith("Windows 95") || 122 osname.startsWith("Windows 98") || 123 osname.startsWith("Windows NT") || 124 osname.startsWith("Windows 2000") || 125 osname.startsWith("OS/2") ) { 126 remark="REM"; 127 } 128 else { 129 remark="#"; 130 pwriter.println("#!/bin/sh"); 131 } 132 pwriter.println(remark+" Uninstaller batch for software package: "+ 133 theApp.getProductName()+" ("+theApp.getCompanyName()+")" ); 134 pwriter.println(remark+" *WARNING* : This batch file will completely remove the software"); 135 pwriter.println(remark+" PERMANENTLY. So make doubly sure that you rally want to do this."); 136 137 pwriter.println(); 141 pwriter.println(remark+" Files"); 142 Enumeration etor = fileList.elements(); 143 while ( etor.hasMoreElements() ) { 144 String filename = (String )etor.nextElement(); 145 String preserveFilename = filename+InstallUtilities.PRESERVE_SUFFIX; 146 if ( osname.startsWith("Windows 95") || 147 osname.startsWith("Windows 98") || 148 osname.startsWith("Windows NT") || 149 osname.startsWith("Windows 2000") || 150 osname.startsWith("OS/2") ) { 151 pwriter.println( "ATTRIB -s -h -r \""+filename+"\"" ); 152 pwriter.println( "DEL \""+filename+"\"" ); 153 pwriter.println( "IF EXIST \""+preserveFilename+"\" "+ 154 "REN \""+preserveFilename+"\" \""+filename+"\" "); 155 } 156 else { 157 pwriter.println( "/bin/rm -f \""+filename+"\"" ); 158 pwriter.println( "if [ -f \""+preserveFilename+"\" ]; then" ); 159 pwriter.println( " /bin/mv -f \""+preserveFilename+"\" \""+filename+"\" ; fi" ); 160 } 161 pwriter.flush(); 162 } 163 164 pwriter.println(); 168 pwriter.println(remark+" COMMENTED THIS OUT BECAUSE IT IS TOO SIMPLE MINDED "); 170 pwriter.println(remark+" AND VERY DANGEROUS TO ALLOW!!! *PP*"); 171 pwriter.println(remark+" Directories"); 172 etor = dirList.elements(); 173 while ( etor.hasMoreElements() ) { 174 String filename = (String )etor.nextElement(); 175 if ( osname.startsWith("Windows 95") || 176 osname.startsWith("Windows 98") || 177 osname.startsWith("Windows NT") || 178 osname.startsWith("Windows 2000") || 179 osname.startsWith("OS/2") ) { 180 pwriter.println( remark+" ATTRIB -s -h -r \""+filename+"\"" ); 181 pwriter.println( remark+" DELTREE /Y \""+filename+"\"" ); 182 } 183 else { 184 pwriter.println( remark+" /bin/rm -r \""+filename+"\"" ); 185 } 186 pwriter.flush(); 187 } 188 pwriter.println(remark+" THE END"); 189 } 190 catch (IOException ioe){ 191 theApp.printError( "I/O: "+ioe.getMessage() ); 192 } 193 finally { 194 if (fwriter != null) try { fwriter.close(); } catch (IOException e) { } 195 if (pwriter != null) pwriter.close(); 196 197 InstallUtilities.setFilePermissions( 199 targetFile, InstallConstants.INST_EXE_PERMS ); 200 201 File bindir; 204 File destTargetFile = 205 InstallUtilities.createNormalizedFile( binDir, targetFile ); 206 207 theApp.printInfo( "Generating the final uninstaller script:`"+ 208 destTargetFile.getPath()+"'" ); 209 InstallUtilities.copyFile( new File(targetFile), destTargetFile ); 210 211 InstallUtilities.setFilePermissions( 212 destTargetFile, InstallConstants.INST_EXE_PERMS ); 213 } 214 } 215 216 } 217 218 | Popular Tags |