| 1 | -- Anniversary Edition Setup
 | 
|---|
| 2 | -- for Anniversary Edition Seven
 | 
|---|
| 3 | -- by Iritscen
 | 
|---|
| 4 | -- For installing the Anniversary Edition Seven's AEI Updater. This script looks for an existing Oni
 | 
|---|
| 5 | --      installation, places the AEInstaller2Updater into a new AE/ folder, and runs it. It also makes sure
 | 
|---|
| 6 | --      that the user has Java installed so he can run the Updater and Installer. It does not check for Mono
 | 
|---|
| 7 | --      because that would be redundant of the Installer itself.
 | 
|---|
| 8 | -- History:
 | 
|---|
| 9 | --   1.3.0 - No code changes. Re-built in order to include AEInstaller2Updater 1.3.
 | 
|---|
| 10 | --   1.2.0 - No code changes. Re-built in order to include Run AE Installer 1.1.0, which had a change
 | 
|---|
| 11 | --           made to ensure Mono compatibility in 10.13.
 | 
|---|
| 12 | --   1.1.9 - No code changes. Re-built in order to include Run AE Installer 1.0.9, which also had no
 | 
|---|
| 13 | --           code changes but needed to be re-built in 10.12 in order to run in 10.12.
 | 
|---|
| 14 | --   1.1.8 - Updated "Run AE Installer" script for Mono in 10.11.
 | 
|---|
| 15 | --   1.1.7 - Now an AppleScriptObjC application to ensure signing integrity and OS compatibility.
 | 
|---|
| 16 | --   1.1.6 - Now testing for Java's existence before talking to it, because it seems that simply calling
 | 
|---|
| 17 | --              "java -version" now causes the script to fail with an error dialog instead of invoking
 | 
|---|
| 18 | --              OS X's Java installation prompt. Setup app now uses the standard icon name "applet" so
 | 
|---|
| 19 | --              that Info.plist does not have to be edited, since that invalidates the code signature
 | 
|---|
| 20 | --              applied by OS X 10.6's Script Editor. Some dialog text has been made clearer. Fixed a
 | 
|---|
| 21 | --              weird bug that cropped up for the first time while testing this script, which was
 | 
|---|
| 22 | --              breaking GDF validation.
 | 
|---|
| 23 | --   1.1.5 - Now using fixed paths for Java for 10.6 and for 10.7+ because "which java" is not reliable.
 | 
|---|
| 24 | --   1.1.4 - Now attempting to call Java through "java" again before falling back to looking in Internet
 | 
|---|
| 25 | --              Plug-Ins, because 10.6 has Java installed differently.
 | 
|---|
| 26 | --   1.1.3 - No longer supplying link to MacUpdate page for Apple Java because it is out of date; only
 | 
|---|
| 27 | --              supplying link to java.com.
 | 
|---|
| 28 | --   1.1.2 - Calling Java at Internet plug-in location instead of using basic command-line "java", as
 | 
|---|
| 29 | --              only the JDK installs command-line Java.
 | 
|---|
| 30 | --   1.1.1 - Changed the "Run AE Installer" script to set environment to UTF-8 in order to avoid 'ƒ'
 | 
|---|
| 31 | --              problem in Java 7.
 | 
|---|
| 32 | --   1.1   - Updated bundled AEI Updater to 1.1, which supports proxies.
 | 
|---|
| 33 | --   1.0   - Initial release.
 | 
|---|
| 34 | 
 | 
|---|
| 35 | script AppDelegate
 | 
|---|
| 36 |         property parent : class "NSObject"
 | 
|---|
| 37 |     global pathToMe
 | 
|---|
| 38 |     global sosumi
 | 
|---|
| 39 |     global gNeedsJavaVersionMajor
 | 
|---|
| 40 |     global gNeedsJavaVersionMinor
 | 
|---|
| 41 |         
 | 
|---|
| 42 |         -- IBOutlets
 | 
|---|
| 43 |         property theWindow : missing value
 | 
|---|
| 44 |     property aesIcon : missing value
 | 
|---|
| 45 |         
 | 
|---|
| 46 |         on applicationWillFinishLaunching_(aNotification)
 | 
|---|
| 47 |         -- Set globals
 | 
|---|
| 48 |         set gNeedsJavaVersionMajor to 1
 | 
|---|
| 49 |         set gNeedsJavaVersionMinor to 6
 | 
|---|
| 50 |         
 | 
|---|
| 51 |         -- Set "pathToMe" for various future uses; its value will be "/path/to/Anniversary Edition Setup.app/Contents/Resources"
 | 
|---|
| 52 |         tell current application's class "NSBundle"
 | 
|---|
| 53 |             tell its mainBundle()
 | 
|---|
| 54 |                 set pathToMe to resourcePath() as string
 | 
|---|
| 55 |             end tell
 | 
|---|
| 56 |         end tell
 | 
|---|
| 57 |         
 | 
|---|
| 58 |         -- Draw the AE Setup icon in the window
 | 
|---|
| 59 |         set iconPath to POSIX path of ((pathToMe & "/AppIcon.png") as string)
 | 
|---|
| 60 |         set aesIconImg to current application's NSImage's alloc's initWithContentsOfFile_(iconPath)
 | 
|---|
| 61 |         aesIcon's setImage_(aesIconImg)
 | 
|---|
| 62 |         
 | 
|---|
| 63 |         -- Set up "sosumi" with the Sosumi sound
 | 
|---|
| 64 |         tell current application's NSSound to set thisSound to soundNamed_("Sosumi")
 | 
|---|
| 65 |         
 | 
|---|
| 66 |         -- Bring self to front in case something else stole focus
 | 
|---|
| 67 |         tell me
 | 
|---|
| 68 |             activate
 | 
|---|
| 69 |         end tell
 | 
|---|
| 70 |         end applicationWillFinishLaunching_
 | 
|---|
| 71 |     
 | 
|---|
| 72 |     on applicationShouldTerminateAfterLastWindowClosed_(sender)
 | 
|---|
| 73 |         return true
 | 
|---|
| 74 |     end applicationShouldTerminateAfterLastWindowClosed_
 | 
|---|
| 75 |         
 | 
|---|
| 76 |         on applicationShouldTerminate_(sender)
 | 
|---|
| 77 |                 -- Insert code here to do any housekeeping before your application quits 
 | 
|---|
| 78 |                 return current application's NSTerminateNow
 | 
|---|
| 79 |         end applicationShouldTerminate_
 | 
|---|
| 80 |     
 | 
|---|
| 81 |     -- IBActions
 | 
|---|
| 82 |     on clickStart_(sender)
 | 
|---|
| 83 |         set installPath to my find_Oni_folder()
 | 
|---|
| 84 |         tell me
 | 
|---|
| 85 |             activate
 | 
|---|
| 86 |         end tell
 | 
|---|
| 87 |         if (installPath is "Gave up") then
 | 
|---|
| 88 |             display dialog "Sorry, the AE currently requires a retail Oni installation." buttons {"OK"} default button 1 with title "AE Setup"
 | 
|---|
| 89 |         else if (installPath is "AE exists") then
 | 
|---|
| 90 |             display dialog "If you are sure you want to start over with a new AE installation in this location, then you should delete the existing AE/ folder and then run this Setup app again." buttons {"OK"} default button 1 with title "AE Setup"
 | 
|---|
| 91 |         else if (installPath is "") then
 | 
|---|
| 92 |             display dialog "Unknown error encountered while choosing Oni installation. Please ask for help in the Anniversary Edition sub-forum of the Oni Central Forum." buttons {"Go to forum", "OK"} default button 2 with title "AE Setup"
 | 
|---|
| 93 |             set quitOrForum to button returned of the result
 | 
|---|
| 94 |             if (quitOrForum is "Go to forum") then
 | 
|---|
| 95 |                 open location "http://oni.bungie.org/community/forum/index.php"
 | 
|---|
| 96 |             end if
 | 
|---|
| 97 |         else
 | 
|---|
| 98 |             set installResult to my install_AEI_Updater(installPath)
 | 
|---|
| 99 |             tell me
 | 
|---|
| 100 |                 activate
 | 
|---|
| 101 |             end tell
 | 
|---|
| 102 |             if (installResult is 0) then
 | 
|---|
| 103 |                 display dialog "Updater installed. AE Setup will now continue the installation by running the Updater." buttons {"OK"} default button 1 with title "AE Setup"
 | 
|---|
| 104 |                 set runResult to my run_AEIU(installPath)
 | 
|---|
| 105 |                 tell me
 | 
|---|
| 106 |                     activate
 | 
|---|
| 107 |                 end tell
 | 
|---|
| 108 |                 -- Quit if running Run AE Installer seems to have been successful
 | 
|---|
| 109 |                 if (runResult is 0) then
 | 
|---|
| 110 |                     tell me
 | 
|---|
| 111 |                         quit
 | 
|---|
| 112 |                     end tell
 | 
|---|
| 113 |                 else if (runResult is 1) then
 | 
|---|
| 114 |                     display dialog "Script copy error. Please ask for help in the Anniversary Edition sub-forum of the Oni Central Forum." buttons {"Go to forum", "OK"} default button 2 with title "AE Setup"
 | 
|---|
| 115 |                     set quitOrForum to button returned of the result
 | 
|---|
| 116 |                     if (quitOrForum is "Go to forum") then
 | 
|---|
| 117 |                         open location "http://oni.bungie.org/community/forum/index.php"
 | 
|---|
| 118 |                     end if
 | 
|---|
| 119 |                 else if (runResult is 2) then
 | 
|---|
| 120 |                     display dialog "Could not run AEI Updater. Please ask for help in the Anniversary Edition sub-forum of the Oni Central Forum." buttons {"Go to forum", "OK"} default button 2 with title "AE Setup"
 | 
|---|
| 121 |                     set quitOrForum to button returned of the result
 | 
|---|
| 122 |                     if (quitOrForum is "Go to forum") then
 | 
|---|
| 123 |                         open location "http://oni.bungie.org/community/forum/index.php"
 | 
|---|
| 124 |                     end if
 | 
|---|
| 125 |                 end if
 | 
|---|
| 126 |             else if (installResult is 1) then
 | 
|---|
| 127 |                 display dialog "Could not install the AEI Updater because Java was not installed or new enough. Please obtain a Java installer from Java.com." buttons {"Go to Java.com", "OK"} default button 2 with title "AE Setup"
 | 
|---|
| 128 |                 set quitOrJava to button returned of the result
 | 
|---|
| 129 |                 if (quitOrJava is "Go to Java.com") then
 | 
|---|
| 130 |                     open location "http://www.java.com/"
 | 
|---|
| 131 |                 end if
 | 
|---|
| 132 |             else if (installResult is 2) then -- file operation failure
 | 
|---|
| 133 |                 display dialog "Could not install the AEI Updater. Please ask for help in the Anniversary Edition sub-forum of the Oni Central Forum." buttons {"Go to forum", "OK"} default button 2 with title "AE Setup"
 | 
|---|
| 134 |                 set quitOrForum to button returned of the result
 | 
|---|
| 135 |                 if (quitOrForum is "Go to forum") then
 | 
|---|
| 136 |                     open location "http://oni.bungie.org/community/forum/index.php"
 | 
|---|
| 137 |                 end if
 | 
|---|
| 138 |             else
 | 
|---|
| 139 |                 display dialog "Unknown error returned from install_AEI_Updater()! Please ask for help in the Anniversary Edition sub-forum of the Oni Central Forum." buttons {"Go to forum", "OK"} default button 2 with title "AE Setup"
 | 
|---|
| 140 |                 set quitOrForum to button returned of the result
 | 
|---|
| 141 |                 if (quitOrForum is "Go to forum") then
 | 
|---|
| 142 |                     open location "http://oni.bungie.org/community/forum/index.php"
 | 
|---|
| 143 |                 end if
 | 
|---|
| 144 |             end if
 | 
|---|
| 145 |         end if
 | 
|---|
| 146 |     end clickStart_
 | 
|---|
| 147 | 
 | 
|---|
| 148 |     -- The user must pick an acceptable folder to install the AE in, or die trying (or give up)
 | 
|---|
| 149 |     -- Returns "Gave up" if user clicked Quit after being told his choice was not the Oni folder,
 | 
|---|
| 150 |     -- "AE exists" if user clicked Quit after being told that the AE folder was already present, and
 | 
|---|
| 151 |     -- returns the user's chosen path if validation was successful
 | 
|---|
| 152 |     -- Called by clickStart_()
 | 
|---|
| 153 |     on find_Oni_folder()
 | 
|---|
| 154 |         tell me
 | 
|---|
| 155 |             tell me
 | 
|---|
| 156 |                 activate
 | 
|---|
| 157 |             end tell
 | 
|---|
| 158 |             set tryAgain to true
 | 
|---|
| 159 |             set isOniRetail to false
 | 
|---|
| 160 |             set pathProblem to ""
 | 
|---|
| 161 |             set folderTest to 0
 | 
|---|
| 162 |             repeat while (tryAgain is true)
 | 
|---|
| 163 |                 set chosenPath to (choose folder with prompt "Please locate your Oni installation.")
 | 
|---|
| 164 |                 if (chosenPath is "") then
 | 
|---|
| 165 |                     display dialog "There was an error in choosing the Oni folder." buttons {"OK"} default button 1 with title "AE Setup"
 | 
|---|
| 166 |                     return chosenPath
 | 
|---|
| 167 |                 end if
 | 
|---|
| 168 |                 set folderTest to my validate_Oni_folder(chosenPath)
 | 
|---|
| 169 |                 tell me
 | 
|---|
| 170 |                     activate
 | 
|---|
| 171 |                 end tell
 | 
|---|
| 172 |                 if (folderTest is 1) then
 | 
|---|
| 173 |                     display dialog "This doesn't seem to be your Oni installation. Click \"Try again\" to locate another folder." buttons {"Cancel", "Try again"} default button 2 with title "AE Setup"
 | 
|---|
| 174 |                     set cancelOrTryAgain to the button returned of the result
 | 
|---|
| 175 |                     if (cancelOrTryAgain is "Cancel") then
 | 
|---|
| 176 |                         set tryAgain to false
 | 
|---|
| 177 |                         set pathProblem to "Gave up"
 | 
|---|
| 178 |                     end if
 | 
|---|
| 179 |                 else if (folderTest is 2) then
 | 
|---|
| 180 |                     display dialog "This Oni installation already has an AE/ folder! This means that you've probably already run this Setup app, and now you should be opening the \"Run AE Installer\" script in the AE/ folder. You can also click \"Try again\" to find another Oni installation in which to install the AE." buttons {"Cancel", "Try again"} default button 2 with title "AE Setup"
 | 
|---|
| 181 |                     set cancelOrTryAgain to the button returned of the result
 | 
|---|
| 182 |                     if (cancelOrTryAgain is "Cancel") then
 | 
|---|
| 183 |                         set tryAgain to false
 | 
|---|
| 184 |                         set pathProblem to "AE exists"
 | 
|---|
| 185 |                     end if
 | 
|---|
| 186 |                 else
 | 
|---|
| 187 |                     set tryAgain to false -- we got it, let's get out of this loop
 | 
|---|
| 188 |                 end if
 | 
|---|
| 189 |             end repeat
 | 
|---|
| 190 |             if (folderTest is 0) then
 | 
|---|
| 191 |                 return chosenPath
 | 
|---|
| 192 |             else
 | 
|---|
| 193 |                 return pathProblem
 | 
|---|
| 194 |             end if
 | 
|---|
| 195 |         end tell
 | 
|---|
| 196 |     end find_Oni_folder
 | 
|---|
| 197 |     
 | 
|---|
| 198 |     -- Returns 0 if this is a valid target for the AE installation,
 | 
|---|
| 199 |     -- 1 if this is not a valid target, and
 | 
|---|
| 200 |     -- 2 if the AE is already here
 | 
|---|
| 201 |     -- Called by find_Oni_folder()
 | 
|---|
| 202 |     on validate_Oni_folder(folderPath)
 | 
|---|
| 203 |         tell application "Finder"
 | 
|---|
| 204 |             tell me
 | 
|---|
| 205 |                 activate
 | 
|---|
| 206 |             end tell
 | 
|---|
| 207 |             -- Is the GDF here?
 | 
|---|
| 208 |             if not (exists folder "GameDataFolder" in folder folderPath) then
 | 
|---|
| 209 |                 display dialog "GameDataFolder not detected here." buttons {"OK"} default button 1 with title "AE Setup"
 | 
|---|
| 210 |                 return 1
 | 
|---|
| 211 |             end if
 | 
|---|
| 212 |             -- Is the AE folder here? Because we won't install over it.
 | 
|---|
| 213 |             if (exists folder "AE" in folder folderPath) then
 | 
|---|
| 214 |                 return 2
 | 
|---|
| 215 |             end if
 | 
|---|
| 216 |             
 | 
|---|
| 217 |             -- Now see if this is the full installation or demo
 | 
|---|
| 218 |             set retailLevelList to {0, 1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 18, 19}
 | 
|---|
| 219 |             set demoLevelList to {0, 1, 4} -- there's also a separate demo release of just level 2 to be dropped into the demo's GDF, but 1 and 4 were the only core demo levels
 | 
|---|
| 220 |             set isRetail to true
 | 
|---|
| 221 |             set isDemo to true
 | 
|---|
| 222 |             -- Look for levels until one is missing and we know this isn't a complete retail release
 | 
|---|
| 223 |             repeat with thisLevel in retailLevelList
 | 
|---|
| 224 |                 if not (exists file ((folderPath & "GameDataFolder:level" & (thisLevel as string) & "_Final.dat") as string)) then
 | 
|---|
| 225 |                     set isRetail to false
 | 
|---|
| 226 |                     exit repeat
 | 
|---|
| 227 |                 end if
 | 
|---|
| 228 |             end repeat
 | 
|---|
| 229 |             if (isRetail) then
 | 
|---|
| 230 |                 -- Don't return here if we add demo support below
 | 
|---|
| 231 |                 return 0
 | 
|---|
| 232 |             end if
 | 
|---|
| 233 |             -- Look for levels until one is missing and we know this isn't a complete demo release
 | 
|---|
| 234 |             repeat with thisLevel in demoLevelList
 | 
|---|
| 235 |                 if not (exists file ((folderPath & "GameDataFolder:level" & (thisLevel as string) & "_Final.dat") as string)) then
 | 
|---|
| 236 |                     set isDemo to false
 | 
|---|
| 237 |                     exit repeat
 | 
|---|
| 238 |                 end if
 | 
|---|
| 239 |             end repeat
 | 
|---|
| 240 |             if (isDemo) then
 | 
|---|
| 241 |                 -- Insert handling of demo status here if we ever support a demo AE
 | 
|---|
| 242 |                 return 1
 | 
|---|
| 243 |             else
 | 
|---|
| 244 |                 return 1
 | 
|---|
| 245 |             end if
 | 
|---|
| 246 |         end tell
 | 
|---|
| 247 |     end validate_Oni_folder
 | 
|---|
| 248 |     
 | 
|---|
| 249 |     -- If Java is found, creates the AE/ folder with the Updater
 | 
|---|
| 250 |     -- Returns 0 if the Updater was installed (which will install the Installer itself afterward),
 | 
|---|
| 251 |     -- 1 if Java fails verification, and
 | 
|---|
| 252 |     -- 2 if a file operation or other error occurs
 | 
|---|
| 253 |     -- Called by clickStart_()
 | 
|---|
| 254 |     on install_AEI_Updater(pathToOni)
 | 
|---|
| 255 |         tell me
 | 
|---|
| 256 |             set javaResult to my verify_Java()
 | 
|---|
| 257 |             if (javaResult is 1) then
 | 
|---|
| 258 |                 return 1
 | 
|---|
| 259 |             end if
 | 
|---|
| 260 |         end tell
 | 
|---|
| 261 |         -- Make "Oni/AE" folder
 | 
|---|
| 262 |         tell application "Finder"
 | 
|---|
| 263 |             if ((pathToOni & "AE") exists) then -- shouldn't happen because we already looked for it in validate_Oni_folder()
 | 
|---|
| 264 |                 display alert "AE folder already present!"
 | 
|---|
| 265 |                 return 2
 | 
|---|
| 266 |             end if
 | 
|---|
| 267 |             try
 | 
|---|
| 268 |                 make new folder at pathToOni with properties {name:"AE"}
 | 
|---|
| 269 |                 delay 0.5
 | 
|---|
| 270 |                 make new folder at ((pathToOni as string) & "AE") with properties {name:"AEInstaller"}
 | 
|---|
| 271 |             on error
 | 
|---|
| 272 |                 display alert "Couldn't make AE or AEI folder!"
 | 
|---|
| 273 |                 return 2
 | 
|---|
| 274 |             end try
 | 
|---|
| 275 |             
 | 
|---|
| 276 |             -- Copy AEI Updater into "AE/"
 | 
|---|
| 277 |             set AEIU to POSIX file (pathToMe & "/AEInstaller2Updater.jar") as alias
 | 
|---|
| 278 |             if (AEIU exists) then
 | 
|---|
| 279 |                 set AEIfolder to (pathToOni & "AE:AEInstaller" as string)
 | 
|---|
| 280 |                 try
 | 
|---|
| 281 |                     duplicate file AEIU to folder AEIfolder
 | 
|---|
| 282 |                 on error copyError
 | 
|---|
| 283 |                     return 2
 | 
|---|
| 284 |                 end try
 | 
|---|
| 285 |             else
 | 
|---|
| 286 |                 display dialog "AE Installer Updater is not present in the Setup app!"
 | 
|---|
| 287 |                 return 2
 | 
|---|
| 288 |             end if
 | 
|---|
| 289 |         end tell
 | 
|---|
| 290 |         return 0
 | 
|---|
| 291 |     end install_AEI_Updater
 | 
|---|
| 292 |     
 | 
|---|
| 293 |     -- Checks for an acceptable Java installation
 | 
|---|
| 294 |     -- This function was going to support a bundled JRE for those without Java,
 | 
|---|
| 295 |     -- but it adds too many complications, so just make the user install it himself
 | 
|---|
| 296 |     -- Returns 1 if Java is not found or too old, and
 | 
|---|
| 297 |     -- 0 if Java is found and the version is acceptable
 | 
|---|
| 298 |     -- Called by install_AEI_Updater()
 | 
|---|
| 299 |     on verify_Java()
 | 
|---|
| 300 |         tell me
 | 
|---|
| 301 |             set origDelimiters to AppleScript's text item delimiters
 | 
|---|
| 302 |             set OSversion to (system version of (system info) as string)
 | 
|---|
| 303 |             set AppleScript's text item delimiters to "."
 | 
|---|
| 304 |             
 | 
|---|
| 305 |             -- Java's location is different in 10.6 than in 10.7+
 | 
|---|
| 306 |             if ((second text item of OSversion) as number > 6) then
 | 
|---|
| 307 |                 set javaPath to "/Library/Internet\\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java"
 | 
|---|
| 308 |             else
 | 
|---|
| 309 |                 set javaPath to "/usr/bin/java"
 | 
|---|
| 310 |             end if
 | 
|---|
| 311 |             
 | 
|---|
| 312 |             -- Test for Java before talking to it
 | 
|---|
| 313 |             set javaExistsTest to ("if [ -f " & javaPath & " ]; then echo okay; fi") as string
 | 
|---|
| 314 |             set javaExists to do shell script javaExistsTest without altering line endings
 | 
|---|
| 315 |             if (javaExists is "") then
 | 
|---|
| 316 |                 return 1
 | 
|---|
| 317 |             end if
 | 
|---|
| 318 |             
 | 
|---|
| 319 |             -- Get Java's version
 | 
|---|
| 320 |             set javaVersionCmd to ((javaPath & " -version 2>&1") as string) -- Java's version output is sometimes on stderr, not stdout :-/
 | 
|---|
| 321 |             set javaVersionText to do shell script javaVersionCmd without altering line endings
 | 
|---|
| 322 |             if (javaVersionText is "") then
 | 
|---|
| 323 |                 return 1
 | 
|---|
| 324 |             end if
 | 
|---|
| 325 | 
 | 
|---|
| 326 |             -- Isolate version number from output with format:
 | 
|---|
| 327 |             (* java version "1.7.0_17"
 | 
|---|
| 328 |              Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
 | 
|---|
| 329 |              Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode) *)
 | 
|---|
| 330 |             -- Get first line
 | 
|---|
| 331 |             set AppleScript's text item delimiters to "
 | 
|---|
| 332 | "
 | 
|---|
| 333 |             set javaVersionText to first text item of javaVersionText
 | 
|---|
| 334 |             -- Get text after first quote mark
 | 
|---|
| 335 |             set AppleScript's text item delimiters to "\""
 | 
|---|
| 336 |             set javaVersionText to second text item of javaVersionText
 | 
|---|
| 337 |             -- Get first and second version numbers, third doesn't matter
 | 
|---|
| 338 |             set AppleScript's text item delimiters to "."
 | 
|---|
| 339 |             set versionMajor to first text item of javaVersionText
 | 
|---|
| 340 |             set versionMinor to second text item of javaVersionText
 | 
|---|
| 341 |             set AppleScript's text item delimiters to origDelimiters
 | 
|---|
| 342 |             -- Inform user if Java is too old
 | 
|---|
| 343 |             if (versionMajor ≥ gNeedsJavaVersionMajor) then
 | 
|---|
| 344 |                 if (versionMinor < gNeedsJavaVersionMinor) then
 | 
|---|
| 345 |                     display dialog (("Sorry, Java v" & gNeedsJavaVersionMajor & "." & gNeedsJavaVersionMinor & " is required; found v" & versionMajor & "." & versionMinor & " instead.") as string) buttons {"OK"} default button 1 with title "AE Setup"
 | 
|---|
| 346 |                     return 1
 | 
|---|
| 347 |                 end if
 | 
|---|
| 348 |             else
 | 
|---|
| 349 |                 display dialog (("Sorry, Java v" & gNeedsJavaVersionMajor & "." & gNeedsJavaVersionMinor & " is required; found v" & versionMajor & "." & versionMinor & " instead.") as string) buttons {"OK"} default button 1 with title "AE Setup"
 | 
|---|
| 350 |                 return 1
 | 
|---|
| 351 |             end if
 | 
|---|
| 352 |         end tell
 | 
|---|
| 353 |         return 0
 | 
|---|
| 354 |     end verify_Java
 | 
|---|
| 355 |     
 | 
|---|
| 356 |     -- Drops an applet into the new "AE/" folder and runs it;
 | 
|---|
| 357 |     -- the applet will try to run the AEI, but if it's not found,
 | 
|---|
| 358 |     -- it runs the AEI Updater, which is what we want to happen
 | 
|---|
| 359 |     -- so that the AEI can be installed.
 | 
|---|
| 360 |     -- Returns 0 if this is a valid target for the AE installation,
 | 
|---|
| 361 |     -- 1 if the applet cannot be dropped, and
 | 
|---|
| 362 |     -- 2 if the applet cannot be run
 | 
|---|
| 363 |     -- Called by clickStart_()
 | 
|---|
| 364 |     on run_AEIU(pathToOni)
 | 
|---|
| 365 |         tell application "Finder"
 | 
|---|
| 366 |             -- Copy applet to AE/ that opens AEI or AEIU if AEI is not around
 | 
|---|
| 367 |             set RAEI to POSIX file (pathToMe & "/Run AE Installer.app") as alias
 | 
|---|
| 368 |             set pathToAE to alias ((pathToOni & "AE") as string)
 | 
|---|
| 369 |             try
 | 
|---|
| 370 |                 duplicate RAEI to pathToAE
 | 
|---|
| 371 |             on error copyError
 | 
|---|
| 372 |                 return 1
 | 
|---|
| 373 |             end try
 | 
|---|
| 374 |             set RAEI to ((pathToAE as string) & "Run AE Installer.app")
 | 
|---|
| 375 |             try
 | 
|---|
| 376 |                 open RAEI
 | 
|---|
| 377 |             on error runError
 | 
|---|
| 378 |                 return 2
 | 
|---|
| 379 |             end try
 | 
|---|
| 380 |         end tell
 | 
|---|
| 381 |         return 0
 | 
|---|
| 382 |     end run_AEIU
 | 
|---|
| 383 |     
 | 
|---|
| 384 |     on play_error_sound()
 | 
|---|
| 385 |         tell sosumi
 | 
|---|
| 386 |             play()
 | 
|---|
| 387 |         end tell
 | 
|---|
| 388 |     end play_error_sound
 | 
|---|
| 389 | end script
 | 
|---|