diff options
Diffstat (limited to 'javainstaller2/src/JavaSetup/org/openoffice/setup/Util/InstallChangeCtrl.java')
-rwxr-xr-x | javainstaller2/src/JavaSetup/org/openoffice/setup/Util/InstallChangeCtrl.java | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/javainstaller2/src/JavaSetup/org/openoffice/setup/Util/InstallChangeCtrl.java b/javainstaller2/src/JavaSetup/org/openoffice/setup/Util/InstallChangeCtrl.java new file mode 100755 index 000000000000..2bd57123a6aa --- /dev/null +++ b/javainstaller2/src/JavaSetup/org/openoffice/setup/Util/InstallChangeCtrl.java @@ -0,0 +1,140 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: InstallChangeCtrl.java,v $ + * $Revision: 1.5 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +package org.openoffice.setup.Util; + +import org.openoffice.setup.InstallData; +import org.openoffice.setup.Installer.Installer; +import org.openoffice.setup.Installer.InstallerFactory; +import org.openoffice.setup.Panel.ChooseDirectory; +import org.openoffice.setup.ResourceManager; +import org.openoffice.setup.SetupData.PackageDescription; +import org.openoffice.setup.SetupData.SetupDataProvider; +import java.util.Enumeration; + + +public class InstallChangeCtrl { + + private InstallChangeCtrl() { + } + + static private void setUpdatePackage(PackageDescription packageData, InstallData installData) { + if (( packageData.isUpdatePackage() == true )) { + installData.setUpdatePackage(packageData); + } else { + for (Enumeration e = packageData.children(); e.hasMoreElements(); ) { + PackageDescription child = (PackageDescription) e.nextElement(); + setUpdatePackage(child, installData); + } + } + } + + static private void setChangeInstallDir(InstallData installData, Installer installer) { + // setting the new install dir after analyzing the installation directory + // of the installed update package. + if ( installData.isRootInstallation() ) { + String changeInstallDir = "/"; + installData.setInstallDir(changeInstallDir); + } else { + String changeInstallDir = installer.getChangeInstallDir(installData.getUpdatePackage()); + installData.setInstallDir(changeInstallDir); + } + } + + // static public void checkInstallChange(InstallData data, ChooseDirectory panel) { + static public void checkInstallChange(InstallData data) { + + Installer installer = InstallerFactory.getInstance(); + PackageDescription packageData = SetupDataProvider.getPackageDescription(); + + if ( data.getUpdatePackage() == null ) { + setUpdatePackage(packageData, data); + } + + if ( data.getUpdatePackage() != null ) { + + // resetting values, if database was changed during user installation + data.setOlderVersionExists(false); + data.setNewerVersionExists(false); + data.setSameVersionExists(false); + + boolean packageIsInstalled = installer.isPackageInstalled(data.getUpdatePackage(), data); + if ( packageIsInstalled ) { + + // Checking version of installed package: + // If installed package is older: Force update mode, no selection of packages + // If installed package is equal: Force maintenance mode, only selection of packages + // If installed package is newer: Abort installation with message + + // Setting specific values for the different update scenarios + if ( installer.isInstalledPackageOlder(data.getUpdatePackage(), data) ) { + data.setOlderVersionExists(true); + // All installed packages will be updated -> determining which packages are installed + System.err.println("An older product is installed"); + // But if this is a kind of Major Upgrade with different Minor and therefore different package names, + // it is necessary to remove the old product. + if ( data.getProductMinor() > data.getInstalledProductMinor() ) + { + data.setMajorUpgrade(true); + System.err.println("Major Upgrade"); + } + } else if ( installer.isInstallSetPackageOlder(data.getUpdatePackage(), data) ) { + data.setNewerVersionExists(true); + System.err.println("A newer product is installed"); + } else { + data.setSameVersionExists(true); + System.err.println("Same product is installed"); + } + + // If installed package is older or equal, the installdir has to be fixed + // if this is a root installation + if ( data.isRootInstallation() ) { + setChangeInstallDir(data, installer); + data.setIsChangeInstallation(true); + } + + // Exit installation, if update is not wanted and this is a root installation. + // In installations without root privileges, the user can choose another installation + // directory (ChooseDirectoryCtrl.java). + if ( data.isRootInstallation() && data.dontUpdate() && data.olderVersionExists() ) { + System.err.println("Error: An older version is already installed in directory " + data.getInstallDir() + "!"); + String message1 = ResourceManager.getString("String_Older_Version_Installed_Found") + + "\n" + data.getInstallDir() + "\n"; + String message2 = ResourceManager.getString("String_Older_Version_Installed_Remove"); + String message = message1 + "\n" + message2; + String title = ResourceManager.getString("String_Error"); + Informer.showErrorMessage(message, title); + System.exit(1); + } + } + } + } + +} |