/** Creates new form addonSearch */ public addonSearch() { initComponents(); ys = new listener(); try { logfileURL = new URL("file:/" + System.getProperty("user.dir") + "/addonsearch.htm"); log = new File(logfileURL.toURI()); log.delete(); log = new File(logfileURL.toURI()); log_out = new BufferedWriter(new FileWriter(log, true)); log_out.write(""); refresh(); } catch (Exception ex) { JOptionPane.showMessageDialog( this, "Cannot create logfile for chat window." + " Try running this program in 'My Documents'.\n" + ex, "addonsearch", JOptionPane.ERROR_MESSAGE); } File file = null; BufferedWriter output; try { file = new File(new URL("file:/" + System.getProperty("user.dir") + "/addonsearch.cfg").toURI()); if (file.exists()) ys_cfg(file); else { output = new BufferedWriter(new FileWriter(file)); jFrame1.setSize(580, 420); jFrame1.setVisible(true); } } catch (Exception ex) { if (!ex.toString().equals("java.io.IOException: Stream closed")) System.out.println(ex); // JOptionPane.showMessageDialog(this, "Impossible to read the YSChat config file!\n"+ex, // "YS_chat", JOptionPane.ERROR_MESSAGE); } makeLocalDB(); messOut.addHyperlinkListener( new HyperlinkListener() { public void hyperlinkUpdate(HyperlinkEvent e) { if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { if (Desktop.isDesktopSupported()) { try { Desktop.getDesktop().browse(e.getURL().toURI()); } catch (Exception ex) { System.out.println(ex.getMessage()); } } } } }); }
/** * Upload files to pre-configured url. * * @param uploadLocation the location we are uploading to. * @param fileName the filename we use for the resulting filename we upload. * @param params the optional parameter names. * @param values the optional parameter values. */ static void uploadLogs(String uploadLocation, String fileName, String[] params, String[] values) { try { File tempDir = LoggingUtilsActivator.getFileAccessService().getTemporaryDirectory(); File newDest = new File(tempDir, fileName); File optionalFile = null; // if we have some description params // save them to file and add it to archive if (params != null) { optionalFile = new File( LoggingUtilsActivator.getFileAccessService().getTemporaryDirectory(), "description.txt"); OutputStream out = new FileOutputStream(optionalFile); for (int i = 0; i < params.length; i++) { out.write((params[i] + " : " + values[i] + "\r\n").getBytes("UTF-8")); } out.flush(); out.close(); } newDest = LogsCollector.collectLogs(newDest, optionalFile); // don't leave any unneeded information if (optionalFile != null) optionalFile.delete(); if (uploadLocation == null) return; if (HttpUtils.postFile(uploadLocation, "logs", newDest) != null) { NotificationService notificationService = LoggingUtilsActivator.getNotificationService(); if (notificationService != null) { ResourceManagementService resources = LoggingUtilsActivator.getResourceService(); String bodyMsgKey = "plugin.loggingutils.ARCHIVE_MESSAGE_OK"; notificationService.fireNotification( LOGFILES_ARCHIVED, resources.getI18NString("plugin.loggingutils.ARCHIVE_BUTTON"), resources.getI18NString(bodyMsgKey, new String[] {uploadLocation}), null); } } } catch (Throwable e) { logger.error("Cannot upload file", e); } }
/** Runs a Solaris installer */ public static boolean runSolarisInstaller(String installPath, File installFile) { /** Build temp. script file */ File script = null; boolean success = false; try { script = SolarisInstaller.createTempShellScript(); String[] args = new String[3]; args[0] = installPath; args[1] = script.getAbsolutePath(); args[2] = installFile.getAbsolutePath(); String execString = getExecuteString(args); success = SolarisInstaller.execute(execString); } catch (IOException ioe) { Config.trace("Got ioe: " + ioe); return false; } finally { if (script != null) script.delete(); } return success; }
/** * Save the document to a file. * * @see #write */ public boolean save(String filename) { try { setFilename(filename); // write to tmp file File tmpfile = File.createTempFile("gwb", null); write(new FileOutputStream(tmpfile)); // copy to dest file and delete tmp file FileUtils.copy(tmpfile, new File(filename)); tmpfile.delete(); // // fireDocumentInit(); return true; } catch (Exception e) { LogUtils.report(e); return false; } }
/** Does install of JRE */ public static void install() { // Hide the JNLP Clients installer window and show own Config.getInstallService().hideStatusWindow(); showInstallerWindow(); // Make sure the destination exists. String path = Config.getInstallService().getInstallPath(); if (Config.isWindowsInstall()) { String defaultLocation = "C:\\Program Files\\Java\\j2re" + Config.getJavaVersion() + "\\"; File defaultDir = new File(defaultLocation); if (!defaultDir.exists()) { defaultDir.mkdirs(); } if (defaultDir.exists() && defaultDir.canWrite()) { path = defaultLocation; // use default if you can } } File installDir = new File(path); if (!installDir.exists()) { installDir.mkdirs(); if (!installDir.exists()) { // The installFailed string is only for debugging. No localization needed installFailed("couldntCreateDirectory", null); return; } } // Show license if neccesary enableStep(STEP_LICENSE); if (!showLicensing()) { // The installFailed string is only for debugging. No localization needed installFailed("Licensing was not accepted", null); } ; // Make sure that the data JAR is downloaded enableStep(STEP_DOWNLOAD); if (!downloadInstallerComponent()) { // The installFailed string is only for debugging. No localization needed installFailed("Unable to download data component", null); } String nativeLibName = Config.getNativeLibName(); File installerFile = null; try { // Load native library into process if found if (nativeLibName != null && !Config.isSolarisInstall()) { System.loadLibrary(nativeLibName); } // Unpack installer enableStep(STEP_UNPACK); String installResource = Config.getInstallerResource(); Config.trace("Installer resource: " + installResource); installerFile = unpackInstaller(installResource); // To clean-up downloaded files Config.trace("Unpacked installer to: " + installerFile); if (installerFile == null) { // The installFailed string is only for debugging. No localization needed installFailed("Could not unpack installer components", null); return; } enableStep(STEP_INSTALL); setStepText(STEP_INSTALL, Config.getWindowStepWait(STEP_INSTALL)); boolean success = false; if (Config.isSolarisInstall()) { success = runSolarisInstaller(path, installerFile); } else { success = runWindowsInstaller(path, installerFile); } if (!success) { // The installFailed string is only for debugging. No localization needed installFailed("Could not run installer", null); return; } } catch (UnsatisfiedLinkError ule) { // The installFailed string is only for debugging. No localization needed installFailed("Unable to load library: " + nativeLibName, null); return; } finally { if (installerFile != null) { installerFile.delete(); } } setStepText(STEP_INSTALL, Config.getWindowStep(STEP_INSTALL)); enableStep(STEP_DONE); String execPath = path + Config.getJavaPath(); Config.trace(execPath); /** Remove installer JAR from cache */ removeInstallerComponent(); // If we're running anything after 1.0.1 or not on Windows, just call // finishedInstall. Otherwise, deny ExitVM permission so that we can // return here and do a reboot. We have to do this because we need to // call ExtensionInstallerService.finishedInstall(), which registers // that our extension (the JRE) is installed. Unfortunately pre-1.2 it // also does not understand that we are requesting a reboot, and calls // System.exit(). So for pre 1.2 we want to deny the permission to // exit the VM so we can return here and perform a reboot. boolean ispre12 = false; String version = Config.getJavaWSVersion(); // get first tuple String v = version.substring(version.indexOf('-') + 1); int i2 = v.indexOf('.'); int v1 = Integer.parseInt(v.substring(0, i2)); // get second tuple v = v.substring(i2 + 1); i2 = v.indexOf('.'); if (i2 == -1) i2 = v.indexOf('-'); if (i2 == -1) i2 = v.indexOf('['); if (i2 == -1) i2 = v.length(); int v2 = Integer.parseInt(v.substring(0, i2)); // are we pre 1.2? if (v1 < 1 || (v1 == 1 && v2 < 2)) ispre12 = true; if (Config.isWindowsInstall() && ispre12 && Config.isHopper()) { // deny ExitVM permission then call finishedInstall ProtectionDomain pd = (new Object()).getClass().getProtectionDomain(); CodeSource cs = pd.getCodeSource(); AllPermissionExceptExitVM perm = new AllPermissionExceptExitVM(); PermissionCollection newpc = perm.newPermissionCollection(); newpc.add(perm); // run finishedInstall within the new context which excluded // just the ExitVM permission ProtectionDomain newpd = new ProtectionDomain(cs, newpc); AccessControlContext newacc = new AccessControlContext(new ProtectionDomain[] {newpd}); final String fExecPath = execPath; try { AccessController.doPrivileged( new PrivilegedExceptionAction() { public Object run() throws SecurityException { finishedInstall(fExecPath); return null; } }, newacc); } catch (PrivilegedActionException pae) { // swallow the exception because we want ExitVM to fail silent } catch (SecurityException se) { // swallow the exception because we want ExitVM to fail silent } } else { // just call finished Install finishedInstall(execPath); } if (Config.isWindowsInstall() && WindowsInstaller.IsRebootNecessary()) { // reboot if (!WindowsInstaller.askUserForReboot()) System.exit(0); } else { System.exit(0); } }
/** Runs a Windows installer */ public static boolean runWindowsInstaller(String installPath, File installFile) { boolean deleteHopperKey = false; boolean deleteMerlinKey = false; // If Hopper, and JavaWS can update, ask the user if they want // to update. if (Config.isHopper() && !WinRegistry.doesSubKeyExist(WinRegistry.HKEY_LOCAL_MACHINE, JAVAWS_HOPPER_KEY)) { int res = JOptionPane.showConfirmDialog( _installerFrame, Config.getJavaWSConfirmMessage(), Config.getJavaWSConfirmTitle(), JOptionPane.YES_NO_OPTION); if (res == JOptionPane.NO_OPTION) { // create the registry key so that JavaWS will not install WinRegistry.setStringValue(WinRegistry.HKEY_LOCAL_MACHINE, JAVAWS_HOPPER_KEY, "Home", ""); // flag to delete the key later deleteHopperKey = true; } } // If Merlin, never update JavaWS. 1.0.1_02 bundled with Merlin does // not have the ability to update while JavaWS is running. So just // prevent the update by spoofing the registry key. if (Config.isMerlin()) { WinRegistry.setStringValue(WinRegistry.HKEY_LOCAL_MACHINE, JAVAWS_MERLIN_KEY, "Home", ""); deleteMerlinKey = true; } /** Build temp. script file */ boolean success = false; File iss = null; try { String[] args = new String[2]; args[0] = installFile.getAbsolutePath(); if (Config.getJavaVersion().startsWith("1.4.2")) { args[1] = "/s /v\"/qn WEBSTARTICON=1 INSTALLDIR=\\\"" + installPath + "\\\"\""; } else { iss = WindowsInstaller.createTempISSScript(installPath, Config.getJavaVersion()); args[1] = iss.getAbsolutePath(); } String execString = getExecuteString(args); success = WindowsInstaller.execute(execString); } catch (IOException ioe) { return false; } finally { if (iss != null) iss.delete(); } // delete any spoofed keys we created earlier if (deleteHopperKey) { WinRegistry.deleteKey(WinRegistry.HKEY_LOCAL_MACHINE, JAVAWS_HOPPER_KEY); } if (deleteMerlinKey) { WinRegistry.deleteKey(WinRegistry.HKEY_LOCAL_MACHINE, JAVAWS_MERLIN_KEY); } // 4662215 cannot reboot here because the config hasn't been written // by JavaWS yet. Reboot later, after installSucceeded has been // called. // WindowsInstaller.rebootIfNecessary(); return success; }