001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031 package org.openoffice.setup.Util;
032
033 import org.openoffice.setup.InstallData;
034 import org.openoffice.setup.Installer.Installer;
035 import org.openoffice.setup.Installer.InstallerFactory;
036 import org.openoffice.setup.Panel.ChooseDirectory;
037 import org.openoffice.setup.ResourceManager;
038 import org.openoffice.setup.SetupData.PackageDescription;
039 import org.openoffice.setup.SetupData.SetupDataProvider;
040 import java.util.Enumeration;
041
042
043 public class InstallChangeCtrl {
044
045 private InstallChangeCtrl() {
046 }
047
048 static private void setUpdatePackage(PackageDescription packageData, InstallData installData) {
049 if (( packageData.isUpdatePackage() == true )) {
050 installData.setUpdatePackage(packageData);
051 } else {
052 for (Enumeration e = packageData.children(); e.hasMoreElements(); ) {
053 PackageDescription child = (PackageDescription) e.nextElement();
054 setUpdatePackage(child, installData);
055 }
056 }
057 }
058
059 static private void setChangeInstallDir(InstallData installData, Installer installer) {
060
061
062 if ( installData.isRootInstallation() ) {
063 String changeInstallDir = "/";
064 installData.setInstallDir(changeInstallDir);
065 } else {
066 String changeInstallDir = installer.getChangeInstallDir(installData.getUpdatePackage());
067 installData.setInstallDir(changeInstallDir);
068 }
069 }
070
071
072 static public void checkInstallChange(InstallData data) {
073
074 Installer installer = InstallerFactory.getInstance();
075 PackageDescription packageData = SetupDataProvider.getPackageDescription();
076
077 if ( data.getUpdatePackage() == null ) {
078 setUpdatePackage(packageData, data);
079 }
080
081 if ( data.getUpdatePackage() != null ) {
082
083
084 data.setOlderVersionExists(false);
085 data.setNewerVersionExists(false);
086 data.setSameVersionExists(false);
087
088 boolean packageIsInstalled = installer.isPackageInstalled(data.getUpdatePackage(), data);
089 if ( packageIsInstalled ) {
090
091
092
093
094
095
096
097 if ( installer.isInstalledPackageOlder(data.getUpdatePackage(), data) ) {
098 data.setOlderVersionExists(true);
099
100 System.err.println("An older product is installed");
101 } else if ( installer.isInstallSetPackageOlder(data.getUpdatePackage(), data) ) {
102 data.setNewerVersionExists(true);
103 System.err.println("A newer product is installed");
104 } else {
105 data.setSameVersionExists(true);
106 System.err.println("Same product is installed");
107 }
108
109
110
111 if ( data.isRootInstallation() ) {
112 setChangeInstallDir(data, installer);
113 data.setIsChangeInstallation(true);
114 }
115
116
117
118
119 if ( data.isRootInstallation() && data.dontUpdate() && data.olderVersionExists() ) {
120 System.err.println("Error: An older version is already installed in directory " + data.getInstallDir() + "!");
121 String message1 = ResourceManager.getString("String_Older_Version_Installed_Found")
122 + "\n" + data.getInstallDir() + "\n";
123 String message2 = ResourceManager.getString("String_Older_Version_Installed_Remove");
124 String message = message1 + "\n" + message2;
125 String title = ResourceManager.getString("String_Error");
126 Informer.showErrorMessage(message, title);
127 System.exit(1);
128 }
129 }
130 }
131 }
132
133 }