commandlineinstaller.java
来自「This is a resource based on j2me embedde」· Java 代码 · 共 257 行
JAVA
257 行
/* * * * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License version 2 for more details (a copy is * included at /legal/license.txt). * * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. */package com.sun.midp.scriptutil;import javax.microedition.midlet.MIDlet;import com.sun.midp.installer.*;import com.sun.midp.configurator.Constants;/** * A command-line installer. Allows to install midlet either from * an http(s):// or from a file:// URL. * <p> * The MIDlet uses certain application properties as arguments: </p> * <ol> * <li>arg-0: currently must be "I" == install * (for consistency with GraphicalInstaller)</li> * <li>arg-1: URL of the midlet suite to install * <li>arg-2: a storage ID where to save the suite's jar file */public class CommandLineInstaller extends MIDlet implements InstallListener, Runnable { /** * Create and initialize the MIDlet. */ public CommandLineInstaller() { new Thread(this).start(); } /** * Start. */ public void startApp() { } /** * Pause; there are no resources that need to be released. */ public void pauseApp() { } /** * Destroy cleans up. * * @param unconditional is ignored; this object always * destroys itself when requested. */ public void destroyApp(boolean unconditional) { } /** Prints a message about the midlet usage. */ private void showUsage() { System.out.println("Usage: ./runMidlet internal " + "CommandLineInstaller I <url> [storageId]"); } /** Installs a new MIDlet suite. */ public void run() { Installer installer = null; String installerClassName = null; final String supportedUrlTypes[] = { "http", "HttpInstaller", "https", "HttpInstaller", "file", "FileInstaller" }; // parse the arguments String arg0 = getAppProperty("arg-0"); if (arg0 == null || !"I".equals(arg0)) { showUsage(); notifyDestroyed(); return; } String url = getAppProperty("arg-1"); if (url == null) { showUsage(); notifyDestroyed(); return; } int storageId = Constants.INTERNAL_STORAGE_ID; String strStorageId = getAppProperty("arg-2"); if (strStorageId != null) { try { storageId = Integer.parseInt(strStorageId); } catch (NumberFormatException nfe) { // Intentionally ignored } } // If a scheme is omitted, handle the url // as a file on the local file system. final String scheme = Installer.getUrlScheme(url, "file"); for (int i = 0; i < supportedUrlTypes.length << 1; i++, i++) { if (supportedUrlTypes[i].equals(scheme)) { installerClassName = "com.sun.midp.installer." + supportedUrlTypes[i+1]; break; } } if (installerClassName != null) { try { installer = (Installer) Class.forName(installerClassName).newInstance(); } catch (Throwable t) { // Intentionally ignored: 'installer' is already null } } if (installer == null) { final String errMsg = "'" + scheme + "' URL type is not supported."; System.out.println("ERROR: " + errMsg); notifyDestroyed(); return; } // install the suite int lastInstalledMIDletId; int len = url.length(); boolean jarOnly = (len >= 4 && ".jar".equalsIgnoreCase(url.substring(len - 4, len))); try { if (jarOnly) { lastInstalledMIDletId = installer.installJar(url, null, storageId, false, false, this); } else { lastInstalledMIDletId = installer.installJad(url, storageId, false, false, this); } System.out.println("The suite was succesfully installed, ID: " + lastInstalledMIDletId); } catch (Throwable t) { System.err.println("Error installing the suite: " + t.getMessage()); t.printStackTrace(); } notifyDestroyed(); } // Implementation of the InstallListener interface. // This implementation responds "yes" for all questions // to proceed with the installation silently. /** * Called with the current state of the install so the user can be * asked to override the warning. To get the warning from the state * call {@link InstallState#getLastException()}. If false is returned, * the last exception in the state will be thrown and * {@link Installer#wasStopped()} will return true if called. * * @param state current state of the install. * * @return true if the user wants to continue, false to stop the install */ public boolean warnUser(InstallState state) { return true; } /** * Called with the current state of the install so the user can be * asked to confirm the jar download. * If false is returned, the an I/O exception thrown and * {@link Installer#wasStopped()} will return true if called. * * @param state current state of the install. * * @return true if the user wants to continue, false to stop the install */ public boolean confirmJarDownload(InstallState state) { return true; } /** * Called with the current status of the install. See * {@link Installer} for the status codes. * * @param status current status of the install. * @param state current state of the install. */ public void updateStatus(int status, InstallState state) { } /** * Called with the current state of the install so the user can be * asked to confirm if the RMS data should be kept for new version of * an updated suite. * If false is returned, the an I/O exception thrown and * {@link Installer#wasStopped()} will return true if called. * * @param state current state of the install. * * @return true if the user wants to keep the RMS data for the next suite */ public boolean keepRMS(InstallState state) { return true; } /** * Called with the current state of the install so the user can be * asked to confirm the authentication path. * If false is returned, the an I/O exception thrown and * {@link Installer#wasStopped()} will return true if called. * * @param state current state of the install. * * @return true if the user wants to continue, false to stop the install */ public boolean confirmAuthPath(InstallState state) { return true; } /** * Called with the current state of the install and the URL where the * request is attempted to be redirected so the user can be asked * to confirm if he really wants to install from the new location. * If false is returned, the an I/O exception thrown and * {@link com.sun.midp.installer.Installer#wasStopped()} * will return true if called. * * @param state current state of the install. * @param newLocation new url of the resource to install. * * @return true if the user wants to continue, false to stop the install */ public boolean confirmRedirect(InstallState state, String newLocation) { return true; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?