⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 startupinfo.as

📁 flex 实现的一个showcase 喜欢flex的朋友可以
💻 AS
字号:
package com.finetune.apollo.autoupdate
{
	
	import com.finetune.apollo.*;
	
	import flash.events.*;
	import flash.filesystem.*;
	import flash.net.*;
	
	import mx.core.*;
	
	[Bindable]
	
	public class StartupInfo extends EventDispatcher{
		
		static public const UPDATENEEDED:String="updateneeded";
		
		public var killswitchengage:Boolean=false;
		public var localversion:VersionNumber=new VersionNumber();
		public var latestversion:VersionNumber=new VersionNumber();
		public var remoteversions:Array;
		
		
		private var __loader:URLLoader;
		private var __load_stream:FileStream;
		
		private var __saveurl:String
		
		
		
		public function run(url:String):void{
			this.__saveurl=url;
			this.loadLocalAppData();
		}
		
		private function loadRemoteData():void{
			this.__loader=new URLLoader();
			this.__loader.addEventListener(Event.COMPLETE,handleResult);
			this.__loader.addEventListener(IOErrorEvent.IO_ERROR,handleFailure);
			
			var req:URLRequest=new URLRequest(this.__saveurl);
			this.__loader.load(req);
		}
		
		
		private function handleResult(event:Event):void{
			try{
				var xm:XML=XML(this.__loader.data);
				trace(xm.toXMLString());
				this.processData(xm);
			}catch(e:Error){
				this.remoteversions=null;
				trace("There was a parsing error!");
			}
			this.dataComplete();
		}
		
		private function handleFailure(event:IOErrorEvent):void{
			trace("Load Failed");
			this.dataComplete();
		}
		
		
		private function dataComplete():void{
			if(this.localversion!=null && this.remoteversions!=null){
				this.runAutoUpdateComparisons();
			}else{
				this.proceed();	
			}
		}
		
		
		
		private function processData(xm:XML):void{
			var killswitch:String=xm.killswitch.engage;
			if(killswitch=="true"){
				this.killswitchengage=true;
			}
			var versions:XMLList=xm.versions.version;
			var checkversions:Array=new Array();
			
			for(var i:uint=0;i<versions.length();i++){
				var v_num_str:String=versions[i].number;
				var version:VersionNumber=new VersionNumber(v_num_str);
				version.level=versions[i].level;
				version.location=versions[i].location;
				checkversions.push(version);
			}
			
			this.sortVersions(checkversions);
			this.remoteversions=checkversions;
			trace("Max Version Is:"+checkversions[0].major+":"+checkversions[0].minor+":"+checkversions[0].revision);
		}
		
		private function sortVersions(arr:Array):void{
			arr.sortOn(new Array("major","minor","revision"),Array.NUMERIC | Array.DESCENDING);
		}
		
		
		private function loadLocalAppData():void{
			//try{
			//var appfileurl:File=File.applicationDirectory.resolvePath("META-INF/AIR/application.xml");
			//trace(appfileurl.nativePath);
			//__load_stream=new FileStream();
			//__load_stream.open(appfileurl,FileMode.READ);
			//var data:String=__load_stream.readUTFBytes(__load_stream.bytesAvailable);
			//__load_stream.close();
			var i_app:WindowedApplication=Application.application as WindowedApplication;
			var data:String=i_app.nativeApplication.applicationDescriptor;
			trace("LOCAL DATA:"+data);
			this.processLocalAppData(data);
			//}catch(e:Error){
			//	trace("Failed to Load Local Version Info");
				//this.localDataLoaded();
			//}
		}
		
		
		private function processLocalAppData(data:String):void{
			var xm:XML=XML(data);
			var versiondata:String=xm.children()[2];
			//trace("VERSION DATA>>>"+xm.initialWindow.content);
			this.localversion=new VersionNumber(versiondata);
			//trace("Local Version:"+this.localversion.major+":"+this.localversion.minor+":"+this.localversion.revision);
			this.localDataLoaded();
		}
		
		private function localDataLoaded():void{
			this.loadRemoteData();
		}
		
		private function proceed():void{
			this.dispatchEvent(new Event(Event.COMPLETE));
		}
		
		private function runAutoUpdateComparisons():void{
			this.latestversion=this.remoteversions[0];
			var item1:VersionNumber=this.localversion;
			var item2:VersionNumber=this.remoteversions[0];
						
			if((item1.major==item2.major && item1.minor==item2.minor && item1.revision==item2.revision) || !item1.hasRealVersionInfo()){
				trace("YOU HAVE CURRENT VERSION");
				this.proceed();	
			}else{
				var comp_arr:Array=new Array();
				comp_arr.push(item1);
				comp_arr.push(item2);
				this.sortVersions(comp_arr);
				if(comp_arr[0]==item2){
					trace("YOU NEED UPDATE:"+item1.getVersionString()+":"+item2.getVersionString());
					this.dispatchEvent(new Event(UPDATENEEDED));
				}else{
					trace("YOU HAVE CURRENT VERSION");
					this.proceed();
				}
			}

			
		}
		
		public function runAutoUpdate():void{
			
			var item:VersionNumber=this.remoteversions[0];
			if(item.location!=null){
				var file:File=FinetuneMyMusicFolder.getFolderForOS().resolvePath("updates/finetunedesktop.air");
				var url:String=item.location;
				AutoUpdate.get().run(url,file,latestversion.getVersionString());
			}
		}
		
		
		
		
		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -