private static void processLaunchExternal() {

        String externalFile = Boot.argProps.getProperty(LAUNCH_EXT_ARG);
        if (externalFile == null) {
            logger.info("No External File to Launch");
            return;
        }

        logger.info("Launching external file:" + externalFile);
        launch_external = true;
        try {
            File extFile = new File(externalFile);
            String type = extFile.getName();
            if (type.lastIndexOf('.') > -1) {
                type = type.substring(type.lastIndexOf('.') + 1);
                type = type.trim();
            }

            if (type == null) {
                throw new RuntimeException("Unknown launch type for file: " + externalFile);
            }

            logger.info("Getting launcher for type:" + type);

            //read in file data
            FileInputStream in = new FileInputStream(extFile);
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            byte[] buf = new byte[1024];
            int cbytes = in.read(buf);
            while (cbytes != -1) {
                out.write(buf, 0, cbytes);
                cbytes = in.read(buf);
            }
            in.close();

            byte[] data = out.toByteArray();
            out.close();

            AppDesc appDesc = AppLauncher.getAppDesc(type, data);
            AppLauncher appLauncher = AppLauncher.getLauncher(type.toLowerCase());

            if (appLauncher != null && appDesc != null) {
                appLauncher.launchInternal(appDesc, false);
            } else {
                throw new Exception("Error Launching External Application: The Launcher type is unknown");
            }
        } catch (Throwable exp) {
            logger.log(Level.SEVERE, exp.getMessage(), exp);
            String expMsg = exp.getMessage();
            if (expMsg == null) expMsg = "unknown";

            String msg = MessageFormat.format(Resources.bundle.getString("launch.external.error"), expMsg);
            //Exit the VM because this launchExternal had a problem
            Boot.shutdownError(msg, exp);
        }
    }