package org.tizen.installmanager.ui;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Enumeration;
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;
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();
}
}
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;
}
-
}
/**
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());
}
}
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;
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;
+ }
+ }
}