[Title] update install-manager from package-server.
authorshihyun <shihyun@shihyun-Samsung-Desktop-System.(none)>
Tue, 11 Jun 2013 14:12:41 +0000 (23:12 +0900)
committershihyun <shihyun@shihyun-Samsung-Desktop-System.(none)>
Tue, 11 Jun 2013 14:12:41 +0000 (23:12 +0900)
InstallManager_java/src/org/tizen/installmanager/core/Config.java
InstallManager_java/src/org/tizen/installmanager/ui/InstallManagerWindow.java
InstallManager_java/src/org/tizen/installmanager/ui/page/ViewController.java

index e4feb9d..9d0bf64 100644 (file)
@@ -233,10 +233,12 @@ public class Config {
         * @return filename of install manager executable
         */
        private static String getExecuteFileNameOfInstallManager() {
-               if (Platform.isLinux() || Platform.isMacOS() ) {
-                       return "InstallManager";                                
+               if (Platform.isLinux()) {
+                       return "inst-manager.bin";                              
                } else if ( Platform.isWindows() ) {
-                       return "InstManager.exe";
+                       return "inst-manager.exe";
+               } else if (Platform.isMacOS()) {
+                       return "inst-manager.app";
                } else {
                        throw new IMFatalException(ErrorCode.UNSUPPORTED_PLATFORM);
                }
index 8808fd5..f43d581 100644 (file)
@@ -28,6 +28,7 @@
 
 package org.tizen.installmanager.ui;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Enumeration;
@@ -63,7 +64,6 @@ import org.tizen.installmanager.core.IMExitException;
 import org.tizen.installmanager.core.IMFatalException;
 import org.tizen.installmanager.core.InstallManager;
 import org.tizen.installmanager.core.Options;
-import org.tizen.installmanager.core.UpdateInstallManager;
 import org.tizen.installmanager.lib.Documents;
 import org.tizen.installmanager.lib.ErrorController;
 import org.tizen.installmanager.lib.IMError;
@@ -168,34 +168,36 @@ public class InstallManagerWindow extends ApplicationWindow {
                
                final Shell shell = progressbar.getParent();
                shell.getDisplay().asyncExec(new Runnable(){
-                       public void run() {
+                       public void run() {                             
+                               //initialize installmanager
+                               progressbar.updateName("Connecting to package server.\nIt may take a minute...");
+                               
+                               shell.getDisplay().asyncExec(new Runnable() {
+                                       public void run() {
+                                               initInstallManager();
+                                       }
+                                       
+                               });
+                               
                                //checking installmanager update.
                                if (Options.doUpdateInstallManager) {
                                        progressbar.updateName("Checking InstallManager update.\nIt may take a minute...");
                                        
                                        shell.getDisplay().asyncExec(new Runnable() {
                                                public void run() {
-                                                       if (updateInstallManager(shell)) {
-                                                               Log.log("InstallManager is updatable.");
-                                                               System.out.println("## Success to update the InstallManager, and restart now.");
-                                                               ErrorController.isInstallManagerUpdatable = true;
-                                                               return;
+                                                       if (controller.canInstallManagerUpdate()) {
+                                                               if (updateInstallManager(shell)) {
+                                                                       Log.log("InstallManager is updatable.");
+                                                                       System.out.println("## Success to update the InstallManager, and restart now.");
+                                                                       ErrorController.isInstallManagerUpdatable = true;
+                                                                       return;
+                                                               }
                                                        }
                                                }
                                        });
                                        
                                }
                                
-                               //initialize installmanager
-                               progressbar.updateName("Connecting to package server.\nIt may take a minute...");
-                               
-                               shell.getDisplay().asyncExec(new Runnable() {
-                                       public void run() {
-                                               initInstallManager();
-                                       }
-                                       
-                               });
-                               
                                //init end
                                progressbar.finish();
                        }
@@ -213,22 +215,13 @@ public class InstallManagerWindow extends ApplicationWindow {
        }
        
        private boolean updateInstallManager(Shell shell) {
-               UpdateInstallManager upInstaller = new UpdateInstallManager();
-               if (Registry.isInstalled()) {
-                       if (upInstaller.canUpdate()) {
-                               int ret = MessageBoxDlg.showDlg(shell, "InstallManager", "Update?", DialogType.NOTIFY, false);
-                               if (ret == SWT.OK) { 
-                                       return upInstaller.update();
-                               } else {
-                                       return false;
-                               }
-                       } else {
-                               return false;
-                       }
+               String msg = "Do you want to update the install-manager?";
+               int ret = MessageBoxDlg.showDlg(shell, "InstallManager", msg, DialogType.WARNING, false);
+               if (ret == SWT.YES) { 
+                       return controller.updateInstallManager();
                } else {
-                       return upInstaller.update();
+                       return false;
                }
-                               
        }
        
        /**
@@ -934,7 +927,14 @@ public class InstallManagerWindow extends ApplicationWindow {
                        if (Platform.isMacOS()) {
                                System.exit(ErrorController.getExitCode());
                        } else {
-                               if (ErrorController.getExitCode() != Config.EXITCODE_NORMAL) {
+                               if (ErrorController.getExitCode() == Config.EXITCODE_HAS_SELF_UPDATE) {
+                                       String binary = PathUtil.get(Registry.getInstalledPath(), Config.INSTALL_MANAGER_DIRECTORY, Config.EXECUTE_FILE_NAME_OF_INSTALL_MANAGER);
+                                       try {
+                                               Runtime.getRuntime().exec(binary);
+                                       } catch (IOException e) {
+                                               Log.ExceptionLog(e);
+                                       }
+                               } else if (ErrorController.getExitCode() != Config.EXITCODE_NORMAL) {
                                        System.exit(ErrorController.getExitCode());
                                }
                        }
index 3f9553f..1c99ad9 100644 (file)
@@ -41,6 +41,7 @@ import org.tizen.installmanager.core.InstallManager;
 import org.tizen.installmanager.core.InstallManagerConstants;
 import org.tizen.installmanager.core.Options;
 import org.tizen.installmanager.core.SDKExtensionInfo;
+import org.tizen.installmanager.core.UpdateInstallManager;
 import org.tizen.installmanager.core.Config.ServerType;
 import org.tizen.installmanager.lib.ErrorController;
 import org.tizen.installmanager.lib.IIMProgressMonitor;
@@ -721,4 +722,29 @@ public class ViewController {
                
                return causePackages;
        }
+       
+       public boolean canInstallManagerUpdate() {
+               if (Registry.isInstalled()) {
+                       Package pkg = packageManager.getPackageByName(InstallManagerConstants.INSTALLMANAGER_PACKAGE_NAME);
+                       return packageManager.isUpdatable(pkg);
+               } else {
+                       return false;
+               }
+       }
+       
+       public boolean updateInstallManager() {
+               Package pkg = packageManager.getPackageByName(InstallManagerConstants.INSTALLMANAGER_PACKAGE_NAME);
+               PackageSet iPkg = new PackageSet();
+               iPkg.add(pkg);
+               
+               try {
+                       return installManager.install(iPkg, Registry.getInstalledPath(), null);
+               } catch (IMExitException e) {
+                       Log.ExceptionLog(e);
+                       return false;
+               } catch (IMNetworkException e) {
+                       Log.ExceptionLog(e);
+                       return false;
+               }
+       }
 }