Changeset 624 for AE/installer2/src/net


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
Files:
1 added
7 edited

Legend:

Unmodified
Added
Removed
  • AE/installer2/src/net/oni2/aeinstaller/AEInstaller.properties

    r623 r624  
    11appname=AE Installer 2
    2 appversion=0.83
     2appversion=0.84
    33
    44invalidPath.title=Wrong directory
  • AE/installer2/src/net/oni2/aeinstaller/AEInstaller2.java

    r621 r624  
    121121                JFrame.setDefaultLookAndFeelDecorated(true);
    122122
    123                 // TODO
     123                // TODO: Remove debug output
    124124                System.out.println("JarPath:   " + Paths.getInstallerPath());
    125125                System.out.println("PrefsPath: " + Paths.getPrefsPath());
     
    134134                System.out.println("Globalized:" + Installer.isEditionInitialized());
    135135
     136                // TODO: Check available space
    136137                System.out
    137138                                .println("Free space on temp: "
  • 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();
  • AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java

    r623 r624  
    322322        }
    323323
    324         @DoInBackground(progressMessage = "doUpdate.title", cancelable = false, indeterminateProgress = false)
    325         private void doUpdate(final BackgroundEvent evt) {
     324        @SuppressWarnings("unused")
     325        private void doUpdate() {
    326326                if (execUpdates != null) {
    327                         // TODO
    328                         System.out.println("Update: " + execUpdates.toString());
    329                         // TODO: install new tools if previously installed
     327                        Downloader dl = new Downloader(execUpdates);
     328                        try {
     329                                dl.setVisible(true);
     330                                if (dl.isFinished()) {
     331                                        TreeSet<Integer> installed = Installer.getInstalledTools();
     332                                        TreeSet<Mod> tools = new TreeSet<Mod>();
     333                                        for (Mod m : execUpdates)
     334                                                if (m.isTool()
     335                                                                && installed.contains(m.getPackageNumber()))
     336                                                        tools.add(m);
     337                                        if (tools.size() > 0) {
     338                                                Installer.installTools(tools);
     339                                        }
     340                                }
     341                        } finally {
     342                                dl.dispose();
     343                        }
    330344                }
    331345                execUpdates = null;
     
    414428        @SuppressWarnings("unused")
    415429        private void tools() {
    416                 // TODO method stub
     430                // TODO: Open tools manager
    417431                JOptionPane.showMessageDialog(this, "tools", "todo",
    418432                                JOptionPane.INFORMATION_MESSAGE);
     
    435449                                        ico = new ImageIcon(m.getIconFile().getPath());
    436450                                } else {
    437                                         URL icon = AEInstaller2.class.getResource("images/transparent.png");
     451                                        URL icon = AEInstaller2.class
     452                                                        .getResource("images/transparent.png");
    438453                                        ico = new ImageIcon(icon);
    439454                                }
Note: See TracChangeset for help on using the changeset viewer.