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 2015/06/15 08:31:00 UTC

[26/48] git commit: [flex-utilities] [refs/heads/develop] - move installer into flex-installer

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/cda78507/flex-installer/installer/src/org/apache/flex/packageflexsdk/model/InstallerComponentVO.as
----------------------------------------------------------------------
diff --git a/flex-installer/installer/src/org/apache/flex/packageflexsdk/model/InstallerComponentVO.as b/flex-installer/installer/src/org/apache/flex/packageflexsdk/model/InstallerComponentVO.as
new file mode 100644
index 0000000..540afb7
--- /dev/null
+++ b/flex-installer/installer/src/org/apache/flex/packageflexsdk/model/InstallerComponentVO.as
@@ -0,0 +1,60 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package org.apache.flex.packageflexsdk.model
+{
+	[Bindable]
+	public class InstallerComponentVO
+	{
+		public var label:String;
+		public var message:String;
+		public var required:Boolean;
+		public var selected:Boolean;
+		public var installed:Boolean=false;
+		public var aborted:Boolean=false;
+		public var answered:Boolean = false;
+		public var licenseName:String;
+		public var licenseURL:String;
+		public var key:String;
+		
+		public function InstallerComponentVO(label:String,
+											 message:String,
+											 licenseName:String,
+											 licenseURL:String,
+											 key:String,
+											 required:Boolean,
+											 selected:Boolean=false,
+											 installed:Boolean=false,
+											 aborted:Boolean=false,
+											 answered:Boolean=false
+											)
+		{
+			this.label = label;
+			this.message = message;
+			this.key = key;
+			this.required = required;
+			this.selected = selected;
+			this.installed = installed;
+			this.aborted = aborted;
+			this.answered = answered;
+			this.licenseName = licenseName;
+			this.licenseURL = licenseURL;
+		}
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/cda78507/flex-installer/installer/src/org/apache/flex/packageflexsdk/model/OS.as
----------------------------------------------------------------------
diff --git a/flex-installer/installer/src/org/apache/flex/packageflexsdk/model/OS.as b/flex-installer/installer/src/org/apache/flex/packageflexsdk/model/OS.as
new file mode 100644
index 0000000..ccdde59
--- /dev/null
+++ b/flex-installer/installer/src/org/apache/flex/packageflexsdk/model/OS.as
@@ -0,0 +1,67 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package org.apache.flex.packageflexsdk.model
+{
+	import flash.system.Capabilities;
+	
+	import org.apache.flex.packageflexsdk.resource.ViewResourceConstants;
+	
+	public class OS
+	{
+		public const WINDOWS:String = "windows";
+		public const MAC:String = "mac";
+		public const LINUX:String = "linux";
+		
+		public var os:String = null;
+		
+		public function OS()
+		{
+			setOS();
+		}
+		
+		public function isWindows():Boolean {
+			return os == WINDOWS;
+		}
+		
+		public function isMac():Boolean {
+			return os == MAC;
+		}
+		
+		public function isLinux():Boolean {
+			return os == LINUX;
+		}
+		
+		public function isOther():Boolean {
+			return !(isWindows() || isMac() || isLinux());
+		}
+		
+		private function setOS():void {
+			var operatingSystem:String = Capabilities.os;
+			
+			if (operatingSystem.search("Mac OS") != -1) {
+				os = MAC;
+			} else if (operatingSystem.search("Windows") != -1) {
+				os = WINDOWS;
+			} else if (operatingSystem.search("Linux") != -1) {
+				os = LINUX;
+			}
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/cda78507/flex-installer/installer/src/org/apache/flex/packageflexsdk/resource/ViewResourceConstants.as
----------------------------------------------------------------------
diff --git a/flex-installer/installer/src/org/apache/flex/packageflexsdk/resource/ViewResourceConstants.as b/flex-installer/installer/src/org/apache/flex/packageflexsdk/resource/ViewResourceConstants.as
new file mode 100644
index 0000000..8743ac1
--- /dev/null
+++ b/flex-installer/installer/src/org/apache/flex/packageflexsdk/resource/ViewResourceConstants.as
@@ -0,0 +1,222 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package org.apache.flex.packageflexsdk.resource
+{
+
+import flash.events.Event;
+import flash.events.EventDispatcher;
+import flash.events.IEventDispatcher;
+import flash.utils.Dictionary;
+import flash.utils.Proxy;
+import flash.utils.flash_proxy;
+
+import mx.collections.ArrayCollection;
+import mx.events.PropertyChangeEvent;
+import mx.resources.IResourceManager;
+import mx.resources.ResourceManager;
+
+[Bindable(event="propertyChange")]
+public dynamic class ViewResourceConstants extends Proxy implements IEventDispatcher
+{
+	
+	//--------------------------------------------------------------------------
+	//
+	//    Class constants
+	//
+	//--------------------------------------------------------------------------
+	
+	public static const BUNDLE_NAME:String = "resourceStrings";
+	
+	public static const DEFAULT_LANGUAGE:String = "en_US";
+	
+	//--------------------------------------------------------------------------
+	//
+	//    Class properties
+	//
+	//--------------------------------------------------------------------------
+	
+	//----------------------------------
+	//    instance
+	//----------------------------------
+	
+	private static var _instance:ViewResourceConstants;
+	
+	public static function get instance():ViewResourceConstants
+	{
+		if (!_instance)
+			_instance = new ViewResourceConstants(new SE());
+		
+		return _instance;
+	}
+		
+	//--------------------------------------------------------------------------
+	//
+	//    Constructor
+	//
+	//--------------------------------------------------------------------------
+	
+	public function ViewResourceConstants(se:SE) 
+	{
+		_eventDispatcher = new EventDispatcher();
+		
+		//RuntimeLocale.instance.installResources();
+	}
+		
+	//--------------------------------------------------------------------------
+	//
+	//    Variables
+	//
+	//--------------------------------------------------------------------------
+	
+	private var _content:Dictionary;
+	
+	private var _eventDispatcher:EventDispatcher;
+	
+	private var _resourceManager:IResourceManager = ResourceManager.getInstance();
+	
+	//--------------------------------------------------------------------------
+	//
+	//    Methods
+	//
+	//--------------------------------------------------------------------------
+	
+	//----------------------------------
+	//    addEventListener
+	//----------------------------------
+	
+	public function addEventListener(type:String, listener:Function, 
+									 useCapture:Boolean = false, priority:int = 0, 
+									 useWeakReference:Boolean = false):void
+	{
+		_eventDispatcher.addEventListener(type, listener, useCapture, priority, useWeakReference);
+	}
+	
+	//----------------------------------
+	//    dispatchEvent
+	//----------------------------------
+	
+	public function dispatchEvent(event:Event):Boolean
+	{
+		return _eventDispatcher.dispatchEvent(event);
+	}
+	
+    //----------------------------------
+    //    hasProperty
+    //----------------------------------
+    
+    override flash_proxy function hasProperty(name:*):Boolean
+    {
+        return _content[name] != null;
+    }
+    
+	//----------------------------------
+	//    getProperty
+	//----------------------------------
+	
+	override flash_proxy function getProperty(name:*):*
+	{
+		if (!_content[name])
+		{
+			var errorString:String = "The key was not found in the resource strings (key: '" + name + "').";
+			
+			trace(errorString);
+			
+			throw new Error(errorString);
+		}
+		
+		return _content[name];
+	}
+	
+    //----------------------------------
+    //    setProperty
+    //----------------------------------
+    
+    override flash_proxy function setProperty(name:*, value:*):void
+    {
+        _content[name] = value;    
+    }
+    
+	//----------------------------------
+	//    hasEventListener
+	//----------------------------------
+	
+	public function hasEventListener(type:String):Boolean
+	{
+		return _eventDispatcher.hasEventListener(type);
+	}
+	
+	//----------------------------------
+	//    removeEventListener
+	//----------------------------------
+	
+	public function removeEventListener(type:String, listener:Function, 
+										useCapture:Boolean = false):void
+	{
+		_eventDispatcher.removeEventListener(type, listener, useCapture);
+	}
+	
+	//----------------------------------
+	//    update
+	//----------------------------------
+	
+	public function update(event:Event = null):void
+	{
+		_content = new Dictionary();
+		
+		var messageStringsContentDefault:Object;
+		var messageStringsContentLocalized:Object;
+		
+		var n:int = _resourceManager.localeChain.length;
+		messageStringsContentDefault = 
+				_resourceManager.getResourceBundle(_resourceManager.localeChain[n - 1], BUNDLE_NAME).content;
+		
+		if (n > 1)
+			messageStringsContentLocalized = 
+				_resourceManager.getResourceBundle(_resourceManager.localeChain[0], BUNDLE_NAME).content;
+		
+		var useLocalizedString:Boolean;
+		var event:Event;
+		for (var key:String in messageStringsContentDefault)
+		{
+			useLocalizedString = messageStringsContentLocalized && 
+				messageStringsContentLocalized[key] &&
+				messageStringsContentLocalized[key] != "";
+			
+			_content[key] = (useLocalizedString) ? 
+				messageStringsContentLocalized[key] : messageStringsContentDefault[key];
+			
+			event = PropertyChangeEvent.createUpdateEvent(this, key, "", _content[key]);
+			dispatchEvent(event);
+		}
+	}
+	
+	//----------------------------------
+	//    willTrigger
+	//----------------------------------
+	
+	public function willTrigger(type:String):Boolean
+	{
+		return _eventDispatcher.willTrigger(type);
+	}
+		
+}
+}
+
+class SE {}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/cda78507/flex-installer/installer/src/org/apache/flex/packageflexsdk/util/ApacheURLLoader.as
----------------------------------------------------------------------
diff --git a/flex-installer/installer/src/org/apache/flex/packageflexsdk/util/ApacheURLLoader.as b/flex-installer/installer/src/org/apache/flex/packageflexsdk/util/ApacheURLLoader.as
new file mode 100644
index 0000000..07a85c4
--- /dev/null
+++ b/flex-installer/installer/src/org/apache/flex/packageflexsdk/util/ApacheURLLoader.as
@@ -0,0 +1,127 @@
+/**
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ */
+
+/**
+ *
+ * This is a really hackey way to intercept all the HTTPS calls and send them via
+ * as3httpdclient instead of the browser-captured URLLoader.  Don't follow this
+ * example -- refactor your application to avoid having to do this.
+ *
+ */
+package org.apache.flex.packageflexsdk.util
+{
+    import com.adobe.net.URI;
+
+    import flash.events.ErrorEvent;
+
+    import flash.events.Event;
+    import flash.events.HTTPStatusEvent;
+    import flash.events.IOErrorEvent;
+    import flash.events.SecurityErrorEvent;
+    import flash.net.URLLoader;
+    import flash.net.URLRequest;
+    import flash.utils.ByteArray;
+
+    import org.httpclient.HttpClient;
+    import org.httpclient.events.HttpDataListener;
+    import org.httpclient.events.HttpRequestEvent;
+    import org.httpclient.events.HttpResponseEvent;
+    import org.httpclient.events.HttpStatusEvent;
+
+    public class ApacheURLLoader extends URLLoader
+    {
+
+        private var httpsData:ByteArray = new ByteArray();
+
+        public function ApacheURLLoader(request:URLRequest = null)
+        {
+            super(request);
+        }
+
+        override public function load(request:URLRequest):void
+        {
+            if (request.url.indexOf("https://") != 0)
+            {
+                super.load(request);
+            }
+            else
+            {
+                var httpsClient:HttpClient = new HttpClient();
+                var httpsClientListener:HttpDataListener = new HttpDataListener();
+
+                httpsClientListener.onConnect = function(event:HttpRequestEvent):void
+                {
+                    var e:Event = new Event(Event.OPEN);
+                    dispatchEvent(e);
+                };
+
+                httpsClientListener.onComplete = function(event:HttpResponseEvent):void
+                {
+                    var e:HTTPStatusEvent = new HTTPStatusEvent(HTTPStatusEvent.HTTP_RESPONSE_STATUS);
+                    // we are unable to emulate the full event since the built-in event handlers for status and
+                    // many others are marked as private on the set functions.
+                    dispatchEvent(e);
+                };
+
+                httpsClientListener.onDataComplete = function(event:HttpResponseEvent, incomingData:ByteArray):void
+                {
+                    data = new ByteArray();
+                    data.writeBytes(incomingData);
+                    data.position=0;
+                    var e:Event = new Event(Event.COMPLETE);
+                    dispatchEvent(e);
+                };
+
+                httpsClientListener.onStatus = function(event:HttpStatusEvent):void
+                {
+                    var e:HTTPStatusEvent = new HTTPStatusEvent(HTTPStatusEvent.HTTP_STATUS);
+                    // we are unable to emulate the full event since the built-in event handlers for status and
+                    // many others are marked as private on the set functions.
+                    dispatchEvent(e);
+                };
+
+                httpsClientListener.onError = function(event:ErrorEvent):void
+                {
+                    var e:IOErrorEvent = new IOErrorEvent(IOErrorEvent.NETWORK_ERROR);
+                    e.text = event.text;
+                    dispatchEvent(e);
+                };
+
+                // ProgressEvent is not available in this manner.
+                // We can't emulate the HTTP Status Event.  It is internal to the Flash Player and won't
+                //    let us override the status item.
+
+                this.httpsData = new ByteArray();
+                httpsClient.get(new URI(request.url), httpsClientListener);
+            }
+
+        }
+
+        private function httpsSecurityError(event:SecurityErrorEvent):void
+        {
+            dispatchEvent(event.clone());
+        }
+
+        private function httpsIOError(event:IOErrorEvent):void
+        {
+            dispatchEvent(event.clone());
+        }
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/cda78507/flex-installer/installer/src/org/apache/flex/packageflexsdk/util/CalcButtonWidth.as
----------------------------------------------------------------------
diff --git a/flex-installer/installer/src/org/apache/flex/packageflexsdk/util/CalcButtonWidth.as b/flex-installer/installer/src/org/apache/flex/packageflexsdk/util/CalcButtonWidth.as
new file mode 100644
index 0000000..bf0a371
--- /dev/null
+++ b/flex-installer/installer/src/org/apache/flex/packageflexsdk/util/CalcButtonWidth.as
@@ -0,0 +1,61 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package org.apache.flex.packageflexsdk.util
+{
+	import flash.events.Event;
+	
+	import spark.components.Button;
+
+	public class CalcButtonWidth
+	{
+		protected static var PADDING:int = 20;
+		
+		protected var hiddenButton:Button;
+		
+		public function CalcButtonWidth(hiddenButton:Button)
+		{
+			this.hiddenButton = hiddenButton;
+		}
+		
+		public function buttonWidth(button:Button):int {
+			var width:int = 0;
+			
+			hiddenButton.label = button.label;
+			hiddenButton.validateNow();
+			width = hiddenButton.measuredWidth + PADDING;
+			
+			if (button.width != width) {
+				button.width = width;
+			}
+			
+			return width;
+		}
+		
+		public function maxButtonWidth(buttons:Array):int {
+			var width:int = 0;
+			
+			for each (var button:Button in buttons) {
+				width = Math.max(width, buttonWidth(button));
+			}
+			
+			return width;
+		}
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/cda78507/flex-installer/installer/src/org/apache/flex/packageflexsdk/util/DownloadUtil.as
----------------------------------------------------------------------
diff --git a/flex-installer/installer/src/org/apache/flex/packageflexsdk/util/DownloadUtil.as b/flex-installer/installer/src/org/apache/flex/packageflexsdk/util/DownloadUtil.as
new file mode 100644
index 0000000..2a2602c
--- /dev/null
+++ b/flex-installer/installer/src/org/apache/flex/packageflexsdk/util/DownloadUtil.as
@@ -0,0 +1,94 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package org.apache.flex.packageflexsdk.util
+{
+	import flash.desktop.NativeProcess;
+	import flash.desktop.NativeProcessStartupInfo;
+	import flash.events.ErrorEvent;
+	import flash.events.Event;
+	import flash.events.IOErrorEvent;
+	import flash.events.NativeProcessExitEvent;
+	import flash.events.ProgressEvent;
+	import flash.filesystem.File;
+	import flash.net.URLLoader;
+	import flash.net.URLLoaderDataFormat;
+	import flash.net.URLRequest;
+	import flash.system.Capabilities;
+
+	public class DownloadUtil
+	{
+		public static function download(url:String, completeFunction:Function, errorFunction:Function=null, progressFunction:Function=null):void
+		{
+			var loader:URLLoader = new URLLoader();
+			var req:URLRequest = new URLRequest(url);
+			req.idleTimeout = 60000;
+			
+			loader.dataFormat = URLLoaderDataFormat.BINARY; 
+			loader.addEventListener(Event.COMPLETE, completeFunction,false,0,true);
+			
+			if (errorFunction != null)
+			{
+				loader.addEventListener(ErrorEvent.ERROR,errorFunction,false,0,true);
+				loader.addEventListener(IOErrorEvent.IO_ERROR,errorFunction,false,0,true);
+			}
+			if(progressFunction != null)
+			{
+				loader.addEventListener(ProgressEvent.PROGRESS, progressFunction,false,0,true);
+			}
+			
+			loader.load(req);
+		}
+		
+		public static function invokeNativeProcess(args:Vector.<String>):void
+		{
+			var os:String = Capabilities.os.toLowerCase();
+			var info:NativeProcessStartupInfo = new NativeProcessStartupInfo();
+			var cmdExe:File = (os.indexOf("win") > -1) ? new File("C:\\Windows\\System32\\cmd.exe") : null;
+			if (cmdExe && cmdExe.exists)
+			{
+				info.executable = cmdExe;
+				info.arguments = args;
+			}
+			var installProcess:NativeProcess = new NativeProcess();
+			installProcess.start(info);
+		}
+		
+		public static function executeFile(file:File,completeFunction:Function=null):void
+		{
+			var os:String = Capabilities.os.toLowerCase();
+			var info:NativeProcessStartupInfo = new NativeProcessStartupInfo();
+			info.executable = file;
+			var process:NativeProcess = new NativeProcess();
+			if(completeFunction != null)
+			{
+				process.addEventListener(NativeProcessExitEvent.EXIT, completeFunction,false,0,true);
+			}
+			process.addEventListener(NativeProcessExitEvent.EXIT, handleNativeProcessComplete,false,0,true);
+			process.start(info);
+		}
+		
+		protected static function handleNativeProcessComplete(event:NativeProcessExitEvent):void
+		{
+			var process:NativeProcess = NativeProcess(event.target);
+			process.closeInput();
+			process.exit(true);
+		}
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/cda78507/flex-installer/installer/src/org/apache/flex/packageflexsdk/util/MD5CompareUtil.as
----------------------------------------------------------------------
diff --git a/flex-installer/installer/src/org/apache/flex/packageflexsdk/util/MD5CompareUtil.as b/flex-installer/installer/src/org/apache/flex/packageflexsdk/util/MD5CompareUtil.as
new file mode 100644
index 0000000..2dc601b
--- /dev/null
+++ b/flex-installer/installer/src/org/apache/flex/packageflexsdk/util/MD5CompareUtil.as
@@ -0,0 +1,264 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package org.apache.flex.packageflexsdk.util
+{
+
+import flash.events.Event;
+import flash.events.EventDispatcher;
+import flash.events.IOErrorEvent;
+import flash.events.OutputProgressEvent;
+import flash.events.ProgressEvent;
+import flash.filesystem.File;
+import flash.filesystem.FileMode;
+import flash.filesystem.FileStream;
+import flash.net.URLLoader;
+import flash.net.URLLoaderDataFormat;
+import flash.net.URLRequest;
+import flash.utils.ByteArray;
+
+import org.apache.flex.crypto.MD5Stream;
+import org.apache.flex.utilities.common.Constants;
+
+[Event(name="progress", type="flash.events.ProgressEvent")]
+
+public class MD5CompareUtil extends EventDispatcher
+{
+
+	//--------------------------------------------------------------------------
+	//
+	//    Class constants
+	//
+	//--------------------------------------------------------------------------
+	
+	public static const MD5_DOMAIN:String = "https://www.apache.org/dist/";
+	
+	public static const MD5_POSTFIX:String = ".md5";
+	
+    public static const CHUNK_SIZE:int = 2 * 1024 * 1024;
+    
+	//--------------------------------------------------------------------------
+	//
+	//    Class properties
+	//
+	//--------------------------------------------------------------------------
+	
+	//----------------------------------
+	//    instance
+	//----------------------------------
+	
+	private static var _instance:MD5CompareUtil;
+	
+	public static function get instance():MD5CompareUtil
+	{
+		if (!_instance)
+			_instance = new MD5CompareUtil(new SE());
+		
+		return _instance;
+	}
+	
+	//--------------------------------------------------------------------------
+	//
+	//    Constructor
+	//
+	//--------------------------------------------------------------------------
+	
+	public function MD5CompareUtil(se:SE) {}
+		
+	//--------------------------------------------------------------------------
+	//
+	//    Variables
+	//
+	//--------------------------------------------------------------------------
+	
+	private var _callback:Function;
+	
+	private var _file:File;
+	
+	private var _fileStream:FileStream;
+	
+	private var _remoteMD5Value:String;
+	
+	private var _md5Stream:MD5Stream;
+	
+	private var _urlLoader:URLLoader;
+	
+	//--------------------------------------------------------------------------
+	//
+	//    Properties
+	//
+	//--------------------------------------------------------------------------
+	
+	//----------------------------------
+	//    errorMessage
+	//----------------------------------
+	
+	private var _errorMessage:String = "";
+
+	public function get errorMessage():String
+	{
+		return _errorMessage;
+	}
+
+	//----------------------------------
+	//    errorOccurred
+	//----------------------------------
+	
+	private var _errorOccurred:Boolean;
+
+	public function get errorOccurred():Boolean
+	{
+		return _errorOccurred;
+	}
+
+	//----------------------------------
+	//    fileIsVerified
+	//----------------------------------
+	
+	private var _fileIsVerified:Boolean;
+
+	public function get fileIsVerified():Boolean
+	{
+		return _fileIsVerified;
+	}
+	
+	private var _validMD5:Boolean;
+
+	public function get validMD5():Boolean
+	{
+		return _validMD5;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//    Methods
+	//
+	//--------------------------------------------------------------------------
+	
+	//----------------------------------
+	//    compareSignatures
+	//----------------------------------
+	
+	private function compareSignatures():void
+	{
+		_md5Stream = new MD5Stream();
+		
+		_fileStream = new FileStream();
+		_fileStream.readAhead = CHUNK_SIZE;
+		_fileStream.addEventListener(Event.COMPLETE, fileStreamOpenHandler);
+		_fileStream.addEventListener(ProgressEvent.PROGRESS, fileStreamOpenHandler);
+		_fileStream.addEventListener(OutputProgressEvent.OUTPUT_PROGRESS, fileStreamOpenHandler);
+		_fileStream.openAsync(_file, FileMode.READ); 
+	}
+	
+	//----------------------------------
+	//    fileStreamOpenHandler
+	//----------------------------------
+	
+	private function fileStreamOpenHandler(event:Event):void
+	{
+		if (event is ProgressEvent)
+		{
+			_md5Stream.update(_fileStream, Math.floor(_fileStream.bytesAvailable / 64) * 64);
+			
+			dispatchEvent(event.clone());
+		}
+		else
+		{
+			if (event.type == Event.COMPLETE)
+			{
+				_fileIsVerified = (_md5Stream.complete(_fileStream, _file.size) == _remoteMD5Value);
+                _fileStream.close();
+				
+				removeEventListeners();
+				_callback();
+			}
+		}
+	}
+	
+	//----------------------------------
+	//    urlLoaderResultHandler
+	//----------------------------------
+	
+	private function urlLoaderResultHandler(event:Event):void
+	{
+		_errorOccurred = event is IOErrorEvent;
+		
+		if (!_errorOccurred)
+		{
+			_remoteMD5Value = String(_urlLoader.data);
+			
+			/** 
+			 * We need only the first line; split for both Unix and Windows 
+			 * style line delimiters
+			 */
+			_remoteMD5Value = _remoteMD5Value.split("\n")[0];
+			_remoteMD5Value = _remoteMD5Value.split("\r")[0];
+			
+			// Valid MD5 hashes are 32 hexidecimal characters
+			_validMD5 = (_remoteMD5Value.search(new RegExp("[a-fA-F0-9]{32}")) == 0);
+
+			compareSignatures();
+		}
+		else
+		{
+			_errorMessage = String(IOErrorEvent(event).text);
+		}
+	}
+	
+	//----------------------------------
+	//    verifyMD5
+	//----------------------------------
+	
+	public function verifyMD5(localSDKZipFile:File, remoteSDKZipPath:String, 
+							  onVerificationComplete:Function):void
+	{
+		_file = localSDKZipFile;
+		
+		_callback = onVerificationComplete;
+		
+		_urlLoader = new URLLoader();
+		_urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
+		_urlLoader.addEventListener(Event.COMPLETE, urlLoaderResultHandler);
+		_urlLoader.addEventListener(IOErrorEvent.IO_ERROR, urlLoaderResultHandler);
+		if (remoteSDKZipPath.substr(0, Constants.URL_PREFIX.length) != Constants.URL_PREFIX &&
+			remoteSDKZipPath.substr(0, Constants.FILE_PREFIX.length) != Constants.FILE_PREFIX &&
+			remoteSDKZipPath.search("http") != 0)
+		{
+			_urlLoader.load(new URLRequest(MD5_DOMAIN + remoteSDKZipPath + MD5_POSTFIX));
+		}
+		else
+		{
+			_urlLoader.load(new URLRequest(remoteSDKZipPath + MD5_POSTFIX));
+		}
+	}
+	
+	private function removeEventListeners():void
+	{
+		_fileStream.removeEventListener(Event.COMPLETE, fileStreamOpenHandler);
+		_fileStream.removeEventListener(ProgressEvent.PROGRESS, fileStreamOpenHandler);
+		_fileStream.removeEventListener(OutputProgressEvent.OUTPUT_PROGRESS, fileStreamOpenHandler);
+		_urlLoader.removeEventListener(Event.COMPLETE, urlLoaderResultHandler);
+		_urlLoader.removeEventListener(IOErrorEvent.IO_ERROR, urlLoaderResultHandler);
+	}
+	
+}
+}
+
+class SE {}

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/cda78507/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/UpdaterDialog.mxml
----------------------------------------------------------------------
diff --git a/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/UpdaterDialog.mxml b/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/UpdaterDialog.mxml
new file mode 100644
index 0000000..b055286
--- /dev/null
+++ b/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/UpdaterDialog.mxml
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<s:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009" 
+			   xmlns:s="library://ns.adobe.com/flex/spark" 
+			   xmlns:mx="library://ns.adobe.com/flex/mx" 
+			   width="600" height="412" 
+			   title="Update available"
+			   xmlns:controls="ws.tink.spark.controls.*"
+			   skinClass="ws.tink.spark.skins.controls.UpdaterDialogSkin">
+	
+	<fx:Script><![CDATA[
+		
+		import air.update.events.DownloadErrorEvent;
+		import air.update.events.StatusUpdateEvent;
+		import air.update.events.UpdateEvent;
+		
+		import com.riaspace.nativeApplicationUpdater.utils.HdiutilHelper;
+		
+		import mx.controls.Alert;
+		import mx.core.Application;
+		import mx.core.FlexGlobals;
+		import mx.events.CloseEvent;
+		import mx.utils.DisplayUtil;
+		
+		import org.apache.flex.packageflexsdk.util.DownloadUtil;
+		import org.apache.flex.utilities.common.Constants;
+		import org.apache.flex.utilities.common.Tools;
+		
+		[Bindable] 
+		private var _newVersion:String;
+		
+		private var _fileWindows:File;
+		private var _fileMac:File;
+		
+		protected function handleYesBtnClick(event:MouseEvent):void
+		{
+			currentState = "downloading";
+			downloadUpdater();
+		}
+		
+		protected function downloadUpdater():void
+		{
+			var applicationExtension:String = Tools.getApplicationExtension();
+			var downloadCompleteHandler:Function =  
+				(applicationExtension == Constants.APPLICATION_EXTENSION_WIN) ? 
+				handleWindowsInstallerDownloadComplete : handleMacInstallerDownloadComplete;
+				
+			var main:Object = FlexGlobals.topLevelApplication;
+			
+			var url:String = 
+				main.installerAppPath + main.installerAppFileName + applicationExtension;
+			
+			DownloadUtil.download(url, downloadCompleteHandler, handleDownloadError, handleDownloadProgress);
+		}
+		
+		protected function handleWindowsInstallerDownloadComplete(event:Event):void
+		{
+			_fileWindows = File.createTempFile();
+			writeFileToDirectory(_fileWindows,event.target.data);
+			installFromFile(_fileWindows);
+		}
+		
+		protected function installFromFile(file:File):void
+		{
+			DownloadUtil.executeFile(file);
+			setTimeout(NativeApplication.nativeApplication.exit, 200);
+		}
+		
+		protected function handleMacInstallerDownloadComplete(event:Event):void
+		{
+			_fileMac = File.createTempFile();
+			writeFileToDirectory(_fileMac,event.target.data);
+			var hdiutilHelper:HdiutilHelper = new HdiutilHelper(_fileMac);
+			hdiutilHelper.addEventListener(Event.COMPLETE, handleHdiutilHelperComplete);
+			hdiutilHelper.addEventListener(ErrorEvent.ERROR, handleHdiutilHelperError);
+			hdiutilHelper.attach();
+		}
+		
+		private function handleHdiutilHelperComplete(event:Event):void
+		{
+			var hdiutilHelper:HdiutilHelper = event.target as HdiutilHelper;
+			hdiutilHelper.removeEventListener(Event.COMPLETE, handleHdiutilHelperComplete);
+			hdiutilHelper.removeEventListener(ErrorEvent.ERROR, handleHdiutilHelperError);
+			
+			var attachedDmg:File = new File(hdiutilHelper.mountPoint);
+			var files:Array = attachedDmg.getDirectoryListing();
+			
+			if (files.length == 1)
+			{
+				var installFileFolder:File = File(files[0]).resolvePath("Contents/MacOS");
+				var installFiles:Array = installFileFolder.getDirectoryListing();
+				
+				if (installFiles.length == 1)
+				{
+					installFromFile(installFiles[0]);
+				}
+				else
+					dispatchEvent(new ErrorEvent(ErrorEvent.ERROR, false, false, 
+						"Contents/MacOS folder should contain only 1 install file!"));
+			}
+			else
+			{
+				dispatchEvent(new ErrorEvent(ErrorEvent.ERROR, false, false, 
+					"Mounted volume should contain only 1 install file!"));
+			}
+		}
+		
+		private function handleHdiutilHelperError(event:ErrorEvent):void
+		{
+			var hdiutilHelper:HdiutilHelper = event.target as HdiutilHelper;
+			hdiutilHelper.removeEventListener(Event.COMPLETE, handleHdiutilHelperComplete);
+			hdiutilHelper.removeEventListener(ErrorEvent.ERROR, handleHdiutilHelperError);
+			
+			dispatchEvent(new ErrorEvent(ErrorEvent.ERROR, false, false, 
+				"Error attaching dmg file!"));
+		}
+		
+		protected function handleDownloadProgress(event:ProgressEvent):void
+		{
+			var bytesTotal:int = event.bytesTotal;
+			var bytesLoaded:int = event.bytesLoaded;
+			var percentLoaded:int = Math.round(bytesLoaded*100/bytesTotal);
+			progressBar.percent = percentLoaded;
+		}
+		
+		
+		private function handleDownloadError(event:Event):void
+		{
+			Alert.show("Error downloading update file, try again later.");
+		}
+		
+		public function set latestVersion(value:String):void
+		{
+			_newVersion = value;
+		}
+		
+		private function writeFileToDirectory(file:File,data:ByteArray):void
+		{
+			var fs:FileStream = new FileStream();
+			fs.open(file, FileMode.WRITE);
+			fs.writeBytes(data); 
+			fs.close();
+		}
+		
+		protected function handleNoBtnClick(event:MouseEvent):void
+		{
+			dispatchEvent(new CloseEvent(CloseEvent.CLOSE));
+		}
+		
+	]]></fx:Script>
+	
+	<s:states>
+		<s:State name="normal" />
+		<s:State name="downloading" />
+	</s:states>
+	
+	<s:HGroup width="100%" 
+			top="210" 
+			  horizontalCenter="0" 
+			  verticalAlign="top">
+		<s:VGroup width="100%" 
+				  horizontalAlign="center">
+			<s:Label text="New version ({_newVersion}) is available."
+					 fontSize="14"/>
+			<s:Label text="Do you want to download and install it?" 
+					 fontSize="14"/>
+			<controls:ProgressBar id="progressBar" 
+								  width="80%" 
+								  height="21" />
+			<s:Spacer height="20" />
+			<s:HGroup>
+				<s:Button id="btnYes" 
+						  height="30"
+						  styleName="mainBtnStyle"
+						  label="UPDATE" 
+						  click="handleYesBtnClick(event)" 
+						  enabled.downloading="false" />
+				<s:Button id="btnNo" 
+						  height="30"
+						  styleName="negativeBtnStyle"
+						  label="DON'T UPDATE" 
+						  click="handleNoBtnClick(event)"
+						  enabled.downloading="false" />
+			</s:HGroup>
+		</s:VGroup>
+	</s:HGroup>
+</s:TitleWindow>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/cda78507/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/components/AboutDialog.mxml
----------------------------------------------------------------------
diff --git a/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/components/AboutDialog.mxml b/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/components/AboutDialog.mxml
new file mode 100644
index 0000000..1ac829e
--- /dev/null
+++ b/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/components/AboutDialog.mxml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:Window xmlns:fx="http://ns.adobe.com/mxml/2009" 
+		  xmlns:s="library://ns.adobe.com/flex/spark" 
+		  xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">
+	<fx:Declarations>
+		<!-- Place non-visual elements (e.g., services, value objects) here -->
+	</fx:Declarations>
+</s:Window>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/cda78507/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/components/AdobeLicense.mxml
----------------------------------------------------------------------
diff --git a/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/components/AdobeLicense.mxml b/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/components/AdobeLicense.mxml
new file mode 100644
index 0000000..1fe3731
--- /dev/null
+++ b/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/components/AdobeLicense.mxml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<s:Window xmlns:fx="http://ns.adobe.com/mxml/2009" 
+		  xmlns:s="library://ns.adobe.com/flex/spark" 
+		  xmlns:mx="library://ns.adobe.com/flex/mx" width="810" height="800" showStatusBar="false"
+		  title="Adobe Flex SDK License Agreement">
+	<fx:Script>
+		<![CDATA[
+			import org.apache.flex.packageflexsdk.resource.ViewResourceConstants;
+			
+			import spark.events.IndexChangeEvent;
+			[Bindable]private var adobelicenseTextStr:String = "Adobe Flex SDK License Agreement:  All files contained in this Adobe Flex SDK download are subject to and governed by the " +
+														"Adobe Flex SDK License Agreement specified here: http://www.adobe.com/products/eulas/pdfs/adobe_flex_software_development_kit-combined-20110916_0930.pdf, " +
+														"By downloading, modifying, distributing, using and/or accessing any files in this Adobe Flex SDK, " +
+														"you agree to the terms and conditions of the applicable end user license agreement.  " +
+														"In addition to the Adobe license terms, you also agree to be bound by the third-party terms specified here: " +
+														"http://www.adobe.com/products/eula/third_party/. " +
+														"Adobe recommends that you review these third-party terms."
+			
+			protected function tabbar1_changeHandler(event:IndexChangeEvent):void
+			{
+				if(event.target.selectedItem.toString() == "Adobe Flex SDK License Agreement" )
+				{
+					htmlTabs.selectedChild = adobeLicenseHTML;
+				}
+				else if(event.target.selectedItem.toString() == "Third Party Terms" )
+				{
+					htmlTabs.selectedChild = thirdPartyHTML;
+				}
+			}
+			
+		]]>
+	</fx:Script>
+	<s:layout>
+		<s:VerticalLayout />
+	</s:layout>
+	<s:TextArea 
+		width="100%" 
+		height="75" 
+		fontSize="12" 
+		text="{adobelicenseTextStr}" 
+		verticalScrollPolicy="off" 
+		editable="false"/>
+	<s:TabBar change="tabbar1_changeHandler(event)">
+		<s:ArrayCollection>
+			<fx:String>Adobe Flex SDK License Agreement</fx:String>
+			<fx:String>Third Party Terms</fx:String>
+		</s:ArrayCollection>
+	</s:TabBar>
+	<mx:ViewStack id="htmlTabs" width="100%" height="100%">
+		<s:NavigatorContent id="adobeLicenseHTML" width="100%" height="100%">
+			<mx:HTML width="100%" height="100%" location="http://www.adobe.com/products/eulas/pdfs/adobe_flex_software_development_kit-combined-20110916_0930.pdf" />
+		</s:NavigatorContent>
+		<s:NavigatorContent id="thirdPartyHTML" width="100%" height="100%">
+			<mx:HTML width="100%" height="100%" location="http://www.adobe.com/products/eula/third_party/pdfs/flex4_5_sdk_opensource_legal_notices.pdf" />
+		</s:NavigatorContent>
+	</mx:ViewStack>
+	<s:HGroup width="100%" height="50" verticalAlign="middle" paddingRight="15">
+		<s:Spacer width="100%" />
+		<s:Button label="{ViewResourceConstants.instance.BTN_LABEL_CLOSE}" click="close()" styleName="genericBtnStyle"  />
+	</s:HGroup>
+</s:Window>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/cda78507/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/components/ConsoleWindow.mxml
----------------------------------------------------------------------
diff --git a/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/components/ConsoleWindow.mxml b/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/components/ConsoleWindow.mxml
new file mode 100644
index 0000000..977d149
--- /dev/null
+++ b/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/components/ConsoleWindow.mxml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:Window xmlns:fx="http://ns.adobe.com/mxml/2009"
+		  xmlns:s="library://ns.adobe.com/flex/spark"
+		  xmlns:mx="library://ns.adobe.com/flex/mx"
+		  title="Install Log" width="600" height="300" showStatusBar="false"
+		  >
+
+	<fx:Script>
+		<![CDATA[
+        import mx.binding.utils.BindingUtils;
+        import mx.binding.utils.ChangeWatcher;
+        import mx.collections.ArrayCollection;
+
+        import org.apache.flex.packageflexsdk.resource.ViewResourceConstants;
+
+        [Bindable]
+        public var messages:ArrayCollection = new ArrayCollection();
+
+        public function closeWindow(event:MouseEvent):void {
+            close();
+        }
+
+        private function handleCopyBtnClick(event:MouseEvent):void {
+            var logText:String = "";
+
+            for each (var str:Object in messages) {
+                logText += str.toString() + "\n";
+            }
+
+            Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT, logText);
+        }
+
+        private function logTxtArea_copyHandler(event:Event):void {
+            var message:String = "";
+            var messages:List = event.currentTarget as List;
+            var clipBoardData:String;
+
+            for each (message in messages.selectedItems) {
+                clipBoardData += message + "\n";
+            }
+            if (clipBoardData) {
+                Clipboard.generalClipboard.clear();
+                Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT, clipBoardData, false);
+            }
+        }
+        ]]>
+	</fx:Script>
+
+	<s:List id="logTxtArea" dataProvider="{messages}"
+            allowMultipleSelection="true"
+            copy="logTxtArea_copyHandler(event)"
+			top="0"
+			bottom="35"
+			left="0"
+			right="0"
+			fontFamily="openSansSemibold"
+			fontSize="14">
+		<s:layout>
+			<s:VerticalLayout gap="0" horizontalAlign="justify" />
+		</s:layout>
+	</s:List>
+	<s:Button label="{ViewResourceConstants.instance.BTN_LABEL_COPY_LOG}"
+			  click="handleCopyBtnClick(event)"
+			  styleName="genericBtnStyle"
+			  left="7.5"
+			  bottom="7.5"/>
+	<s:Button label="{ViewResourceConstants.instance.BTN_LABEL_CLOSE}"
+			  click="closeWindow(event)"
+			  right="7.5"
+			  bottom="7.5"
+			  styleName="genericBtnStyle"  />
+</s:Window>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/cda78507/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/components/MPLLicense.mxml
----------------------------------------------------------------------
diff --git a/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/components/MPLLicense.mxml b/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/components/MPLLicense.mxml
new file mode 100644
index 0000000..5b48716
--- /dev/null
+++ b/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/components/MPLLicense.mxml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:Window xmlns:fx="http://ns.adobe.com/mxml/2009" 
+		  xmlns:s="library://ns.adobe.com/flex/spark" 
+		  xmlns:mx="library://ns.adobe.com/flex/mx" width="600" height="300" showStatusBar="false"
+		  title="Mozilla Public License Version 1.1">
+	<fx:Script>
+		<![CDATA[
+			import org.apache.flex.packageflexsdk.resource.ViewResourceConstants;
+			[Bindable]private var mplTextStr:String = "Mozilla Public License Version 1.1:" +  
+				"The contents of the file(s) are subject to the Mozilla Public License Version 1.1." +
+				"You may not use the file(s) except in compliance with the License. " +
+				"You may obtain a copy of the License here: http://www.mozilla.org/MPL/. " +
+				"By downloading, modifying, distributing, using and/or accessing the file(s), " +
+				"you agree to the terms and conditions of the applicable license agreement.";
+		]]>
+	</fx:Script>
+	<s:layout>
+		<s:VerticalLayout />
+	</s:layout>
+	<s:TextArea 
+		width="100%" 
+		height="100%" 
+		fontSize="14" 
+		text="{mplTextStr}" 
+		editable="false"/>
+	<s:HGroup width="100%" height="50" verticalAlign="middle" paddingRight="15" >
+		<s:Spacer width="100%" />
+		<s:Button label="{ViewResourceConstants.instance.BTN_LABEL_CLOSE}" click="close()" styleName="genericBtnStyle"  />
+	</s:HGroup>
+</s:Window>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/cda78507/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/components/Tracker.mxml
----------------------------------------------------------------------
diff --git a/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/components/Tracker.mxml b/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/components/Tracker.mxml
new file mode 100644
index 0000000..4838882
--- /dev/null
+++ b/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/components/Tracker.mxml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
+		 xmlns:s="library://ns.adobe.com/flex/spark"
+		 xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">
+	<fx:Script>
+		<![CDATA[
+			import org.apache.flex.utilities.common.Constants;
+			public function trackInstallerSuccess(sdkLabel:String=null,version:String=null,os:String=null):void
+			{
+				if(version == null && os == null)
+				{
+					trackInstallerHTML.location = Constants.APACHE_FLEX_URL + Constants.INSTALLER_TRACK_SUCCESS;
+				}
+				else
+				{
+					trackInstallerHTML.location = Constants.APACHE_FLEX_URL + Constants.INSTALLER_TRACK_SUCCESS + "?label=" + sdkLabel + "&version=" + version + "&os=" + os;
+				}
+			}
+			
+			public function trackInstallerFailure(sdkLabel:String=null,version:String=null,os:String=null):void
+			{
+				if(version == null && os == null)
+				{
+					trackInstallerHTML.location = Constants.APACHE_FLEX_URL + Constants.INSTALLER_TRACK_FAILURE;
+				}
+				else
+				{
+					trackInstallerHTML.location = Constants.APACHE_FLEX_URL + Constants.INSTALLER_TRACK_FAILURE + "&label=" + sdkLabel + "&version=" + version + "&os=" + os;
+				}
+			}
+			
+		]]>
+	</fx:Script>
+	<mx:HTML id="trackInstallerHTML" width="100%" height="100%" />
+</s:Group>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/cda78507/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/controls/MultiStepProgressIndicator.mxml
----------------------------------------------------------------------
diff --git a/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/controls/MultiStepProgressIndicator.mxml b/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/controls/MultiStepProgressIndicator.mxml
new file mode 100644
index 0000000..4469d26
--- /dev/null
+++ b/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/controls/MultiStepProgressIndicator.mxml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
+					  xmlns:s="library://ns.adobe.com/flex/spark" 
+					  xmlns:mx="library://ns.adobe.com/flex/mx">
+	<fx:Declarations>
+		<!-- Place non-visual elements (e.g., services, value objects) here -->
+	</fx:Declarations>
+	<fx:Script>
+		<![CDATA[
+			import mx.collections.ArrayCollection;
+			[Bindable] public var steps:ArrayCollection;
+		]]>
+	</fx:Script>
+	<s:DataGroup dataProvider="{steps}" itemRenderer="ws.tink.spark.controls.StepRenderer">
+		<s:layout>
+			<s:HorizontalLayout gap="12"/>
+		</s:layout>
+	</s:DataGroup>
+</s:Group>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/cda78507/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/events/InstallItemSelectionEvent.as
----------------------------------------------------------------------
diff --git a/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/events/InstallItemSelectionEvent.as b/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/events/InstallItemSelectionEvent.as
new file mode 100644
index 0000000..ab02321
--- /dev/null
+++ b/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/events/InstallItemSelectionEvent.as
@@ -0,0 +1,36 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package org.apache.flex.packageflexsdk.view.events
+{
+	import flash.events.Event;
+	
+	import org.apache.flex.packageflexsdk.model.InstallerComponentVO;
+	
+	public class InstallItemSelectionEvent extends Event
+	{
+		public static var INSTALL_ITEM_SELECTION_CHANGED:String = "installItemSelectionChanged";
+		public var item:InstallerComponentVO;
+		
+		public function InstallItemSelectionEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
+		{
+			super(type, bubbles, cancelable);
+		}
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/cda78507/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/itemrenderers/OptionalInstallItemRenderer.mxml
----------------------------------------------------------------------
diff --git a/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/itemrenderers/OptionalInstallItemRenderer.mxml b/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/itemrenderers/OptionalInstallItemRenderer.mxml
new file mode 100644
index 0000000..e6ec22c
--- /dev/null
+++ b/flex-installer/installer/src/org/apache/flex/packageflexsdk/view/itemrenderers/OptionalInstallItemRenderer.mxml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
+				xmlns:s="library://ns.adobe.com/flex/spark" 
+				xmlns:mx="library://ns.adobe.com/flex/mx" 
+				autoDrawBackground="true" width="100%">
+	<s:layout>
+		<s:HorizontalLayout verticalAlign="middle" gap="5" paddingLeft="5" />
+	</s:layout>
+	<fx:Metadata>
+		[Event(name="installItemSelectionChanged", type="org.apache.flex.packageflexsdk.view.events.InstallItemSelectionEvent")]
+	</fx:Metadata>
+	
+	<fx:Script>
+		<![CDATA[
+			import org.apache.flex.packageflexsdk.model.InstallerComponentVO;
+			import org.apache.flex.packageflexsdk.view.events.InstallItemSelectionEvent;
+			
+			protected function checkbox1_changeHandler(event:Event):void
+			{
+				var e:InstallItemSelectionEvent = new InstallItemSelectionEvent(InstallItemSelectionEvent.INSTALL_ITEM_SELECTION_CHANGED,true);
+				data.selected = event.target.selected; 
+				e.item = InstallerComponentVO(data);
+				dispatchEvent(e);
+			}
+			
+			protected function text_changeHandler(checkbox:CheckBox):void
+			{
+				checkbox.selected = ! checkbox.selected;
+								
+				var e:InstallItemSelectionEvent = new InstallItemSelectionEvent(InstallItemSelectionEvent.INSTALL_ITEM_SELECTION_CHANGED,true);
+				data.selected = checkbox.selected; 
+				e.item = InstallerComponentVO(data);
+				dispatchEvent(e);
+			}
+		]]>
+	</fx:Script>
+	
+	<s:CheckBox id="checkbox1" selected="{data.selected}" enabled="true" change="checkbox1_changeHandler(event)"  />
+	<s:Label text="{data.label}" fontFamily="openSansBold" fontSize="11" click="text_changeHandler(checkbox1)" width="100%" />
+	
+</s:ItemRenderer>

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/cda78507/flex-installer/installer/src/properties/de_DE.properties
----------------------------------------------------------------------
diff --git a/flex-installer/installer/src/properties/de_DE.properties b/flex-installer/installer/src/properties/de_DE.properties
new file mode 100644
index 0000000..dd2a913
--- /dev/null
+++ b/flex-installer/installer/src/properties/de_DE.properties
@@ -0,0 +1,131 @@
+################################################################################
+##
+##  Licensed to the Apache Software Foundation (ASF) under one or more
+##  contributor license agreements.  See the NOTICE file distributed with
+##  this work for additional information regarding copyright ownership.
+##  The ASF licenses this file to You under the Apache License, Version 2.0
+##  (the "License"); you may not use this file except in compliance with
+##  the License.  You may obtain a copy of the License at
+##
+##      http://www.apache.org/licenses/LICENSE-2.0
+##
+##  Unless required by applicable law or agreed to in writing, software
+##  distributed under the License is distributed on an "AS IS" BASIS,
+##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+##  See the License for the specific language governing permissions and
+##  limitations under the License.
+##
+################################################################################
+ASK_BLAZEDS=Apache Flex kann optional Adobe BlazeDS einbinden. Dieses Feature benötigt flex-messaging-common.jar aus dem Adobe Flex SDK. Die Adobe SDK Lizenzvereinbarung für Adobe Flex 4.6 gilt für diese Jar-Datei. Diese Lizenz ist nicht mit der Apache V2 Lizenz vereinbar. Möchten Sie diese Jar-Datei aus dem Adobe Flex SDK installieren?
+ASK_FONTSWF=Apache Flex kann optional das Feature \"Einbetten von Schriftarten\" einbinden. Dieses Feature benötigt verschieden Schriftarten Jar-Dateien aus dem Adobe Flex SDK. Die Adobe SDK Lizenzvereinbarung für Adobe Flex 4.6 gilt für diese Jar-Dateien. Diese Lizenz ist nicht mit der Apache V2 Lizenz vereinbar. Möchten Sie diese Jar-Dateien aus dem Adobe Flex SDK installieren?
+ASK_OSMF=Das Open Source Media Framework (OSMF) welches von den Videokomponenten verwendet wird ist unter der Mozilla Public License Version 1.1 lizensiert. Möchten Sie das Open Source Media Framework (OSMF) jetzt installieren?
+ASK_TLF=Das Adobe Text Layout Framework (TLF) welches von den Spark Textkomponeten verwendet wird ist unter der Mozilla Public License Version 1.1 lizensiert.  Möchten Sie das Adobe Text Layout Framework (TLF) jetzt installieren?
+ASK_APACHE_FLEX=Das Apache Flex SDK verwendet die Apache License V2. Möchten Sie jetzt das Apache Flex SDK installieren?
+ASK_ADOBE_AIR_SDK=Das Adobe AIR SDK verwendet die Adobe SDK Lizenzvereinbarung. Möchten SIe jetzt das Adobe AIR SDK installieren?
+ASK_ADOBE_FLASH_PLAYER_GLOBAL_SWC=Die Adobe Flash Player playerglobal.swc verwendet die Adobe SDK Lizenzvereinbarung. Möchten SIe jetzt die Adobe Flash Player playerglobal.swc installieren?
+ASK_SWFOBJECT=Das SWFObject utility verwendet die MIT License (MIT).  Möchten SIe jetzt das SWFObject utility installieren?
+ASK_OFL_FONTS=The FlatSpark theme uses fonts licensed under the Open Font License.  Do you want to install the Font Awesome and Lato Fonts?
+BTN_LABEL_ADOBE_LICENSE=ADOBE LIZENZ ANZEIGEN
+BTN_LABEL_BROWSE=ÖFFNEN
+BTN_LABEL_CLOSE=SCHLIEßEN
+BTN_LABEL_INSTALL=INSTALLIEREN
+BTN_LABEL_INSTALL_LOG=PROTOKOLL ANZEIGEN
+BTN_LABEL_MPL_LICENSE=MPL LIZENZ ANZEIGEN
+BTN_LABEL_NEXT=WEITER
+BTN_LABEL_NEXT=ZURÜCK
+BTN_DISCLAIMER=Haftungsausschluss
+BTN_LABEL_OPEN_APACHE_FLEX_FOLDER=APACHE FLEX ORDNER ÖFFNEN
+ERROR_CONFIG_XML_LOAD=Fehler beim Laden der XML Konfigurationsdatei: 
+ERROR_DIR_NOT_EMPTY=Das ausgewählte Verzeichnis ist nicht leer
+ERROR_INVALID_AIR_SDK_URL_MAC=Adobe AIR SDK URL für Mac in Konfigurationsdatei ungültig
+ERROR_INVALID_AIR_SDK_URL_WINDOWS=Adobe AIR SDK URL für Windows in Konfigurationsdatei ungültig
+ERROR_INVALID_FLASH_PLAYER_SWC_URL=Flash Player swc URL in Konfigurationsdatei ungültig
+ERROR_INVALID_FLEX_SDK_DIRECTORY=Ungültiges Flex SDK Verzeichnis ausgewählt
+ERROR_INVALID_SDK_URL=Apache Flex SDK URL in Konfigurationsdatei ungültig
+ERROR_MIRROR_FETCH=Fehler beim ermitteln eines mirrors für den Download der Apache Flex SDK Binaries: 
+ERROR_NATIVE_PROCESS_ERROR=Native Process Fehler Kann Adobe AIR SDK nicht entpacken
+ERROR_NATIVE_PROCESS_NOT_SUPPORTED=Native Process nicht unterstützt. Kann Adobe AIR SDK nicht entpacken
+ERROR_UNABLE_TO_COPY_FILE=Kopieren von Datei fehlgeschlagen
+ERROR_UNABLE_TO_CREATE_TEMP_DIRECTORY=Erstellen von Temp Verzeichnis fehlgeschlagen
+ERROR_UNABLE_TO_DELETE_TEMP_DIRECTORY=Löschen von Temp Verzeichnis fehlgeschlagen
+ERROR_UNABLE_TO_DOWNLOAD_AIR_SDK=Download von Adobe AIR Runtime Kit fehlgeschlagen
+ERROR_UNABLE_TO_DOWNLOAD_FILE=Downlod fehlgeschlagen von Datei: {0}
+ERROR_UNABLE_TO_DOWNLOAD_FLASH_PLAYER_SWC=Download von Flash Player swc fehlgeschlagen
+ERROR_UNABLE_TO_DOWNLOAD_FLEX_SDK=Download von Apache Flex SDK fehlgeschlagen
+ERROR_UNABLE_TO_INSTALL_CONFIG_FILES=Installation von Konfigurationsdatei fehlgeschlagen
+ERROR_UNABLE_TO_UNZIP=Entpacken von Datei fehlgeschlagen: 
+ERROR_UNABLE_TO_DOWNLOAD_SWF_OBJECT=Download von SWFObject fehlgeschlagen
+ERROR_UNSUPPORTED_OPERATING_SYSTEM=Nicht unterstütztes Betriebssystem
+ERROR_VERIFY_FLEX_SDK=Die Signatur der heruntergeladenen Dateien stimmt nicht mit der Apache Flex SDK MD5 Signatur überein. Dateien sind fehlerhaft. Installation wird abgebrochen.
+FETCH_GEO_IP=Versuche Länderkennung des Benutzer über GeoIP Service zu identifizieren...
+FETCH_GEO_IP_DONE=Länderkennung erfolgreich über GeoIP Service identifiziert.
+FETCH_GEO_IP_ERROR=Identifizierung von Länderkennung über GeoIP Service fehlgeschlagen
+FETCH_MIRROR_CGI=Versuche mirror URL für Apache Flex SDK über CGI-Skript zu ermitteln...
+FETCH_MIRROR_CGI_DONE=Ermitteln von mirror URL über CGI-Skript erfolgreich.
+FETCH_MIRROR_CGI_ERROR=Ermitteln von mirror URL über CGI-Skript fehlgeschlagen.
+FETCH_MIRROR_LIST=Versuche mirror Liste von Apache.org zu laden...
+FETCH_MIRROR_LIST_DONE=Laden von mirror Liste von Apache.org erfolgreich.
+FETCH_MIRROR_LIST_PARSED=mirror Liste verarbeitet und unter Verwendung der Länderkennung folgende Domain ermittelt: 
+INFO_ABORT_INSTALLATION=Installation abgebrochen
+INFO_APP_INVOKED=Kommandozeilenmodus gestartet verwendete Argumente: 
+INFO_CREATING_FLEX_HOME=Erstelle Apache Flex home
+INFO_CREATING_TEMP_DIR=Erstelle Temp Verzeichnis
+INFO_CURRENT_LANGUAGE=Sprache wählen
+INFO_DOWNLOADING_ADOBE_FLEX_SDK=Lade Adobe Flex SDK von: 
+INFO_DOWNLOADING_AIR_RUNTIME_KIT_MAC=Lade Adobe AIR Runtime Kit für Mac von: 
+INFO_DOWNLOADING_AIR_RUNTIME_KIT_WINDOWS=Lade Adobe AIR Runtime Kit für Windows von: 
+INFO_DOWNLOADING_FILE_FROM=Lade {0} von: {1} herunter
+INFO_DOWNLOADING_FLEX_SDK=Lade Apache Flex SDK von: 
+INFO_DOWNLOADED=Download abgeschlossen 
+INFO_ENTER_VALID_FLEX_SDK_PATH=Bitte geben Sie einen gültigen Pfad für das Flex SDK ein
+INFO_FINISHED_UNTARING=untar abgeschlossen: 
+INFO_FINISHED_UNZIPPING=entpacken abgeschlossen: 
+INFO_INSTALLATION_COMPLETE=Installation abgeschlossen
+INFO_INSTALLING=Installiere...
+INFO_INSTALLING_CONFIG_FILES=Installiere Framework Konfigurationsdateien für die Verwendung mit einer IDE
+INFO_INSTALLING_PLAYERGLOBAL_SWC=Installiere Adobe Flash Player playerglobal.swc von: 
+INFO_INVOKED_GUI_MODE=GUI Modus gestartet
+INFO_LICENSE_AGREEMENTS=Lizenzvereinbarung
+INFO_NEED_TO_READ_AND_AGREE_TO_LICENSE=Dieser Installer wird Software von unterschiedlichen Seiten mit unterschiedlichen Lizenzen herunterladen. Bitte wählen Sie jedes Element auf der linken Seite aus, lesen Sie die jeweiligen Lizenzvereinbarungen und bestätigen Sie mit einem Häkchen, dass Sie den jeweiligen Bedingungen zustimmen.
+INFO_SELECT_DIRECTORY=Wählen Sie das Verzeichnis in dem Sie das Apache Flex SDK installieren wollen
+INFO_SELECT_DIRECTORY_INSTALL=Installationsverzeichnis wählen
+INFO_UNZIPPING=Entpacke: 
+INFO_VERIFY_FLEX_SDK_DONE=Die Signatur der heruntergeladenen Dateien stimmt mit der Apache Flex SDK MD5 Signatur überein. Die Datei ist gültig.
+INFO_WINDOW_TITLE=Installiere Apache Flex SDK {0} für die Verwendung mit einer IDE
+INSTALL_AGREE=Ich Stimme zu, Installation Starten
+INSTALL_AGREE_ALL=Ich Stimme allen Optionen und Lizenzen zu, Installation starten
+INSTALL_DISAGREE=Ich Stimme nicht zu, nicht installieren
+SELECT_PATH_PROMPT=In welches Verzeichnis soll das Apache Flex SDK installiert werden?
+STEP_CREATE_DIRECTORIES=Erstelle Verzeichnisse
+STEP_SELECT_AIR_AND_FLASH_VERSION=Bitte wählen Sie die AIR und Flash Player Versionen.
+STEP_REQUIRED_INSTALL_APACHE_FLEX_SDK=Apache Flex SDK (Benötigt)
+STEP_REQUIRED_INSTALL_ADOBE_AIR_SDK=Adobe AIR SDK (Benötigt)
+STEP_REQUIRED_INSTALL_FLASH_PLAYER_GLOBAL_SWC=Adobe Flash Player playerglobal.swc (Benötigt)
+STEP_REQUIRED_INSTALL_SWFOBJECT=SWFObject (Benötigt)
+STEP_INSTALL_CONFIG_FILES=Installiere Framework Konfigurationsdateien
+STEP_REQUIRED_INSTALL_OSMF=OSMF (Benötigt)
+STEP_REQUIRED_INSTALL_TLF=Adobe Text Layout Framework (Benötigt)
+STEP_REQUIRED_INSTALL_OFL_FONTS=Font Awesome and Lato Fonts (Benötigt)
+STEP_OPTIONAL_INSTALL_BLAZEDS=Remoting Support (Optional)
+STEP_OPTIONAL_INSTALL_FONTSWF=Adobe Bibliothek zur Einbettung von Schriften (Optional)
+STEP_REQUIRED_UNZIP_AIR_RUNTIME_KIT=Entpacke Adobe AIR Runtime Kit
+STEP_UNZIP_AIR_RUNTIME_KIT=Entpacke Adobe AIR Runtime Kit
+STEP_UNZIP_FLEX_SDK=Entpacke Apache Flex SDK
+STEP_VERIFY_FLEX_SDK=Verifiziere Apache Flex SDK MD5 Signature
+LICENSE_APACHE_V2=Apache V2 Lizenz
+LICENSE_URL_APACHE_V2=http://www.apache.org/licenses/LICENSE-2.0.html
+LICENSE_ADOBE_SDK=Adobe Flex SDK Lizenzvereinbarung
+LICENSE_URL_ADOBE_SDK=http://www.adobe.com/products/eulas/pdfs/adobe_flex_software_development_kit-combined-20110916_0930.pdf
+LICENSE_ADOBE_AIR_SDK=Adobe AIR SDK Lizenzvereinbarung
+LICENSE_URL_ADOBE_AIR_SDK=http://www.adobe.com/products/air/sdk-eula.html
+LICENSE_SWFOBJECT=MIT Lizenz
+LICENSE_URL_SWFOBJECT=http://opensource.org/licenses/mit-license.php
+LICENSE_OSMF=Mozilla Public License Version 1.1
+LICENSE_URL_OSMF=http://www.mozilla.org/MPL/
+LICENSE_TLF=Mozilla Public License Version 1.1
+LICENSE_URL_TLF=http://www.mozilla.org/MPL/
+LICENSE_FONTSWF=Adobe Flex SDK Lizenzvereinbarung
+LICENSE_URL_FONTSWF=http://www.adobe.com/products/eulas/pdfs/adobe_flex_software_development_kit-combined-20110916_0930.pdf
+LICENSE_BLAZEDS=Adobe Flex SDK Lizenzvereinbarung
+LICENSE_URL_BLAZEDS=http://www.adobe.com/products/eulas/pdfs/adobe_flex_software_development_kit-combined-20110916_0930.pdf
+INFO_TRACKING=Anonyme Nutzungsstatistiken werden in Übereinstimmung\n mit unserer Datenschutzerklärung gesammelt.

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/cda78507/flex-installer/installer/src/properties/el_GR.properties
----------------------------------------------------------------------
diff --git a/flex-installer/installer/src/properties/el_GR.properties b/flex-installer/installer/src/properties/el_GR.properties
new file mode 100644
index 0000000..5f8a4bf
--- /dev/null
+++ b/flex-installer/installer/src/properties/el_GR.properties
@@ -0,0 +1,123 @@
+################################################################################
+##
+##  Licensed to the Apache Software Foundation (ASF) under one or more
+##  contributor license agreements.  See the NOTICE file distributed with
+##  this work for additional information regarding copyright ownership.
+##  The ASF licenses this file to You under the Apache License, Version 2.0
+##  (the "License"); you may not use this file except in compliance with
+##  the License.  You may obtain a copy of the License at
+##
+##      http://www.apache.org/licenses/LICENSE-2.0
+##
+##  Unless required by applicable law or agreed to in writing, software
+##  distributed under the License is distributed on an "AS IS" BASIS,
+##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+##  See the License for the specific language governing permissions and
+##  limitations under the License.
+##
+################################################################################
+BTN_LABEL_BROWSE=ΑΝΑΖΗΤΗΣΗ
+BTN_LABEL_CLOSE=ΕΞΟΔΟΣ
+BTN_LABEL_INSTALL=ΕΓΚΑΤΑΣΤΑΣΗ
+BTN_LABEL_INSTALL_LOG=ΑΡΧΕΙΟ ΚΑΤΑΓΡΑΦΗΣ ΕΓΚΑΤΑΣΤΑΣΗΣ
+BTN_LABEL_NEXT=ΕΠΟΜΕΝΟ
+BTN_LABEL_BACK=πίσω
+BTN_LABEL_OPEN_APACHE_FLEX_FOLDER=ΑΝΟΙΓΜΑ ΦΑΚΕΛΟΥ APACHE FLEX
+ERROR_CONFIG_XML_LOAD=Πρόεκυψε σφάλμα κατά την προσπάθεια φόρτωσης του αρχείου ρυθμίσεων XML:
+ERROR_DIR_NOT_EMPTY=Ο κατάλογος που επιλέξατε δεν είναι άδειος
+ERROR_INVALID_AIR_SDK_URL_MAC=Λανθασμένο Adobe AIR SDK URL για Mac στο αρχείο ρυθμίσεων
+ERROR_INVALID_AIR_SDK_URL_WINDOWS=Λανθασμένο Adobe AIR SDK URL για Windows στο αρχείο ρυθμίσεων
+ERROR_INVALID_FLASH_PLAYER_SWC_URL=Λανθασμένο Flash Player swc URL στο αρχείο ρυθμίσεων
+ERROR_INVALID_FLEX_SDK_DIRECTORY=Έχετε επιλέξει μη έγκυρο κατάλογο για το Flex SDK 
+ERROR_INVALID_SDK_URL=Λανθασμένο Apache Flex SDK URL στο αρχείο ρυθμίσεων.
+ERROR_NATIVE_PROCESS_ERROR=Σφάλμα κατά την εκτέλεση Native Process.  Δεν είναι δυνατή η αποσυμπίεση (untar) του Adobe AIR SDK
+ERROR_NATIVE_PROCESS_NOT_SUPPORTED=Δεν υπάρχει υποστήριξη Native Process. Δεν είναι δυνατή η αποσυμπίεση(untar)του Adobe AIR SDK
+ERROR_UNABLE_TO_COPY_FILE=Δεν είναι δυνατή η αντιγραφή του αρχείου 
+ERROR_UNABLE_TO_CREATE_TEMP_DIRECTORY=Δεν είναι δυνατή η δημιουργία προσωρινού καταλόγου
+ERROR_UNABLE_TO_DELETE_TEMP_DIRECTORY=Δεν είναι δυνατή η εκκαθάριση των προσωρινών καταλόγων εγκατάστασης
+ERROR_UNABLE_TO_DOWNLOAD_AIR_SDK=Δεν είναι δυνατή η λήψη του Adobe AIR Runtime Kit
+ERROR_UNABLE_TO_DOWNLOAD_FLASH_PLAYER_SWC=Δεν είναι δυνατή η λήψη του Flash Player swc
+ERROR_UNABLE_TO_DOWNLOAD_FLEX_SDK=Δεν είναι δυνατή η λήψη του Apache Flex SDK
+ERROR_UNABLE_TO_INSTALL_CONFIG_FILES=Δεν είναι δυνατή η εγκατάσταση των αρχείων ρυθμίσεων
+ERROR_UNSUPPORTED_OPERATING_SYSTEM=Δεν υποστηρίζεται το λειτουργικό σύστημα
+INFO_ABORT_INSTALLATION=Η εγκατάσταση ματαιώθηκε
+INFO_APP_INVOKED=Κλήση με λειτουργία γραμμής εντολών με τα ακόλουθα ορίσματα:
+INFO_CREATING_FLEX_HOME=Δημιουργία αρχικού καταλόγου για το Apache Flex
+INFO_CREATING_TEMP_DIR=Δημιουργία προσωρινού καταλόγου
+INFO_CURRENT_LANGUAGE=Επιλέξτε Γλώσσα
+INFO_DOWNLOADING_AIR_RUNTIME_KIT_MAC=Γίνεται λήψη του Adobe AIR Runtime Kit για Mac από:
+INFO_DOWNLOADING_AIR_RUNTIME_KIT_WINDOWS=Γίνεται λήψη του Adobe AIR Runtime Kit για Windows από:
+INFO_DOWNLOADING_FLEX_SDK=Γίνεται λήψη του Apache Flex SDK από:
+INFO_DOWNLOADED=Η λήψη ολοκληρώθηκε
+INFO_ENTER_VALID_FLEX_SDK_PATH=Παρακαλώ εισάγετε μια έγκυρη διαδρομή καταλόγου για το Flex SDK
+INFO_FINISHED_UNTARING=Η αποσυμπίεση τελείωσε:
+INFO_FINISHED_UNZIPPING=Η αποσυμπίεση τελείωσε:
+INFO_INSTALLATION_COMPLETE=Η εγκατάσταση ολοκληρώθηκε.
+INFO_INSTALLING=Εγκατάσταση...
+INFO_INSTALLING_CONFIG_FILES=Γίνεται εγκατάσταση των αρχείων ρυθμίσεων του framework που έχουν ρυθμιστεί για χρήση με IDE
+INFO_INSTALLING_PLAYERGLOBAL_SWC=Γίνεται εγκατάσταση του Adobe Flash Player playerglobal.swc από:
+INFO_INVOKED_GUI_MODE=Κλήση με λειτουργία γραφικού περιβάλλοντος
+INFO_SELECT_DIRECTORY=Επιλέξτε τον κατάλογο στον οποίο θέλετε να εγκαταστήσετε το Flex SDK
+INFO_SELECT_DIRECTORY_INSTALL=Επιλέξτε τον κατάλογο εγκατάστασης
+INFO_UNZIPPING=Αποσυμπίεση: 
+SELECT_PATH_PROMPT=Πληκτρολογήστε η επιλέξτε μια έγκυρη διαδρομή για το Flex SDK
+STEP_SELECT_AIR_AND_FLASH_VERSION=Select AIR and Flash Player versions.
+STEP_CREATE_DIRECTORIES=Δημιουργία Καταλόγων
+STEP_DOWNLOAD_AIR_RUNTIME_KIT=Λήψη Adobe AIR Runtime Kit
+STEP_DOWNLOAD_FLASHPLAYER_SWC=Λήψη Flash Player swc
+STEP_DOWNLOAD_FLEX_SDK=Λήψη Apache Flex SDK
+STEP_INSTALL_CONFIG_FILES=Εγκατάσταση των αρχείων ρυθμίσεων του Framework
+STEP_UNZIP_AIR_RUNTIME_KIT=Αποσυμπίεση του Adobe AIR Runtime Kit
+STEP_UNZIP_FLEX_SDK=Αποσυμπίεση του Apache Flex SDK
+ASK_BLAZEDS=Το Apache Flex μπορεί προαιρετικά να χρησιμοποιήσει το Adobe BlazeDS. Η λειτουργία αυτή απαιτεί το αρχείο flex-messaging-common.jar που βρίσκεται στο Adobe Flex SDK. Για το αρχείο αυτό ισχύει η συμφωνία χρήσης της άδειας Adobe SDK για το Adobe Flex 4.6. Η άδεια αυτή δεν είναι συμβατή με την άδεια χρήσης Apache V2. Θέλετε να εγκαταστήσετε το αρχείο αυτά απο το Adobe Flex SDK;
+ASK_FONTSWF=Το Apache Flex μπορεί προαιρετικά να χρησιμοποιήσει την υποστήριξη που παρέχει η Adobe για ενσωματωμένες γραματοσειρές. Η λειτουργία αυτή απαιτεί κάποια jar αρχεία που υπάρχουν στο Adobe Flex SDK. Για τα αρχεία αυτά ισχύει η συμφωνία χρήσης της άδειας Adobe SDK για το Adobe Flex 4.6. Η άδεια αυτή δεν είναι συμβατή με την άδεια χρήσης Apache V2. Θέλετε να εγκαταστήσετε τα αρχεία αυτά απο το Adobe Flex SDK;
+ASK_OSMF=Για το Open Source Media Framework (OSMF) που χρησιμοποιείται απο τα αντικείμενα video ισχύει η συμφωνία χρήσης του Mozilla Public License Version 1.1. Θέλετε να εγκαταστήσετε το  Για το Open Source Media Framework (OSMF);
+ASK_TLF=Για το Adobe Text Layout Framework (TLF) που χρησιμοποιείται απο τα αντικείμενα κειμένου ισχύει η συμφωνία χρήσης Mozilla Public License Version 1.1. Θέλετε να εγκαταστήσετε το Adobe Text Layout Framework (TLF);
+ASK_APACHE_FLEX=Για το Apache Flex SDK ισχύει η συμφωνία χρήσης του Apache License V2. Θέλετε να εγκαταστήσετε το Apache Flex SDK;
+ASK_ADOBE_AIR_SDK=Για το Adobe AIR SDK ισχύει η συμφωνία χρήσης του Adobe SDK License. Θέλετε να εγκαταστήσετε το Adobe AIR SDK;
+ASK_ADOBE_FLASH_PLAYER_GLOBAL_SWC=Για το Adobe Flash Player playerglobal.swc ισχύει η συμφωνία χρήσης του Adobe SDK License. Θέλετε να εγκαταστήσετε το Adobe Flash Player playerglobal.swc;
+ASK_SWFOBJECT=Για το SWFObject ισχύει η συμφωνία χρήσης του MIT License (MIT). Θέλετε να εγκαταστήσετε το SWFObject;
+ASK_OFL_FONTS=The FlatSpark theme uses fonts licensed under the Open Font License.  Do you want to install the Font Awesome and Lato Fonts?
+BTN_LABEL_ADOBE_LICENSE=ΠΡΟΒΟΛΗ ADOBE LICENSE
+BTN_LABEL_MPL_LICENSE=ΠΡΟΒΟΛΗ MPL LICENSE
+BTN_DISCLAIMER=Αποποίηση Ευθυνών
+ERROR_MIRROR_FETCH=Σφάλμα κατα τη διάρκεια ανάκτησης μιας σελίδας για την λήψη των αρχείων του Apache Flex SDK
+ERROR_UNABLE_TO_DOWNLOAD_FILE=Αδυνατη λήψη του {0}
+ERROR_UNABLE_TO_UNZIP=Δεν μπορεί να γίνει αποσυμπίεση του αρχείου:
+ERROR_UNABLE_TO_DOWNLOAD_SWF_OBJECT=Δεν μπορεί να γίνει λήψη του SWFObject
+ERROR_VERIFY_FLEX_SDK=Η επαλήθευση των ληφθέντων αρχείων απέτυχε. Η εγκατάσταση σταμάτησε.
+FETCH_GEO_IP=Προσπάθεια λήψης της χώρας διαμονής του χρήστη με χρήση της υπηρεσίας GeoIP...
+FETCH_GEO_IP_DONE='Εγινε λήψη της χώρας διαμονής του χρήστη απο την υπηρεσία GeoIP.
+FETCH_GEO_IP_ERROR=Σφάλμα κατα τη λήψη της χώρας διαμονής του χρήστη από την υπηρεσία GeoIP...
+FETCH_MIRROR_CGI=Προσπάθεια ανάκτησης διαθέσιμης σελίδας λήψης απο CGI...
+FETCH_MIRROR_CGI_DONE=Έγινε ανάκτηση διαθέσιμης σελίδας λήψης απο CGI.
+FETCH_MIRROR_CGI_ERROR=Αποτυχία ανάκτησης διαθέσιμης σελίδας λήψης απο CGI.
+FETCH_MIRROR_LIST=Γίνεται προσπάθεια ανάκτησης της λίστας διαθέσιμων σελίδων απο Apache.org...
+FETCH_MIRROR_LIST_DONE=Έγινε λήψη των διαθέσιμων σελίδων από Apache.org
+FETCH_MIRROR_LIST_PARSED=Έγινε επεξεργασία των σελίδων χρησιμοποιώντας τον κωδικό χώρας και προέκυψε ο ιστότοπος:
+INFO_DOWNLOADING_ADOBE_FLEX_SDK=Γίνεται λήψη του Adobe Flex SDK από:
+INFO_DOWNLOADING_FILE_FROM=Γίνεται λήψη του {0}  από: {1}
+INFO_LICENSE_AGREEMENTS=Άδειες χρήσης
+INFO_NEED_TO_READ_AND_AGREE_TO_LICENSE=Η εφαρμογή θα κάνει λήψη λογισμικού απο πολλαπλές ιστοσελίδες με διαφορετικές άδειες χρήσης. Παρακαλώ επιλέξτε κάθε εγγραφή απο την λίστα αριστερά, διαβάστε την άδεια χρήσης και βεβαιώθείτε πως συμφωνείτε με τους όρους της κάθε άδειας.
+INFO_VERIFY_FLEX_SDK_DONE=Η επαλήθευση των ληφθέντων αρχείων είναι επιτυχής.
+INFO_WINDOW_TITLE=Εγκαταστήστε το  Apache Flex SDK {0} για χρήση με το  IDE σας
+INSTALL_AGREE=Συμφωνώ, να γίνει εγκατάσταση
+INSTALL_AGREE_ALL=Συμφωνώ με όλες τις άδειες χρήσης και τις επιλογές. Να γίνει εγκατάσταση.
+INSTALL_DISAGREE=Δεν συμφωνώ. Να μην γίνει εγκατάσταση.
+STEP_REQUIRED_INSTALL_APACHE_FLEX_SDK=Apache Flex SDK (Απαιτούμενο)
+STEP_REQUIRED_INSTALL_ADOBE_AIR_SDK=Adobe AIR SDK (Απαιτούμενο)
+STEP_REQUIRED_INSTALL_FLASH_PLAYER_GLOBAL_SWC=Adobe Flash Player playerglobal.swc (Απαιτούμενο)
+STEP_REQUIRED_INSTALL_SWFOBJECT=SWFObject (Απαιτούμενο)
+STEP_REQUIRED_INSTALL_OSMF=OSMF (Απαιτούμενο)
+STEP_REQUIRED_INSTALL_TLF=Adobe Text Layout Framework (Απαιτούμενο)
+STEP_REQUIRED_INSTALL_OFL_FONTS=Font Awesome and Lato Fonts (Απαιτούμενο)
+STEP_OPTIONAL_INSTALL_BLAZEDS=Remoting Support (Προαιρετικό)
+STEP_OPTIONAL_INSTALL_FONTSWF=Adobe Embedded Font Libraries and Utilities (Προαιρετικό)
+STEP_REQUIRED_UNZIP_AIR_RUNTIME_KIT=Αποσυμπίεση του Adobe AIR Runtime Kit
+STEP_VERIFY_FLEX_SDK=Γίνεται επαλήθευση του Apache Flex SDK MD5 Signature
+LICENSE_ADOBE_SDK='Αδεια χρήσης Adobe Flex SDK
+LICENSE_ADOBE_AIR_SDK='Αδεια χρήσης Adobe AIR SDK
+LICENSE_FONTSWF='Αδεια χρήσης Adobe Flex SDK
+LICENSE_BLAZEDS='Αδεια χρήσης Adobe Flex SDK
+INFO_TRACKING=Anonymous usage statistics will be collected\nin accordance with our privacy policy.
+