Changeset 672 for AE/installer2/src/net


Ignore:
Timestamp:
Feb 23, 2013, 6:40:47 PM (12 years ago)
Author:
alloc
Message:

AEI2 0.99q:

  • Updates dialog: Updating the to-download-size on (un)checking updates to download
  • Updates dialog: Show download size of individual updates
  • Tool execution: Support for .NET tools (Mod_Info.cfg added ExeType flag)
  • Depot backend: Ignore mod nodes with an empty package number field
Location:
AE/installer2/src/net/oni2/aeinstaller
Files:
3 added
8 edited

Legend:

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

    r671 r672  
    11appname=AE Installer 2
    2 appversion=0.99p
     2appversion=0.99q
  • AE/installer2/src/net/oni2/aeinstaller/AEInstaller2.java

    r653 r672  
    2121import javax.swing.UIManager.LookAndFeelInfo;
    2222
     23import net.oni2.aeinstaller.backend.DotNet;
    2324import net.oni2.aeinstaller.backend.Paths;
    2425import net.oni2.aeinstaller.backend.Settings;
     
    171172                System.out.println("Platform:  " + Settings.getPlatform());
    172173                System.out.println("Architect: " + Settings.getArchitecture());
    173                 System.out.println(".NET:      " + OniSplit.isDotNETInstalled());
     174                System.out.println(".NET:      " + DotNet.isInstalled());
    174175                System.out.println("OniSplit:  " + OniSplit.isOniSplitInstalled());
    175176                System.out.println("Globalized:" + Installer.isEditionInitialized());
     
    185186                System.out.println();
    186187
    187                 if (!OniSplit.isDotNETInstalled()) {
     188                if (!DotNet.isInstalled()) {
    188189                        HTMLLinkLabel hll = new HTMLLinkLabel();
    189190                        String dlUrl = "";
  • AE/installer2/src/net/oni2/aeinstaller/backend/depot/DepotManager.java

    r662 r672  
    275275                                NodeMod nm = (NodeMod) n;
    276276                                if (nm.getInstallMethod().getName()
    277                                                 .equalsIgnoreCase(instMethName))
    278                                         result.add(nm);
     277                                                .equalsIgnoreCase(instMethName)) {
     278                                        try {
     279                                                nm.getPackageNumber();
     280                                                result.add(nm);
     281                                        } catch (NumberFormatException e) {
     282                                                System.err.println("Node " + nm.getNid() + " does not have a package number!!!");
     283                                        }
     284                                }
    279285                        }
    280286                }
  • AE/installer2/src/net/oni2/aeinstaller/backend/oni/OniSplit.java

    r624 r672  
    33import java.io.File;
    44import java.io.IOException;
    5 import java.lang.reflect.InvocationTargetException;
    6 import java.util.Map;
    75import java.util.Vector;
    86
     7import net.oni2.aeinstaller.backend.DotNet;
    98import net.oni2.aeinstaller.backend.Paths;
    109import net.oni2.aeinstaller.backend.AppExecution;
    1110import net.oni2.aeinstaller.backend.Settings;
    12 import net.oni2.aeinstaller.backend.Settings.Architecture;
    1311import net.oni2.aeinstaller.backend.Settings.Platform;
    14 import net.oni2.aeinstaller.backend.WinRegistry;
    1512
    1613/**
     
    1815 */
    1916public class OniSplit {
    20 
    21         /**
    22          * @return is a .NET implementation installed?
    23          */
    24         public static boolean isDotNETInstalled() {
    25                 switch (Settings.getPlatform()) {
    26                         case WIN:
    27                                 try {
    28                                         int view = WinRegistry.KEY_WOW64_32KEY;
    29                                         if (Settings.getArchitecture() == Architecture.AMD64)
    30                                                 view = WinRegistry.KEY_WOW64_64KEY;
    31 
    32                                         Map<String, String> m = WinRegistry
    33                                                         .readStringValues(
    34                                                                         WinRegistry.HKEY_LOCAL_MACHINE,
    35                                                                         "Software\\Microsoft\\NET Framework Setup\\NDP\\v2.0.50727",
    36                                                                         view);
    37                                         return m != null;
    38                                 } catch (IllegalArgumentException e) {
    39                                         e.printStackTrace();
    40                                 } catch (IllegalAccessException e) {
    41                                         e.printStackTrace();
    42                                 } catch (InvocationTargetException e) {
    43                                         e.printStackTrace();
    44                                 } catch (Exception e) {
    45                                         if (!e.getMessage()
    46                                                         .equals("Registry access not supported (not a Windows OS?)."))
    47                                                 e.printStackTrace();
    48                                 }
    49                                 return false;
    50                         case MACOS:
    51                         case LINUX:
    52                                 Vector<String> cmd = new Vector<String>();
    53                                 cmd.add("which");
    54                                 cmd.add("mono");
    55                                 Vector<String> res = null;
    56                                 try {
    57                                         res = AppExecution.executeAndWait(cmd);
    58                                 } catch (IOException e) {
    59                                         e.printStackTrace();
    60                                 }
    61                                 if (res != null) {
    62                                         if (res.get(0).startsWith("/")
    63                                                         && res.get(0).endsWith("mono")) {
    64                                                 return true;
    65                                         }
    66                                 }
    67                                 return false;
    68                         default:
    69                                 return false;
    70                 }
    71         }
    7217
    7318        /**
     
    209154        private static Vector<String> getProgramInvocation() {
    210155                Vector<String> res = new Vector<String>();
    211                 if (Settings.getPlatform() != Platform.WIN)
    212                         res.add("mono");
     156                if (DotNet.getRuntimeExe().length() > 0)
     157                        res.add(DotNet.getRuntimeExe());
    213158                res.add(getProgramFile().getPath());
    214159                return res;
  • AE/installer2/src/net/oni2/aeinstaller/backend/packages/Mod_Info.java

    r671 r672  
    2727
    2828        private File exeFile = null;
     29        private EExeType exeType = EExeType.OSBINARY;
    2930        private File iconFile = null;
    3031        private String workingDir = "Base";
     
    111112                                } else if (sName.equalsIgnoreCase("ExeName")) {
    112113                                        exeFile = new File(Paths.getEditionBasePath(), sVal);
     114                                } else if (sName.equalsIgnoreCase("ExeType")) {
     115                                        if (sVal.equalsIgnoreCase("OSBinary"))
     116                                                exeType = EExeType.OSBINARY;
     117                                        else if (sVal.equalsIgnoreCase("DotNet"))
     118                                                exeType = EExeType.DOTNET;
     119                                        else if (sVal.equalsIgnoreCase("Jar"))
     120                                                exeType = EExeType.JAR;
    113121                                } else if (sName.equalsIgnoreCase("WorkingDir")) {
    114122                                        workingDir = sVal;
     
    116124                                        iconFile = new File(Paths.getEditionBasePath(), sVal);
    117125                                }
     126                        }
     127                        if (exeFile != null) {
     128                                if (exeFile.getName().toLowerCase().endsWith(".jar"))
     129                                        exeType = EExeType.JAR;
    118130                        }
    119131                } catch (FileNotFoundException e) {
     
    203215
    204216        /**
     217         * @return the exeType
     218         */
     219        public EExeType getExeType() {
     220                return exeType;
     221        }
     222
     223        /**
    205224         * @return the iconFile
    206225         */
  • AE/installer2/src/net/oni2/aeinstaller/backend/packages/Package.java

    r670 r672  
    4444
    4545        private File exeFile = null;
     46        private EExeType exeType = EExeType.OSBINARY;
    4647        private File iconFile = null;
    4748        private String workingDir = "Base";
     
    124125
    125126                        exeFile = mi.getExeFile();
     127                        exeType = mi.getExeType();
    126128                        workingDir = mi.getWorkingDir();
    127129                        iconFile = mi.getIconFile();
     
    387389
    388390        /**
     391         * @return Executable type of this tool
     392         */
     393        public EExeType getExeType() {
     394                return exeType;
     395        }
     396
     397        /**
    389398         * @return Icon file of this tool
    390399         */
  • AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java

    r671 r672  
    4444import net.oni2.aeinstaller.backend.Paths;
    4545import net.oni2.aeinstaller.backend.Settings;
     46import net.oni2.aeinstaller.backend.ToolLauncher;
    4647import net.oni2.aeinstaller.backend.Settings.Platform;
    4748import net.oni2.aeinstaller.backend.SizeFormatter;
     
    229230                                TreeSet<Package> tools = PackageManager.getInstance()
    230231                                                .getUpdatableTools();
    231                                 int size = 0;
    232232                                JPanel panPackages = new JPanel(new GridLayout(0, 1));
    233233                                execUpdates = new TreeSet<Package>();
    234234                                execUpdates.addAll(mods);
    235235                                execUpdates.addAll(tools);
     236                                final JLabel lblSize = new JLabel("<html>"
     237                                                + String.format(
     238                                                                bundle.getString("updatesAvailableSize.text"),
     239                                                                SizeFormatter.format(0, 3)) + "</html>");
     240                                int size = 0;
    236241                                for (final Package m : mods) {
    237242                                        size += m.getZipSize();
    238                                         JCheckBox check = new JCheckBox("Mod: " + m.getName());
     243                                        JCheckBox check = new JCheckBox("Mod: " + m.getName()
     244                                                        + " (" + SizeFormatter.format(size, 1) + ")");
    239245                                        check.setSelected(true);
    240246                                        check.addItemListener(new ItemListener() {
     
    245251                                                        else
    246252                                                                execUpdates.remove(m);
     253                                                        int s = 0;
     254                                                        for (Package p : execUpdates)
     255                                                                s += p.getZipSize();
     256                                                        lblSize.setText("<html>"
     257                                                                        + String.format(
     258                                                                                        bundle.getString("updatesAvailableSize.text"),
     259                                                                                        SizeFormatter.format(s, 3))
     260                                                                        + "</html>");
    247261                                                }
    248262                                        });
     
    251265                                for (final Package m : tools) {
    252266                                        size += m.getZipSize();
    253                                         JCheckBox check = new JCheckBox("Tool: " + m.getName());
     267                                        JCheckBox check = new JCheckBox("Tool: " + m.getName()
     268                                                        + " (" + SizeFormatter.format(size, 1) + ")");
    254269                                        check.setSelected(true);
     270                                        check.addItemListener(new ItemListener() {
     271                                                @Override
     272                                                public void itemStateChanged(ItemEvent e) {
     273                                                        if (e.getStateChange() == ItemEvent.SELECTED)
     274                                                                execUpdates.add(m);
     275                                                        else
     276                                                                execUpdates.remove(m);
     277                                                        int s = 0;
     278                                                        for (Package p : execUpdates)
     279                                                                s += p.getZipSize();
     280                                                        lblSize.setText("<html>"
     281                                                                        + String.format(
     282                                                                                        bundle.getString("updatesAvailableSize.text"),
     283                                                                                        SizeFormatter.format(s, 3))
     284                                                                        + "</html>");
     285                                                }
     286                                        });
    255287                                        panPackages.add(check);
    256288                                }
     289                                lblSize.setText("<html>"
     290                                                + String.format(
     291                                                                bundle.getString("updatesAvailableSize.text"),
     292                                                                SizeFormatter.format(size, 3)) + "</html>");
    257293                                if (size > 0) {
    258294                                        // Build info dialog content
     
    261297                                                        + bundle.getString("updatesAvailable.text")
    262298                                                        + "</html>");
    263                                         JLabel lblSize = new JLabel("<html>"
    264                                                         + String.format(bundle
    265                                                                         .getString("updatesAvailableSize.text"),
    266                                                                         SizeFormatter.format(size, 3)) + "</html>");
    267299                                        packages.add(lblIntro, BorderLayout.NORTH);
    268300                                        packages.add(panPackages, BorderLayout.CENTER);
     
    433465                }
    434466                toolsMenuItems.clear();
    435                 for (Package m : PackageManager.getInstance().getInstalledTools()) {
     467                for (final Package m : PackageManager.getInstance().getInstalledTools()) {
    436468                        File exe = m.getExeFile();
    437469                        if (exe != null && exe.exists()) {
    438470                                JMenuItem item = new JMenuItem();
    439                                 final Vector<String> params = new Vector<String>();
    440                                 if (exe.getName().toLowerCase().endsWith(".jar")) {
    441                                         File jre = null;
    442                                         if (Settings.getPlatform() == Platform.WIN)
    443                                                 jre = new File(System.getProperties().getProperty(
    444                                                                 "java.home"), "bin/javaw.exe");
    445                                         else
    446                                                 jre = new File(System.getProperties().getProperty(
    447                                                                 "java.home"), "bin/java");
    448                                         params.add(jre.getPath());
    449                                         params.add("-jar");
    450                                 }
    451                                 params.add(exe.getPath());
    452                                 final File wd = m.getWorkingDir();
    453471                                ImageIcon ico = null;
    454472                                if (m.getIconFile() != null && m.getIconFile().exists()) {
     
    464482
    465483                                        @Override
    466                                         public void actionPerformed(ActionEvent e) {
    467                                                 AppExecution.execute(params, wd);
     484                                        public void actionPerformed(ActionEvent evt) {
     485                                                try {
     486                                                        ToolLauncher.launch(m);
     487                                                } catch (Exception ex) {
     488                                                        if (ex.getMessage().contains("JRE"))
     489                                                                JOptionPane.showMessageDialog(null,
     490                                                                                bundle.getString("jreNotFound.text"),
     491                                                                                bundle.getString("jreNotFound.title"),
     492                                                                                JOptionPane.ERROR_MESSAGE);
     493                                                        if (ex.getMessage().contains(".NET"))
     494                                                                JOptionPane.showMessageDialog(null,
     495                                                                                bundle.getString("dotNetNotFound.text"),
     496                                                                                bundle.getString("dotNetNotFound.title"),
     497                                                                                JOptionPane.ERROR_MESSAGE);
     498                                                }
    468499                                        }
    469500                                });
  • AE/installer2/src/net/oni2/aeinstaller/localization/MainWin.properties

    r661 r672  
    8383doUpdate.title=Updating packages
    8484
     85jreNotFound.text=This tool requires a JRE but it was not found.
     86jreNotFound.title=No JRE found
     87
     88dotNetNotFound.text=This tool requires a .NET runtime but it was not found.
     89dotNetNotFound.title=No .NET runtime found
Note: See TracChangeset for help on using the changeset viewer.