Revision: 9097
Updated Code
at October 21, 2008 09:35 by u961091
Updated Code
package desktop.update
{
import desktop.download.FileDownloader;
import desktop.events.DesktopEvent;
import flash.desktop.NativeApplication;
import flash.desktop.Updater;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.HTTPStatusEvent;
import flash.events.IEventDispatcher;
import flash.events.IOErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLRequestHeader;
[Event(name="checkStart", type="desktop.events.DesktopEvent")]
[Event(name="checkComplete",type="desktop.events.DesktopEvent")]
[Event(name="verIOError", type="desktop.events.DesktopEvent")]
[Event(name="updateStart", type="desktop.events.DesktopEvent")]
[Event(name="progress", type="desktop.events.DesktopEvent")]
[Event(name="downloadError",type="desktop.events.DesktopEvent")]
public class UpdateManager extends EventDispatcher
{
private var fileDownloader:FileDownloader = new FileDownloader();
private var versionLoader:URLLoader = new URLLoader();
private var updXmlMng:UpdateXmlManager = UpdateXmlManager.getManager();
private var httpStatus:int = 0;
private var updateVersion:String;
public var totalBytes:int = 0;
public var loadedBytes:int = 0;
public var currentVersion:String;
public var versionFileURL:String;
public function UpdateManager(target:IEventDispatcher=null)
{
super(target);
}
//==============================================
// �������� � �����
public function autoUpdateStandby():void{
this.versionFileURL = updXmlMng.getUpdateXmlPath();
this.addEventListener(DesktopEvent.CHECK_COMPLETE,updateEnd,false,0,true);
this.addEventListener(DesktopEvent.VER_IO_ERROR,updateEnd,false,0,true);
this.addEventListener(DesktopEvent.DOWNLOAD_ERROR,updateEnd,false,0,true);
// this.checkVersion();
}
private function updateEnd(event:DesktopEvent):void{
this.dispatchEvent(new DesktopEvent(DesktopEvent.UPDATE_END));
}
//==============================================
public function checkVersion():void {
onInit();
}
private function onInit():void {
setApplicatioNameAndVersion();
fileDownloader.addEventListener(DesktopEvent.PROGRESS,onDownloadProgress,false,0,true);
fileDownloader.addEventListener(DesktopEvent.IO_ERROR,onDownloadError,false,0,true);
fileDownloader.addEventListener(DesktopEvent.SAVE_COMPLETE,onDownloadComplete,false,0,true);
onUpdate();
}
private function onUpdate():void {
var req:URLRequest = new URLRequest(versionFileURL);
var header:URLRequestHeader = new URLRequestHeader("pragma","no-cache");
req.requestHeaders.push(header);
versionLoader.addEventListener(IOErrorEvent.IO_ERROR,onCheckError,false,0,true);
versionLoader.addEventListener(Event.COMPLETE,versionLoadComplete,false,0,true);
versionLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS,httpStatusHandler,false,0,true);
versionLoader.load(req);
}
private function versionLoadComplete(event:Event):void {
if (httpStatus!=200) return;
try {
updateVersion = XML(event.currentTarget.data).version;
} catch (err:Error) {
onDownloadError();
return;
}
var tmpStr:String = updateVersion.replace("Version ","");
var tmpStrArray:Array = tmpStr.split(".");
var updateVersionNum:int = getVersionNum(tmpStrArray);
currentVersion = currentVersion.replace("Version ","");
var currentVersionArray:Array = currentVersion.split(".");
var currentVersionNum:int = getVersionNum(currentVersionArray);
// trace(currentVersionNum,updateVersionNum);
if (updateVersionNum>currentVersionNum) {
this.dispatchEvent(new DesktopEvent(DesktopEvent.UPDATE_START));
fileDownloader.download(XML(event.currentTarget.data).url,FileDownloader.TEMP_FILE);
} else {
this.dispatchEvent(new DesktopEvent(DesktopEvent.CHECK_COMPLETE));
}
}
private function getVersionNum(arg:Array):int {
var i:int;
for (i=0;i<arg.length;i++) {
if (arg[i].length==1) arg[i] = "00" + arg[i];
else if (arg[i].length==2) arg[i] = "0" + arg[i];
}
return int(arg.join().replace(/,/g,""));
}
private function httpStatusHandler(event:HTTPStatusEvent):void {
httpStatus = event.status;
if (event.status!=200) this.dispatchEvent(new DesktopEvent(DesktopEvent.VER_IO_ERROR));
}
private function onCheckError(event:IOErrorEvent):void {
this.dispatchEvent(new DesktopEvent(DesktopEvent.VER_IO_ERROR));
}
//==============================================
private function onDownloadProgress(event:DesktopEvent):void {
totalBytes = event.currentTarget.bytesTotal;
loadedBytes = event.currentTarget.bytesLoaded;
// trace(loadedBytes + "/" + totalBytes);
this.dispatchEvent(new DesktopEvent(DesktopEvent.PROGRESS));
}
private function onDownloadError(event:DesktopEvent=null):void {
this.dispatchEvent(new DesktopEvent(DesktopEvent.DOWNLOAD_ERROR));
}
private function onDownloadComplete(event:DesktopEvent):void {
var updater:Updater = new Updater();
try {
// trace(updateVersion);
updater.update(fileDownloader.file,updateVersion);
}
catch (e:Error) {
// trace(e.message);
this.dispatchEvent(new DesktopEvent(DesktopEvent.CHECK_COMPLETE));
}
}
private function setApplicatioNameAndVersion():void {
var appXML:XML = NativeApplication.nativeApplication.applicationDescriptor;
var ns:Namespace = appXML.namespace();
currentVersion = appXML.ns::version;
}
}
}
Revision: 9096
Updated Code
at October 21, 2008 09:34 by u961091
Updated Code
package desktop.update
{
import desktop.download.FileDownloader;
import desktop.events.DesktopEvent;
import flash.desktop.NativeApplication;
import flash.desktop.Updater;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.HTTPStatusEvent;
import flash.events.IEventDispatcher;
import flash.events.IOErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLRequestHeader;
[Event(name="checkStart", type="desktop.events.DesktopEvent")]
[Event(name="checkComplete",type="desktop.events.DesktopEvent")]
[Event(name="verIOError", type="desktop.events.DesktopEvent")]
[Event(name="updateStart", type="desktop.events.DesktopEvent")]
[Event(name="progress", type="desktop.events.DesktopEvent")]
[Event(name="downloadError",type="desktop.events.DesktopEvent")]
public class UpdateManager extends EventDispatcher
{
private var fileDownloader:FileDownloader = new FileDownloader();
private var versionLoader:URLLoader = new URLLoader();
private var updXmlMng:UpdateXmlManager = UpdateXmlManager.getManager();
private var httpStatus:int = 0;
private var updateVersion:String;
public var totalBytes:int = 0;
public var loadedBytes:int = 0;
public var currentVersion:String;
public var versionFileURL:String;
public function UpdateManager(target:IEventDispatcher=null)
{
super(target);
}
//==============================================
// �������� � �����
public function autoUpdateStandby():void{
this.versionFileURL = updXmlMng.getUpdateXmlPath();
this.addEventListener(DesktopEvent.CHECK_COMPLETE,updateEnd,false,0,true);
this.addEventListener(DesktopEvent.VER_IO_ERROR,updateEnd,false,0,true);
this.addEventListener(DesktopEvent.DOWNLOAD_ERROR,updateEnd,false,0,true);
// this.checkVersion();
}
private function updateEnd(event:DesktopEvent):void{
this.dispatchEvent(new DesktopEvent(DesktopEvent.UPDATE_END));
}
//==============================================
public function checkVersion():void {
onInit();
}
private function onInit():void {
setApplicatioNameAndVersion();
fileDownloader.addEventListener(DesktopEvent.PROGRESS,onDownloadProgress,false,0,true);
fileDownloader.addEventListener(DesktopEvent.IO_ERROR,onDownloadError,false,0,true);
fileDownloader.addEventListener(DesktopEvent.SAVE_COMPLETE,onDownloadComplete,false,0,true);
onUpdate();
}
private function onUpdate():void {
var req:URLRequest = new URLRequest(versionFileURL);
var header:URLRequestHeader = new URLRequestHeader("pragma","no-cache");
req.requestHeaders.push(header);
versionLoader.addEventListener(IOErrorEvent.IO_ERROR,onCheckError,false,0,true);
versionLoader.addEventListener(Event.COMPLETE,versionLoadComplete,false,0,true);
versionLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS,httpStatusHandler,false,0,true);
versionLoader.load(req);
}
private function versionLoadComplete(event:Event):void {
if (httpStatus!=200) return;
try {
updateVersion = XML(event.currentTarget.data).version;
} catch (err:Error) {
onDownloadError();
return;
}
var tmpStr:String = updateVersion.replace("Version ","");
var tmpStrArray:Array = tmpStr.split(".");
var updateVersionNum:int = getVersionNum(tmpStrArray);
currentVersion = currentVersion.replace("Version ","");
var currentVersionArray:Array = currentVersion.split(".");
var currentVersionNum:int = getVersionNum(currentVersionArray);
// trace(currentVersionNum,updateVersionNum);
if (updateVersionNum>currentVersionNum) {
this.dispatchEvent(new DesktopEvent(DesktopEvent.UPDATE_START));
fileDownloader.download(XML(event.currentTarget.data).url,FileDownloader.TEMP_FILE);
} else {
this.dispatchEvent(new DesktopEvent(DesktopEvent.CHECK_COMPLETE));
}
}
private function getVersionNum(arg:Array):int {
var i:int;
for (i=0;i<arg.length;i++) {
if (arg[i].length==1) arg[i] = "00" + arg[i];
else if (arg[i].length==2) arg[i] = "0" + arg[i];
}
return int(arg.join().replace(/,/g,""));
}
private function httpStatusHandler(event:HTTPStatusEvent):void {
httpStatus = event.status;
if (event.status!=200) this.dispatchEvent(new DesktopEvent(DesktopEvent.VER_IO_ERROR));
}
private function onCheckError(event:IOErrorEvent):void {
this.dispatchEvent(new DesktopEvent(DesktopEvent.VER_IO_ERROR));
}
//==============================================
private function onDownloadProgress(event:DesktopEvent):void {
totalBytes = event.currentTarget.bytesTotal;
loadedBytes = event.currentTarget.bytesLoaded;
// trace(loadedBytes + "/" + totalBytes);
this.dispatchEvent(new DesktopEvent(DesktopEvent.PROGRESS));
}
private function onDownloadError(event:DesktopEvent=null):void {
this.dispatchEvent(new DesktopEvent(DesktopEvent.DOWNLOAD_ERROR));
}
private function onDownloadComplete(event:DesktopEvent):void {
var updater:Updater = new Updater();
try {
// trace(updateVersion);
updater.update(fileDownloader.file,updateVersion);
}
catch (e:Error) {
// trace(e.message);
this.dispatchEvent(new DesktopEvent(DesktopEvent.CHECK_COMPLETE));
}
}
private function setApplicatioNameAndVersion():void {
var appXML:XML = NativeApplication.nativeApplication.applicationDescriptor;
var ns:Namespace = appXML.namespace();
currentVersion = appXML.ns::version;
}
}
}
Revision: 9095
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at October 21, 2008 05:20 by u961091
Initial Code
package desktop.update
{
import desktop.download.FileDownloader;
import desktop.events.DesktopEvent;
import flash.desktop.NativeApplication;
import flash.desktop.Updater;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.HTTPStatusEvent;
import flash.events.IEventDispatcher;
import flash.events.IOErrorEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLRequestHeader;
[Event(name="checkStart", type="desktop.events.DesktopEvent")]
[Event(name="checkComplete",type="desktop.events.DesktopEvent")]
[Event(name="verIOError", type="desktop.events.DesktopEvent")]
[Event(name="updateStart", type="desktop.events.DesktopEvent")]
[Event(name="progress", type="desktop.events.DesktopEvent")]
[Event(name="downloadError",type="desktop.events.DesktopEvent")]
public class UpdateManager extends EventDispatcher
{
private var fileDownloader:FileDownloader = new FileDownloader();
private var versionLoader:URLLoader = new URLLoader();
private var updXmlMng:UpdateXmlManager = UpdateXmlManager.getManager();
private var httpStatus:int = 0;
private var updateVersion:String;
public var totalBytes:int = 0;
public var loadedBytes:int = 0;
public var currentVersion:String;
public var versionFileURL:String;
public function UpdateManager(target:IEventDispatcher=null)
{
super(target);
}
//==============================================
// アップデート開始 > アプリ開始
public function autoUpdateStandby():void{
this.versionFileURL = updXmlMng.getUpdateXmlPath();
this.addEventListener(DesktopEvent.CHECK_COMPLETE,updateEnd,false,0,true);
this.addEventListener(DesktopEvent.VER_IO_ERROR,updateEnd,false,0,true);
this.addEventListener(DesktopEvent.DOWNLOAD_ERROR,updateEnd,false,0,true);
// this.checkVersion();
}
private function updateEnd(event:DesktopEvent):void{
this.dispatchEvent(new DesktopEvent(DesktopEvent.UPDATE_END));
}
//==============================================
public function checkVersion():void {
onInit();
}
private function onInit():void {
setApplicatioNameAndVersion();
fileDownloader.addEventListener(DesktopEvent.PROGRESS,onDownloadProgress,false,0,true);
fileDownloader.addEventListener(DesktopEvent.IO_ERROR,onDownloadError,false,0,true);
fileDownloader.addEventListener(DesktopEvent.SAVE_COMPLETE,onDownloadComplete,false,0,true);
onUpdate();
}
private function onUpdate():void {
var req:URLRequest = new URLRequest(versionFileURL);
var header:URLRequestHeader = new URLRequestHeader("pragma","no-cache");
req.requestHeaders.push(header);
versionLoader.addEventListener(IOErrorEvent.IO_ERROR,onCheckError,false,0,true);
versionLoader.addEventListener(Event.COMPLETE,versionLoadComplete,false,0,true);
versionLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS,httpStatusHandler,false,0,true);
versionLoader.load(req);
}
private function versionLoadComplete(event:Event):void {
if (httpStatus!=200) return;
try {
updateVersion = XML(event.currentTarget.data).version;
} catch (err:Error) {
onDownloadError();
return;
}
var tmpStr:String = updateVersion.replace("Version ","");
var tmpStrArray:Array = tmpStr.split(".");
var updateVersionNum:int = getVersionNum(tmpStrArray);
currentVersion = currentVersion.replace("Version ","");
var currentVersionArray:Array = currentVersion.split(".");
var currentVersionNum:int = getVersionNum(currentVersionArray);
// trace(currentVersionNum,updateVersionNum);
if (updateVersionNum>currentVersionNum) {
this.dispatchEvent(new DesktopEvent(DesktopEvent.UPDATE_START));
fileDownloader.download(XML(event.currentTarget.data).url,FileDownloader.TEMP_FILE);
} else {
this.dispatchEvent(new DesktopEvent(DesktopEvent.CHECK_COMPLETE));
}
}
private function getVersionNum(arg:Array):int {
var i:int;
for (i=0;i<arg.length;i++) {
if (arg[i].length==1) arg[i] = "00" + arg[i];
else if (arg[i].length==2) arg[i] = "0" + arg[i];
}
return int(arg.join().replace(/,/g,""));
}
private function httpStatusHandler(event:HTTPStatusEvent):void {
httpStatus = event.status;
if (event.status!=200) this.dispatchEvent(new DesktopEvent(DesktopEvent.VER_IO_ERROR));
}
private function onCheckError(event:IOErrorEvent):void {
this.dispatchEvent(new DesktopEvent(DesktopEvent.VER_IO_ERROR));
}
//==============================================
private function onDownloadProgress(event:DesktopEvent):void {
totalBytes = event.currentTarget.bytesTotal;
loadedBytes = event.currentTarget.bytesLoaded;
// trace(loadedBytes + "/" + totalBytes);
this.dispatchEvent(new DesktopEvent(DesktopEvent.PROGRESS));
}
private function onDownloadError(event:DesktopEvent=null):void {
this.dispatchEvent(new DesktopEvent(DesktopEvent.DOWNLOAD_ERROR));
}
private function onDownloadComplete(event:DesktopEvent):void {
var updater:Updater = new Updater();
try {
// trace(updateVersion);
updater.update(fileDownloader.file,updateVersion);
}
catch (e:Error) {
// trace(e.message);
this.dispatchEvent(new DesktopEvent(DesktopEvent.CHECK_COMPLETE));
}
}
private function setApplicatioNameAndVersion():void {
var appXML:XML = NativeApplication.nativeApplication.applicationDescriptor;
var ns:Namespace = appXML.namespace();
currentVersion = appXML.ns::version;
}
}
}
Initial URL
Initial Description
Initial Title
アップデート用 as
Initial Tags
update
Initial Language
ActionScript 3