diff options
Diffstat (limited to 'javainstaller2/src/JavaSetup/org/openoffice/setup/Util/InfoDir.java')
-rwxr-xr-x | javainstaller2/src/JavaSetup/org/openoffice/setup/Util/InfoDir.java | 319 |
1 files changed, 319 insertions, 0 deletions
diff --git a/javainstaller2/src/JavaSetup/org/openoffice/setup/Util/InfoDir.java b/javainstaller2/src/JavaSetup/org/openoffice/setup/Util/InfoDir.java new file mode 100755 index 000000000000..97b3073c3c32 --- /dev/null +++ b/javainstaller2/src/JavaSetup/org/openoffice/setup/Util/InfoDir.java @@ -0,0 +1,319 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * 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.ResourceManager; +import java.io.File; +import java.util.Vector; + +public class InfoDir { + + private InfoDir() { + } + + static private String copySourceFile(String fileName) { + InstallData data = InstallData.getInstance(); + File jarFile = data.getJarFilePath(); + String destFile = null; + + if ( jarFile != null ) { + String sourceDir = jarFile.getParent(); + File sourceFileFile = new File(sourceDir, fileName); + String sourceFile = sourceFileFile.getPath(); + + // String jarFileName = jarFile.getName(); + File destDir = new File(data.getInstallDefaultDir(), data.getProductDir()); + File destFileFile = new File(destDir, fileName); + destFile = destFileFile.getPath(); + + boolean success = SystemManager.copy(sourceFile, destFile); + } + + return destFile; + } + + static private void copyInstallDirectoryWithExtension(File destBaseDir, String subDirName, String fileExtension) { + InstallData data = InstallData.getInstance(); + File sourceDir = data.getInfoRoot(subDirName); + if ( sourceDir != null ) { + File destDir = new File(destBaseDir, subDirName); + destDir.mkdir(); + SystemManager.copyAllFiles(sourceDir, destDir, fileExtension); + } + } + + static private void copyInstallDirectoryWithExtension(File destBaseDir, String subDirName, String fileExtension, String unixRights) { + InstallData data = InstallData.getInstance(); + File sourceDir = data.getInfoRoot(subDirName); + if ( sourceDir != null ) { + File destDir = new File(destBaseDir, subDirName); + destDir.mkdir(); + SystemManager.copyAllFiles(sourceDir, destDir, fileExtension); + SystemManager.setUnixPrivilegesDirectory(destDir, fileExtension, unixRights); + } + } + + static private void copyInstallDirectoryDoubleSubdir(File destBaseDir, String dir1, String dir2) { + InstallData data = InstallData.getInstance(); + File sourceDir1 = data.getInfoRoot(dir1); + File sourceDir = new File(sourceDir1, dir2); + + destBaseDir.mkdir(); + File destDir1 = new File(destBaseDir, dir1); + destDir1.mkdir(); + File destDir = new File(destDir1, dir2); + destDir.mkdir(); + + SystemManager.copyAllFiles(sourceDir, destDir); + } + + static private File createUninstallDir() { + InstallData data = InstallData.getInstance(); + File baseDir = new File(data.getInstallDefaultDir(), data.getProductDir()); + baseDir = new File(baseDir, data.getUninstallDirName()); + baseDir.mkdir(); + return baseDir; + } + + static private void copyGetUidSoFile(File dir) { + InstallData data = InstallData.getInstance(); + String uidFileSource = data.getGetUidPath(); + if ( uidFileSource != null ) { + // Copying the "getuid.so" file into installation + String fileName = "getuid.so"; + File destFile = new File(dir, fileName); + String uidFileDest = destFile.getPath(); + boolean success = SystemManager.copy(uidFileSource, uidFileDest); + data.setGetUidPath(uidFileDest); + } + } + + static private void copyJreFile(File dir) { + InstallData data = InstallData.getInstance(); + String jrefilename = System.getProperty("JRE_FILE"); + + if ( jrefilename != null ) { + // For Solaris, JRE_FILE can already contain the complete path. + // Otherwise it contains only the filename + File jreFile = new File(jrefilename); + + if ( ! jreFile.exists()) { + jreFile = new File(data.getPackagePath(), jrefilename); + } + + if ( jreFile.exists() ) { + String jreFileSource = jreFile.getPath(); + File destDir = new File(dir, "jre"); + destDir.mkdir(); + String onlyFileName = jreFile.getName(); + File destFile = new File(destDir, onlyFileName); + + // In maintenance mode the file already exists + if ( ! destFile.exists() ) { + String jreFileDest = destFile.getPath(); + boolean success = SystemManager.copy(jreFileSource, jreFileDest); + } + } + } + } + + static private void moveAdminFiles(File dir) { + InstallData data = InstallData.getInstance(); + + if ( data.getAdminFileNameReloc() != null ) { + File sourceFile = new File(data.getAdminFileNameReloc()); + String fileName = sourceFile.getName(); + File destFile = new File(dir, fileName); + boolean success = SystemManager.copy(sourceFile.getPath(), destFile.getPath()); + data.setAdminFileNameReloc(destFile.getPath()); + sourceFile.delete(); + } + + if ( data.getAdminFileNameRelocNoDepends() != null ) { + File sourceFile = new File(data.getAdminFileNameRelocNoDepends()); + String fileName = sourceFile.getName(); + File destFile = new File(dir, fileName); + boolean success = SystemManager.copy(sourceFile.getPath(), destFile.getPath()); + data.setAdminFileNameRelocNoDepends(destFile.getPath()); + sourceFile.delete(); + } + + if ( data.getAdminFileNameNoReloc() != null ) { + File sourceFile = new File(data.getAdminFileNameNoReloc()); + String fileName = sourceFile.getName(); + File destFile = new File(dir, fileName); + boolean success = SystemManager.copy(sourceFile.getPath(), destFile.getPath()); + data.setAdminFileNameNoReloc(destFile.getPath()); + sourceFile.delete(); + } + + if ( data.getAdminFileNameNoRelocNoDepends() != null ) { + File sourceFile = new File(data.getAdminFileNameNoRelocNoDepends()); + String fileName = sourceFile.getName(); + File destFile = new File(dir, fileName); + boolean success = SystemManager.copy(sourceFile.getPath(), destFile.getPath()); + data.setAdminFileNameNoRelocNoDepends(destFile.getPath()); + sourceFile.delete(); + } + } + + static private void createInfoFile(File dir) { + Vector fileContent = new Vector(); + String line = null; + InstallData data = InstallData.getInstance(); + + line = "PackagePath=" + data.getPackagePath(); + fileContent.add(line); + line = "InstallationPrivileges=" + data.getInstallationPrivileges(); + fileContent.add(line); + line = "AdminFileReloc=" + data.getAdminFileNameReloc(); + fileContent.add(line); + line = "AdminFileRelocNoDepends=" + data.getAdminFileNameRelocNoDepends(); + fileContent.add(line); + line = "AdminFileNoReloc=" + data.getAdminFileNameNoReloc(); + fileContent.add(line); + line = "AdminFileNoRelocNoDepends=" + data.getAdminFileNameNoRelocNoDepends(); + fileContent.add(line); + line = "InstallationDir=" + data.getInstallDir(); + fileContent.add(line); + line = "DatabasePath=" + data.getDatabasePath(); + fileContent.add(line); + line = "GetUidFile=" + data.getGetUidPath(); + fileContent.add(line); + + String infoFileName = "infoFile"; + File infoFile = new File(dir, infoFileName); + SystemManager.saveCharFileVector(infoFile.getPath(), fileContent); + } + + static private void removeSpecialFiles() { + InstallData data = InstallData.getInstance(); + File jarFile = data.getJarFilePath(); + SystemManager.deleteFile(jarFile); + + String jarFilePath = jarFile.getParent(); + File setupFile = new File(jarFilePath, "setup"); + SystemManager.deleteFile(setupFile); + + if ( ! data.getAdminFileNameReloc().equals("null") ) { + SystemManager.deleteFile(new File(data.getAdminFileNameReloc())); + } + + if ( ! data.getAdminFileNameRelocNoDepends().equals("null") ) { + SystemManager.deleteFile(new File(data.getAdminFileNameRelocNoDepends())); + } + + if ( ! data.getAdminFileNameNoReloc().equals("null") ) { + SystemManager.deleteFile(new File(data.getAdminFileNameNoReloc())); + } + + if ( ! data.getAdminFileNameNoRelocNoDepends().equals("null") ) { + SystemManager.deleteFile(new File(data.getAdminFileNameNoRelocNoDepends())); + } + + if ( ! data.getGetUidPath().equals("null") ) { + SystemManager.deleteFile(new File(data.getGetUidPath())); + } + } + + static private void removeInforootSubdir(String dir1, String dir2) { + InstallData data = InstallData.getInstance(); + File subdir1 = data.getInfoRoot(dir1); + File subdir2 = new File(subdir1, dir2); + if (subdir2 != null) { + if ( subdir2.exists() ) { + SystemManager.removeDirectory(subdir2); + } + } + } + + static private void removeInforootSubdir(String dir) { + InstallData data = InstallData.getInstance(); + File subdir = data.getInfoRoot(dir); + if (subdir != null) { + if ( subdir.exists() ) { + SystemManager.removeDirectory(subdir); + } + } + } + + static private void removeInforoot() { + InstallData data = InstallData.getInstance(); + SystemManager.removeDirectory(data.getInfoRoot()); + } + + static public void prepareUninstallation() { + // additional tasks for uninstallation + // Directory destDir has to exist! + InstallData data = InstallData.getInstance(); + File destDir = new File(data.getInstallDefaultDir(), data.getProductDir()); + boolean directoryExists = true; + + if ( ! destDir.exists() ) { + try { + directoryExists = SystemManager.create_directory(destDir.getPath()); + } + catch (SecurityException ex) { + String message = ResourceManager.getString("String_ChooseDirectory_No_Write_Access") + ": " + destDir.getPath(); + String title = ResourceManager.getString("String_Error"); + Informer.showErrorMessage(message, title); + } + } + + if ( directoryExists ) { + String setupPath = copySourceFile("setup"); + SystemManager.setUnixPrivileges(setupPath, "775"); + File jarFile = data.getJarFilePath(); + copySourceFile(jarFile.getName()); + + File uninstallDir = createUninstallDir(); + copyInstallDirectoryWithExtension(uninstallDir, "xpd", "xpd"); + copyInstallDirectoryWithExtension(uninstallDir, "html", "html"); + copyInstallDirectoryWithExtension(uninstallDir, "images", "gif"); + copyInstallDirectoryDoubleSubdir(uninstallDir, "html", "images"); + copyGetUidSoFile(uninstallDir); + copyJreFile(uninstallDir); + moveAdminFiles(uninstallDir); + createInfoFile(uninstallDir); + } + } + + static public void removeUninstallationFiles() { + // removing selected File + removeSpecialFiles(); + // removing directories html/images, html and xpd + removeInforootSubdir("html", "images"); + removeInforootSubdir("html"); + removeInforootSubdir("xpd"); + removeInforootSubdir("images"); + removeInforootSubdir("jre"); + removeInforoot(); + } + +} |