You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2018/06/20 06:27:51 UTC
[3/4] git commit: [flex-utilities] [refs/heads/develop] - teach
32-bit Windows installer to download and launch 64-bit Installer
teach 32-bit Windows installer to download and launch 64-bit Installer
Project: http://git-wip-us.apache.org/repos/asf/flex-utilities/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-utilities/commit/e05c9bd8
Tree: http://git-wip-us.apache.org/repos/asf/flex-utilities/tree/e05c9bd8
Diff: http://git-wip-us.apache.org/repos/asf/flex-utilities/diff/e05c9bd8
Branch: refs/heads/develop
Commit: e05c9bd8fed1324014868fff1012b0ade8587223
Parents: 5cbbc47
Author: Alex Harui <ah...@apache.org>
Authored: Tue Jun 19 23:25:39 2018 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue Jun 19 23:25:39 2018 -0700
----------------------------------------------------------------------
.../installer/src/InstallApacheFlex.mxml | 107 ++++++++++++++++++-
1 file changed, 105 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/e05c9bd8/flex-installer/installer/src/InstallApacheFlex.mxml
----------------------------------------------------------------------
diff --git a/flex-installer/installer/src/InstallApacheFlex.mxml b/flex-installer/installer/src/InstallApacheFlex.mxml
index e353f86..2b248dd 100644
--- a/flex-installer/installer/src/InstallApacheFlex.mxml
+++ b/flex-installer/installer/src/InstallApacheFlex.mxml
@@ -102,6 +102,7 @@ variables are not required because the locations of these pieces are known.
import flash.globalization.LocaleID;
import flash.globalization.StringTools;
+ import mx.controls.Alert;
import mx.collections.ArrayCollection;
import mx.core.IFlexDisplayObject;
import mx.events.FlexEvent;
@@ -158,6 +159,8 @@ variables are not required because the locations of these pieces are known.
private var cleanedUp:Boolean;
+ private var win64:Boolean;
+
private var _mirrorURLCGI:String;
private var _useMirror:Boolean = true;
private var _latestVersion:String;
@@ -207,6 +210,8 @@ variables are not required because the locations of these pieces are known.
[Bindable]
private var APACHE_FLEX_BIN_DISTRO_VERSION_DISPLAY:String = "";
+ private var APACHE_FLEX_INSTALLER_URL:String;
+
/**
* Adobe AIR SDK
*
@@ -407,6 +412,10 @@ variables are not required because the locations of these pieces are known.
{
installOverride = s.substring(9);
}
+ if (s.indexOf("-64-bit=") == 0)
+ {
+ APACHE_FLEX_INSTALLER_URL = s.substring(8);
+ }
if (s.indexOf("-steps=") == 0)
{
stepsOverride = s.substring(7);
@@ -1044,6 +1053,9 @@ variables are not required because the locations of these pieces are known.
RIDEAU_FILE = data.fontswf.rideau.@file.toString();
RIDEAU_URL = data.fontswf.rideau.@path.toString();
+ var installer:String = data.installer64.toString();
+ if (installer.length > 0)
+ APACHE_FLEX_INSTALLER_URL = installer;
return keepGoing;
}
@@ -1144,11 +1156,95 @@ variables are not required because the locations of these pieces are known.
protected function main():void
{
-
- if (shouldUpdate())
+ if (!win64 && shouldUpdate())
{
doUpdate();
}
+ else if (_os.os.indexOf("win") != -1 && !win64)
+ {
+ //32-bit Windows. Try to use 64-bit version
+ var app:File = new File(File.applicationStorageDirectory.nativePath + File.separator + "Win64" + File.separator + "Apache Flex SDK Installer.exe");
+ if (!app.exists)
+ {
+ Alert.show("This is the 32-bit Installer. It will automatically download and upgrade to the 64-bit Installer",
+ "Upgrade to 64-bit Installer", Alert.OK, null, get64BitInstaller);
+ }
+ else
+ launch64();
+ }
+
+ }
+
+ protected function get64BitInstaller(event:Event):void
+ {
+ var path64:String;
+ if (APACHE_FLEX_INSTALLER_URL.indexOf("://") == -1)
+ path64 = useMirrorPath(_mirrorURLUtil.mirrorURL) + APACHE_FLEX_INSTALLER_URL;
+ else
+ path64 = APACHE_FLEX_INSTALLER_URL;
+ copyOrDownload(path64, handle64BitInstaller, null, handle64BitInstallerError);
+ }
+
+ protected function handle64BitInstaller(event:Event):void
+ {
+ try
+ {
+ var app:File = new File(File.applicationStorageDirectory.nativePath + File.separator + "Win64Installer.zip");
+ writeFileToDirectory(app, event.target.data);
+ _flexHomeDir = new File(File.applicationStorageDirectory.nativePath + File.separator + "Win64");
+ unzip(app, handle64BitUnzipComplete, handle64BitUnzipError);
+ }
+ catch (e:Error)
+ {
+ log("Unable to save" + app.nativePath);
+ abortInstallation("handle64BitInstaller " + e.message);
+ }
+
+ log("downloaded " + APACHE_FLEX_INSTALLER_URL);
+ }
+
+ protected function handle64BitInstallerError(event:Event):void
+ {
+ log("Unable to install " + APACHE_FLEX_INSTALLER_URL);
+ abortInstallation("Unable to install" + APACHE_FLEX_INSTALLER_URL);
+ }
+
+ private function launch64():void
+ {
+ Alert.show("This is the 32-bit Installer. It will close and launch the 64-bit Installer",
+ "Launch 64-bit Installer", Alert.OK, null, actuallyLaunch64);
+ }
+
+ private function actuallyLaunch64(event:Event):void
+ {
+ try
+ {
+ var app:File = new File(File.applicationStorageDirectory.nativePath + File.separator + "Win64" + File.separator + "Apache Flex SDK Installer.exe");
+ var startupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
+ var args:Vector.<String> = new Vector.<String>();
+
+ startupInfo.executable = app;
+ startupInfo.arguments = args;
+
+ var process:NativeProcess = new NativeProcess();
+ process.start(startupInfo);
+ NativeApplication.nativeApplication.exit();
+ }
+ catch (e:Error)
+ {
+ log("Unable to launch" + app.nativePath);
+ abortInstallation("launch 64 " + e.message);
+ }
+ }
+
+ protected function handle64BitUnzipComplete(event:Event):void
+ {
+ launch64();
+ }
+
+ protected function handle64BitUnzipError(error:ErrorEvent = null):void
+ {
+ abortInstallation("Unable to unzip 64-bit Installer " + error.toString());
}
private function logVersion():void
@@ -1159,9 +1255,16 @@ variables are not required because the locations of these pieces are known.
var applicationDescriptor:XML = NativeApplication.nativeApplication.applicationDescriptor;
var xmlns:Namespace = new Namespace(applicationDescriptor.namespace());
installerVersion = applicationDescriptor.xmlns::versionNumber.toString();
+ var arch:String = applicationDescriptor.xmlns::architecture.toString();
// Log the Installer version to help with any support issues that arise.
+ if (_os.os.indexOf("win") != -1)
+ {
+ log("Available Memory: " + System.totalMemory + " (" + arch + "-bit)", 0);
+ win64 = (arch == "64");
+ }
log("Installer version " + installerVersion + " (" + _os.os + ")", 0);
+ log("Installer path: " + File.applicationDirectory.nativePath, 0);
loggedVersion = true;
}
}