Opened 7 years ago

Closed 7 years ago

#128 closed defect (fixed)

AEIU v1.3 fails with Mac launch script

Reported by: Iritscen Owned by: Christian
Priority: major Component: AEI2/Updater
Keywords: Cc:

Description

In testing the Mac Setup app with the new AEIU, I found that it fails where the previous .jar succeeded. In the process of investigating this, I discovered a couple interesting things:

  • I don't seem to have ever updated the AEIU in my previous Mac Setup releases. All Setup apps from v1.0 to v1.2.0 (last version) have contained the same AEInstaller2Updater.jar. I don't know which version it is, but I can only assume it's v1.0. So I don't know if the problem described below is new to v1.3, or if it might have been introduced in v1.1 or v1.2.
  • In trying to see exactly what could have changed, I noticed that the source on our svn does not seem to be up-to-date; MainWin.java still says "AEI2 updater version 1.2". I can only assume that you have newer source on your HD since I am seeing "AEI2 updater version 1.3" in the log when the AEIU runs.

Okay, on to the problem. I'd better describe the Mac installation process in steps:

  1. The user double-clicks on Anniversary Edition Setup.app. It creates the AE/ folder in the Oni installation, copies AEInstaller2Updater.jar and Run AE Installer.app to it, and then runs Run AE Installer.
  2. Run AE Installer is basically a script that uses a Unix command to launch either the AEI or, if it is not present, the AEIU. In this case, it launches the AEIU.
  3. The AEIU opens, displays the progress dialog, and then the progress bar immediately reaches 100%. Clicking the "Launch AEI" button does nothing, and the AEIU quits a moment later. There is no log file produced.

A little fiddling around revealed that:

  • The working directory when the launch script runs the AEIU appears to be "/". This path is locked by default in macOS, causing the AEIU to fail to create either its log file or the bin/ directory. See error message below.
  • Clicking directly on the .jar after the Setup app places it in AE/AEInstaller/ will work and install the AEI, but the user won't probably know he should do that. Either I need to alter the Mac installation progress or we need to figure out why the AEIU no longer works with the previous launch command.

So here is the command and its result when run directly in Terminal. Note that this is a recreation on the CLI of what my launch script is doing. The following command works flawlessly with AEIU v1.0:

$ export PATH=/Library/Frameworks/Mono.framework/Versions/Current/bin:${PATH};export LC_CTYPE="UTF-8";/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java -jar "/Games/Oni/AE/AEInstaller/AEInstaller2Updater.jar"

Here is the result with AEIU v1.3:

java.io.FileNotFoundException: updater_output.log (Permission denied)
	at java.io.FileOutputStream.open0(Native Method)
	at java.io.FileOutputStream.open(FileOutputStream.java:270)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
	at net.oni2.aeinstaller.updater.AEInstaller2Updater.main(AEInstaller2Updater.java:37)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
AEI2 updater version 1.3
Waiting for AEI to close
Updating
Error while getting information of working copy for the location 'http://svn.aei.oni2.net': svn: E155007: '/bin' is not a working copy
org.tmatesoft.svn.core.SVNException: svn: E155007: '/bin' is not a working copy
	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:64)
	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:51)
	at org.tmatesoft.svn.core.internal.wc17.db.SVNWCDb.parseDir(SVNWCDb.java:1491)
	at org.tmatesoft.svn.core.internal.wc17.db.SVNWCDb.parseDir(SVNWCDb.java:1381)
	at org.tmatesoft.svn.core.internal.wc17.db.SVNWCDb.opReadTreeConflict(SVNWCDb.java:1935)
	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgGetInfo.run(SvnNgGetInfo.java:71)
	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgGetInfo.run(SvnNgGetInfo.java:50)
	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgOperationRunner.run(SvnNgOperationRunner.java:20)
	at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:20)
	at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1235)
	at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:291)
	at org.tmatesoft.svn.core.wc.SVNWCClient.doInfo(SVNWCClient.java:2423)
	at net.oni2.svnaccess.SVN.pathIsWCof(SVN.java:206)
	at net.oni2.svnaccess.SVN.checkSVN(SVN.java:140)
	at net.oni2.aeinstaller.updater.gui.MainWin$Updater.doInBackground(MainWin.java:146)
	at net.oni2.aeinstaller.updater.gui.MainWin$Updater.doInBackground(MainWin.java:1)
	at javax.swing.SwingWorker$1.call(SwingWorker.java:295)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at javax.swing.SwingWorker.run(SwingWorker.java:334)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
java.lang.Exception: Destination path exists but is not a Working Copy of the SVN
	at net.oni2.svnaccess.SVN.checkSVN(SVN.java:143)
	at net.oni2.aeinstaller.updater.gui.MainWin$Updater.doInBackground(MainWin.java:146)
	at net.oni2.aeinstaller.updater.gui.MainWin$Updater.doInBackground(MainWin.java:1)
	at javax.swing.SwingWorker$1.call(SwingWorker.java:295)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at javax.swing.SwingWorker.run(SwingWorker.java:334)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Closing AEI updater

Sorry for the long ticket. I guess the tl;dr is: Why does the AEIU now get confused and try to run from '/' with this launch command?

Change History (1)

comment:1 by Christian, 7 years ago

Resolution: fixed
Status: newclosed

Fixed in the updated jar, was a jar building issue.

Note: See TracTickets for help on using tickets.