티스토리 뷰
참고 : http://blog.naver.com/skyhool?Redirect=Log&logNo=150075918526
개발후 버젼관리가 참 중요하다. 업데이트에 대해 알아보자
자동업데이트냐 수동이냐는 상황에 맞게 하면 될듯하고
여러가지 방법이 있겠지만...
*.air 파일이 있는 서버에 변경된 버젼정보와 다운 url 을 txt 파일로 만들어 놓자
예) 1.7,http://localhost:40080/AIR/Onair.air
어플실행시 서버쪽 버젼과 클라이언트 [Descriptor File (*-app.xml) 의 버젼]을 비교해서
틀리면 해당 파일을 URLStream 으로 읽고 FileStream 으로 써주고 해당 클라이언트 버젼을
업데이트 하면 끝난다.
대략소스는 다음과 같다
import air.update.ApplicationUpdater;
import air.update.events.DownloadErrorEvent;
import air.update.events.StatusUpdateErrorEvent;
import air.update.events.StatusUpdateEvent;
import air.update.events.UpdateEvent;
import com.adobe.viewsource.*;
import com.codeazur.fzip.*;
import com.codezur.utils.*;
import mx.containers.Canvas;
private var _latestVersion:String;
private var _airFileUrl:String;
private function creationCompleteHandler():void {
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, completeHandler);
loader.load(new URLRequest(parentDocument.Aurl + "/AIR/latestversion.txt"));
}
private function completeHandler(event:Event):void {
var loader:URLLoader = event.target as URLLoader;
_latestVersion = loader.data.split(",")[0];
var descriptor:XML = NativeApplication.nativeApplication.applicationDescriptor;
var air:Namespace = descriptor.namespaceDeclarations()[0];
var currentVersion:String = descriptor.air::version;
if(_latestVersion != currentVersion) {
_airFileUrl = loader.data.split(",")[1];
//textArea.text = "You are running version " + currentVersion + ", However, version " + _latestVersion + " is available, Click the button to update.";
textArea.text = "최신 버젼이 아닙니다.";
updateApplication();
loginbtn.enabled = false;
configbtn.enabled = false;
COMPANY.enabled = false;
USER.enabled = false;
PASS.enabled = false;
} else {
textArea.text = "최신 버젼입니다.";
}
}
private funciton updateApplication():void {
trace("trace : Downloading update");
var stream:URLStream = new URLStream();
stream.addEventListener(ProgressEvent.PROGRESS, progressHandler);
stream.addEventListener(Event.COMPLETE, downloadCompleteHandler);
stream.load(new URLRequest(_airFileUrl));
textArea.text = "최신 버젼으로 업데이트중 입니다. 기다려주세요!!!";
}
private function progressHandler(event:ProgressEvent):void {
textArea.text = "업데이트중. " + event.bytesLoaded + " of " + event.bytesTotal + " bytes";
}
private function downloadCompleteHandler(event:Event):void {
textArea.text = "Download complete";
var urlStream:URLStream = event.target as URLStream;
var file:File = File.desktopDirectory.resolvePath("Onair.air");
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.WRITE);
var bytes:ByteArray = new ByteArray();
urlStream.readBytes(bytes);
fileStream.writeBytes(bytes);
fileStream.close();
trace("trace : file : " + file + "trace : _latextVersion : " + _latextVersion);
var updater:Updater = new Updater();
updater.update(file, _latextVersion);
}
'Language > Flex' 카테고리의 다른 글
[ Flex ][ Source ] ex04_02 : 클래스 정의 및 사용법 / ex06_01 : set get (0) | 2015.11.29 |
---|---|
[ Flex ][ Source ] ex03_01 : Button에 이벤트 넣기 (0) | 2015.11.29 |
[ Flex AIR ] Air 와 swf 간에 LocalConnection 으로 통신할때 주의할 점 (0) | 2015.11.29 |
[ Flex AIR ] FullScreen 생성방법 (0) | 2015.11.29 |
[ Flex AIR ] RemoteObject | Flex ( Arraycollection ) -> Java ( List ) (0) | 2015.11.29 |