Ignore:
Timestamp:
Jan 16, 2013, 12:22:28 PM (12 years ago)
Author:
alloc
Message:

AEI2 0.84:

  • Actually *do* update packages
  • Uninstall backend for tools
Location:
AE/installer2/src/net/oni2/aeinstaller/backend
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • AE/installer2/src/net/oni2/aeinstaller/backend/mods/ModManager.java

    r623 r624  
    286286         */
    287287        public HashMap<Mod, HashSet<Mod>> checkDependencies(TreeSet<Mod> mods) {
    288                 // TODO: Verify functionality
     288                // TODO: Verify functionality (checkDependencies)
    289289                HashMap<Mod, HashSet<Mod>> res = new HashMap<Mod, HashSet<Mod>>();
    290290
     
    311311         */
    312312        public HashMap<Mod, HashSet<Mod>> checkIncompabitilites(TreeSet<Mod> mods) {
    313                 // TODO: Verify functionality
     313                // TODO: Verify functionality (checkIncompatibilities)
    314314                HashMap<Mod, HashSet<Mod>> res = new HashMap<Mod, HashSet<Mod>>();
    315315
  • AE/installer2/src/net/oni2/aeinstaller/backend/mods/download/ModDownload.java

    r621 r624  
    7272                zipFile = new File(Paths.getDownloadPath(),
    7373                                mod.getPackageNumberString() + ".zip");
    74                 targetFolder = new File(Paths.getModsPath(),
    75                                 mod.getPackageNumberString());
     74                targetFolder = mod.getLocalPath();
    7675                try {
    7776                        downloader = new FileDownloader(mod.getFile().getUri_full(),
  • AE/installer2/src/net/oni2/aeinstaller/backend/oni/Installer.java

    r619 r624  
    33import java.io.File;
    44import java.io.FileFilter;
     5import java.io.FileInputStream;
    56import java.io.FileNotFoundException;
     7import java.io.FileOutputStream;
    68import java.io.FilenameFilter;
    79import java.io.IOException;
     
    1012import java.util.Date;
    1113import java.util.HashMap;
     14import java.util.HashSet;
    1215import java.util.List;
    1316import java.util.Scanner;
     
    2427
    2528import org.apache.commons.io.FileUtils;
     29
     30import com.thoughtworks.xstream.XStream;
     31import com.thoughtworks.xstream.io.xml.StaxDriver;
    2632
    2733/**
     
    5864
    5965        /**
     66         * @return Currently installed tools
     67         */
     68        @SuppressWarnings("unchecked")
     69        public static TreeSet<Integer> getInstalledTools() {
     70                File installCfg = new File(Paths.getInstallerPath(),
     71                                "installed_tools.xml");
     72                TreeSet<Integer> res = new TreeSet<Integer>();
     73                try {
     74                        if (installCfg.exists()) {
     75                                FileInputStream fis = new FileInputStream(installCfg);
     76                                XStream xs = new XStream(new StaxDriver());
     77                                Object obj = xs.fromXML(fis);
     78                                if (obj instanceof TreeSet<?>)
     79                                        res = (TreeSet<Integer>) obj;
     80                                fis.close();
     81                        }
     82                } catch (FileNotFoundException e) {
     83                        e.printStackTrace();
     84                } catch (IOException e) {
     85                        e.printStackTrace();
     86                }
     87                return res;
     88        }
     89
     90        private static void writeInstalledTools(TreeSet<Integer> tools) {
     91                File installCfg = new File(Paths.getInstallerPath(),
     92                                "installed_tools.xml");
     93                try {
     94                        FileOutputStream fos = new FileOutputStream(installCfg);
     95                        XStream xs = new XStream(new StaxDriver());
     96                        xs.toXML(tools, fos);
     97                        fos.close();
     98                } catch (FileNotFoundException e) {
     99                        e.printStackTrace();
     100                } catch (IOException e) {
     101                        e.printStackTrace();
     102                }
     103        }
     104
     105        /**
    60106         * @param tools
    61107         *            Tools to install
    62108         */
    63109        public static void installTools(TreeSet<Mod> tools) {
     110                TreeSet<Integer> installed = getInstalledTools();
    64111                for (Mod m : tools) {
    65112                        File plain = new File(m.getLocalPath(), "plain");
     
    80127                                }
    81128                        }
    82                 }
     129                        installed.add(m.getPackageNumber());
     130                }
     131                writeInstalledTools(installed);
    83132        }
    84133
     
    88137         */
    89138        public static void uninstallTools(TreeSet<Mod> tools) {
    90                 // TODO: implement this!
     139                TreeSet<Integer> installed = getInstalledTools();
     140                for (Mod m : tools) {
     141                        if (installed.contains(m.getPackageNumber())) {
     142                                File plain = new File(m.getLocalPath(), "plain");
     143                                if (plain.exists()) {
     144                                        if (m.hasSeparatePlatformDirs()) {
     145                                                File plainCommon = new File(plain, "common");
     146                                                File plainMac = new File(plain, "mac_only");
     147                                                File plainWin = new File(plain, "win_only");
     148                                                if (plainCommon.exists())
     149                                                        removeToolsFiles(plainCommon,
     150                                                                        Paths.getEditionBasePath());
     151                                                if (Settings.getPlatform() == Platform.MACOS
     152                                                                && plainMac.exists())
     153                                                        removeToolsFiles(plainMac,
     154                                                                        Paths.getEditionBasePath());
     155                                                else if (plainWin.exists())
     156                                                        removeToolsFiles(plainWin,
     157                                                                        Paths.getEditionBasePath());
     158                                        } else {
     159                                                removeToolsFiles(plain, Paths.getEditionBasePath());
     160                                        }
     161                                }
     162                        }
     163                        installed.remove(m.getPackageNumber());
     164                }
     165                writeInstalledTools(installed);
    91166        }
    92167
     
    106181        }
    107182
     183        private static void removeToolsFiles(File srcFolder, File target) {
     184                for (File f : srcFolder.listFiles()) {
     185                        if (f.isDirectory())
     186                                removeToolsFiles(f, new File(target, f.getName()));
     187                        else {
     188                                File targetFile = new File(target, f.getName());
     189                                if (targetFile.exists())
     190                                        targetFile.delete();
     191                        }
     192                }
     193                if (target.list().length == 0)
     194                        target.delete();
     195        }
     196
    108197        /**
    109198         * Install the given set of mods
     
    125214                ModManager.getInstance().saveModSelection(installCfg, mods);
    126215
     216                HashSet<Integer> unlockLevels = new HashSet<Integer>();
     217
    127218                Vector<File> foldersOni = new Vector<File>();
    128219                foldersOni.add(Paths.getVanillaOnisPath());
    129220
    130221                for (Mod m : mods) {
     222                        for (int lev : m.getUnlockLevels())
     223                                unlockLevels.add(lev);
     224
    131225                        File oni = new File(m.getLocalPath(), "oni");
    132226                        if (oni.exists()) {
     
    149243                combineBinaryFiles(foldersOni, listener);
    150244                combineBSLFolders(mods, listener);
     245
     246                if (unlockLevels.size() > 0) {
     247                        File dat = new File(Paths.getEditionBasePath(), "persist.dat");
     248                        if (dat.exists()) {
     249                                PersistDat save = new PersistDat(dat);
     250                                HashSet<Integer> currentlyUnlocked = save.getUnlockedLevels();
     251                                currentlyUnlocked.addAll(unlockLevels);
     252                                save.setUnlockedLevels(currentlyUnlocked);
     253                                save.close();
     254                        } else {
     255                                // TODO: what if persist.dat does not exist?
     256                        }
     257                }
    151258        }
    152259
  • AE/installer2/src/net/oni2/aeinstaller/backend/oni/OniSplit.java

    r619 r624  
    88
    99import net.oni2.aeinstaller.backend.Paths;
    10 import net.oni2.aeinstaller.backend.QuickAppExecution;
     10import net.oni2.aeinstaller.backend.AppExecution;
    1111import net.oni2.aeinstaller.backend.Settings;
    1212import net.oni2.aeinstaller.backend.Settings.Architecture;
     
    5555                                Vector<String> res = null;
    5656                                try {
    57                                         res = QuickAppExecution.execute(cmd);
     57                                        res = AppExecution.executeAndWait(cmd);
    5858                                } catch (IOException e) {
    5959                                        e.printStackTrace();
     
    9797                Vector<String> res = null;
    9898                try {
    99                         res = QuickAppExecution.execute(cmdLine);
     99                        res = AppExecution.executeAndWait(cmdLine);
    100100                } catch (IOException e) {
    101101                        e.printStackTrace();
     
    122122                Vector<String> res = null;
    123123                try {
    124                         res = QuickAppExecution.execute(cmdLine);
     124                        res = AppExecution.executeAndWait(cmdLine);
    125125                } catch (IOException e) {
    126126                        e.printStackTrace();
     
    151151                Vector<String> res = null;
    152152                try {
    153                         res = QuickAppExecution.execute(cmdLine);
     153                        res = AppExecution.executeAndWait(cmdLine);
    154154                } catch (IOException e) {
    155155                        e.printStackTrace();
     
    182182                Vector<String> res = null;
    183183                try {
    184                         res = QuickAppExecution.execute(cmdLine);
     184                        res = AppExecution.executeAndWait(cmdLine);
    185185                } catch (IOException e) {
    186186                        e.printStackTrace();
Note: See TracChangeset for help on using the changeset viewer.