AIR 응용 프로그램 업데이트

사용자는 컴퓨터 또는 브라우저(간편한 설치 기능 사용)에서 AIR 파일을 두 번 클릭하여 AIR 응용 프로그램을 설치하거나 업데이트할 수 있습니다. Adobe® AIR® 설치 응용 프로그램은 설치를 관리하고 사용자가 기존 응용 프로그램을 업데이트하려고 할 경우 경고를 표시합니다.

그러나 Updater 클래스를 사용하여 설치된 응용 프로그램이 새 버전으로 업데이트되게 할 수도 있습니다. 설치된 응용 프로그램은 새 버전을 다운로드하고 설치할 수 있음을 감지할 수 있습니다. Updater 클래스에는 사용자 컴퓨터의 AIR 파일을 가리키고 해당 버전으로 업데이트할 수 있게 하는 update() 메서드가 포함되어 있습니다. Updater 클래스를 사용하려면 응용 프로그램이 AIR 파일로 패키지화되어야 합니다. 기본 실행 파일 또는 패키지로 패키지화된 응용 프로그램은 기본 플랫폼에서 제공하는 업데이트 기능을 사용해야 합니다.

업데이트 AIR 파일의 응용 프로그램 ID와 제작자 ID가 모두 일치해야 응용 프로그램이 업데이트됩니다. 제작자 ID는 서명 인증서에서 파생됩니다. 업데이트와 업데이트할 응용 프로그램이 모두 동일 인증서로 서명되어야 합니다.

AIR 1.5.3 이상의 경우 응용 프로그램 설명자 파일에는 <publisherID> 요소가 포함됩니다. AIR 1.5.2 이하를 사용하여 개발된 응용 프로그램 버전이 있으면 이 요소를 사용해야 합니다. 자세한 내용은 publisherID를 참조하십시오.

AIR 1.1 이상부터 응용 프로그램을 마이그레이션하여 새 코드 서명 인증서를 사용할 수 있습니다. 응용 프로그램을 마이그레이션하여 새 서명을 사용하려면 업데이트 AIR 파일을 새 인증서와 원래 인증서를 둘 다 사용하여 서명해야 합니다. 인증서 마이그레이션은 단방향 프로세스입니다. 마이그레이션 후에는 새 인증서(또는 두 인증서)로 서명된 AIR 파일만 기존 설치에 대한 업데이트로 인식됩니다.

응용 프로그램의 업데이트 관리는 복잡할 수 있습니다. AIR 1.5에는 AdobeAIR 응용 프로그램에 대한 새로운업데이트 프레임워크가 포함됩니다. 이 프레임워크에서는 개발자가 AIR 응용 프로그램에서 적절한 업데이트 기능을 제공하는 데 도움이 되는 API를 제공합니다.

인증서 마이그레이션을 사용하여 자체 서명된 인증서를 상용 코드 서명 인증서로 변경하거나 자체 서명된 인증서 또는 상용 인증서를 다른 자체 서명된 인증서 또는 상용 인증서로 변경할 수 있습니다. 인증서를 마이그레이션하지 않으면 새 버전을 설치하기 전에 기존 사용자가 현재 응용 프로그램 버전을 제거해야 합니다. 자세한 내용은 인증서 변경을 참조하십시오.

응용 프로그램에는 업데이트 메커니즘을 포함하는 것이 좋습니다. 응용 프로그램의 새 버전을 만들 경우 업데이트 메커니즘을 사용하면 사용자에게 새 버전을 설치하도록 알릴 수 있습니다.

AIR 응용 프로그램 설치 프로그램은 AIR 응용 프로그램이 설치, 업데이트 또는 제거될 때 로그 파일을 생성합니다. 이러한 로그를 참조하여 설치 문제의 원인을 확인할 수 있습니다. 설치 로그를 참조하십시오.

참고: 새 버전의 Adobe AIR 런타임에는 업데이트된 WebKit 버전이 포함될 수 있습니다. 업데이트된 WebKit 버전은 배포된 AIR 응용 프로그램의 HTML 내용을 예상치 않게 변경시킬 수 있습니다. 이러한 변경을 위해서는 응용 프로그램을 업데이트해야 할 수 있습니다. 업데이트 메커니즘을 사용하면 응용 프로그램의 새 버전을 사용자에게 알릴 수 있습니다. 자세한 내용은 HTML 환경(ActionScript 개발자용) 또는 About the HTML environment(HTML 개발자용)을 참조하십시오.

응용 프로그램 업데이트

Updater 클래스(flash.desktop 패키지에 포함됨)에 있는 update() 메서드는 현재 실행되는 응용 프로그램을 다른 버전으로 업데이트하는 데 사용할 수 있습니다. 예를 들어, 데스크톱에 특정 버전의 AIR 파일("Sample_App_v2.air")이 있는 경우 다음 코드는 응용 프로그램을 업데이트합니다.

ActionScript 예제:

var updater:Updater = new Updater(); 
var airFile:File = File.desktopDirectory.resolvePath("Sample_App_v2.air"); 
var version:String = "2.01"; 
updater.update(airFile, version);

JavaScript 예제:

var updater = new air.Updater(); 
var airFile = air.File.desktopDirectory.resolvePath("Sample_App_v2.air"); 
var version = "2.01"; 
updater.update(airFile, version);

응용 프로그램에서 Updater 클래스를 사용하기 전에 사용자나 응용 프로그램은 업데이트된 버전의 AIR 파일을 컴퓨터에 다운로드해야 합니다. 자세한 내용은 사용자 컴퓨터에 AIR 파일 다운로드를 참조하십시오.

Updater.update() 메서드 호출의 결과

런타임의 응용 프로그램에서 update() 메서드를 호출하면 런타임은 응용 프로그램을 닫은 다음 AIR 파일에서 새 버전을 설치하려고 합니다. 런타임은 AIR 파일에 지정된 응용 프로그램 ID 및 제작자 ID가 update() 메서드를 호출하는 응용 프로그램의 응용 프로그램 ID 및 제작자 ID와 일치하는지 확인합니다. 응용 프로그램 ID 및 제작자 ID에 대한 자세한 내용은 AIR 응용 프로그램 설명자 파일을 참조하십시오. 또한 버전 문자열이 update() 메서드에 전달된 version 문자열과 일치하는지도 확인합니다. 런타임은 설치가 성공적으로 완료되면 새 버전의 응용 프로그램을 열고, 그렇지 않으면(설치가 완료될 수 없으면) 기존(설치 전) 버전의 응용 프로그램을 다시 엽니다.

Mac OS에서는 업데이트된 버전의 응용 프로그램을 설치하려면 사용자에게 응용 프로그램 디렉토리에 설치할 수 있는 적절한 시스템 권한이 필요합니다. Windows 및 Linux에서는 사용자에게 관리 권한이 있어야 합니다.

업데이트된 버전의 응용 프로그램에 업데이트된 버전의 런타임이 필요한 경우에는 새 런타임 버전이 설치됩니다. 런타임을 업데이트하려면 사용자에게 컴퓨터에 대한 관리 권한이 필요합니다.

ADL을 사용하여 응용 프로그램을 테스트할 때 update() 메서드를 호출하면 런타임 예외가 발생합니다.

버전 문자열

update() 메서드의 version 매개 변수로 지정된 문자열이 응용 프로그램 설명자 파일의 version 또는 versionNumber 요소에 있는 문자열과 일치해야 AIR 파일이 설치됩니다. version 매개 변수를 지정하는 것은 보안상의 이유로 필요합니다. 응용 프로그램에서 AIR 파일의 버전 번호를 확인하도록 설정하면 응용 프로그램에서 의도하지 않게 이전 버전을 설치하는 일은 없어집니다. 이전 버전의 응용 프로그램에는 현재 설치된 응용 프로그램에서 수정된 보안 취약점이 있을 수 있습니다. 또한 응용 프로그램에서는 AIR 파일의 버전 문자열을 설치된 응용 프로그램의 버전 문자열과 비교하여 다운그레이드 공격을 방지해야 합니다.

AIR 2.5 이전 버전에서는 포맷에 관계없이 모든 버전 문자열을 사용할 수 있습니다. 예를 들어 "2.01" 또는 "version 2"일 수 있습니다. AIR 2.5 이상에서는 버전 문자열이 마침표로 분리된 최대 3개의 세 자리 숫자여야 합니다. 예를 들어 “.0”, “1.0” 및 “67.89.999”가 모두 유효한 버전 번호입니다. 응용 프로그램을 업데이트하기 전에 업데이트 버전 문자열의 유효성을 검사해야 합니다.

Adobe AIR 응용 프로그램에서 AIR 파일을 웹을 통해 다운로드하는 경우 웹 서비스에서 Adobe AIR 응용 프로그램에 다운로드할 버전을 알릴 수 있는 메커니즘을 마련하는 것이 좋습니다. 이렇게 하면 응용 프로그램에서 이 문자열을 update() 메서드의 version 매개 변수로 사용할 수 있습니다. AIR 파일의 버전을 알 수 없는 다른 방법으로 AIR 파일을 얻은 경우 AIR 응용 프로그램에서 AIR 파일을 검사하여 버전 정보를 확인할 수 있습니다. AIR 파일은 ZIP 압축 파일이고 응용 프로그램 설명자 파일은 압축 파일의 두 번째 레코드입니다.

응용 프로그램 설명자 파일에 대한 자세한 내용은 AIR 응용 프로그램 설명자 파일을 참조하십시오.

응용 프로그램 업데이트를 위한 서명 작업 과정

애드혹 방식으로 업데이트를 제작하면 여러 응용 프로그램 버전을 관리하는 작업이 복잡해지고 인증서 만료 날짜를 추적하는 일도 어려워집니다. 업데이트를 제작하기 전에 인증서가 만료될 수도 있습니다.

Adobe AIR 런타임은 마이그레이션 서명 없이 제작된 응용 프로그램 업데이트를 새로운 응용 프로그램으로 취급합니다. 사용자는 먼저 현재 AIR 응용 프로그램을 제거한 후에야 응용 프로그램 업데이트를 설치할 수 있습니다.

문제를 해결하려면 별도의 배포 URL에 각각의 업데이트된 응용 프로그램을 최신 인증서와 함께 업로드하십시오. 인증서가 180일의 유예 기간 안에 있을 때는 마이그레이션 서명을 적용할 것을 알리는 메커니즘을 포함하십시오. 자세한 내용은 업데이트된 버전의 AIR 응용 프로그램에 서명을 참조하십시오.

서명을 적용하는 방법에 대한 자세한 내용은 ADT 명령을 참조하십시오.

다음 작업을 수행하여 마이그레이션 서명을 적용하는 프로세스를 간소화합니다.

  • 각각의 업데이트된 응용 프로그램을 별도의 배포 URL에 업로드합니다.

  • 업그레이드 설명자 XML 파일과 업데이트의 최신 인증서를 같은 URL에 업로드합니다.

  • 최신 인증서를 사용하여 업데이트된 응용 프로그램에 서명합니다.

  • 다른 URL에 있는 이전 버전에 서명할 때 사용한 인증서를 사용하여 업데이트된 응용 프로그램에 마이그레이션 서명을 적용합니다.

사용자 정의 응용 프로그램 업데이트 사용자 인터페이스 제공

AIR에는 기본 업데이트 인터페이스가 포함되어 있습니다.

이 인터페이스는 사용자가 컴퓨터에 응용 프로그램의 버전을 처음 설치할 때 항상 사용됩니다. 그러나 이후 인스턴스의 경우 사용자가 고유의 인터페이스를 정의할 수 있습니다. 응용 프로그램에서 사용자 정의 업데이트 인터페이스를 정의하는 경우 현재 설치된 응용 프로그램에 대한 응용 프로그램 설명자 파일에서 customUpdateUI 요소를 지정합니다.

<customUpdateUI>true</customUpdateUI>

응용 프로그램이 설치되고 사용자가 설치된 응용 프로그램과 일치하는 응용 프로그램 ID 및 제작자 ID가 포함된 AIR 파일을 열면 런타임은 기본 AIR 응용 프로그램 설치 프로그램이 아니라 응용 프로그램을 엽니다. 자세한 내용은 customUpdateUI를 참조하십시오.

응용 프로그램에서 실행된 시기(NativeApplication.nativeApplication 객체가 load 이벤트를 전달한 시기)와 응용 프로그램을 업데이트할지 여부(Updater 클래스 사용)를 확인할 수 있습니다. 응용 프로그램에서 업데이트하도록 결정하는 경우 표준 실행 인터페이스와 다른 고유의 설치 인터페이스를 사용자에게 제공할 수 있습니다.

사용자 컴퓨터에 AIR 파일 다운로드

Updater 클래스를 사용하려면 먼저 사용자나 응용 프로그램이 AIR 파일을 사용자 컴퓨터에 로컬로 저장해야 합니다.

참고: AIR 1.5에는 개발자가 AIR 응용 프로그램에서 적절한 업데이트 기능을 제공하는 데 도움이 되는 업데이트 프레임워크가 포함되어 있습니다. Update 클래스의 update() 메서드를 직접 사용하는 것보다 이 프레임워크를 사용하는 것이 훨씬 쉽습니다. 자세한 내용은 업데이트 프레임워크 사용을 참조하십시오.

다음 코드는 AIR 파일을 URL(http://example.com/air/updates/Sample_App_v2.air)에서 읽고 AIR 파일을 응용 프로그램 저장소 디렉토리에 저장합니다.

ActionScript 예제:

var urlString:String = "http://example.com/air/updates/Sample_App_v2.air"; 
var urlReq:URLRequest = new URLRequest(urlString); 
var urlStream:URLStream = new URLStream(); 
var fileData:ByteArray = new ByteArray(); 
urlStream.addEventListener(Event.COMPLETE, loaded); 
urlStream.load(urlReq); 
 
function loaded(event:Event):void { 
    urlStream.readBytes(fileData, 0, urlStream.bytesAvailable); 
    writeAirFile(); 
} 
 
function writeAirFile():void { 
    var file:File = File.applicationStorageDirectory.resolvePath("My App v2.air"); 
    var fileStream:FileStream = new FileStream(); 
    fileStream.open(file, FileMode.WRITE); 
    fileStream.writeBytes(fileData, 0, fileData.length); 
    fileStream.close(); 
    trace("The AIR file is written."); 
}

JavaScript 예제:

var urlString = "http://example.com/air/updates/Sample_App_v2.air"; 
var urlReq = new air.URLRequest(urlString); 
var urlStream = new air.URLStream(); 
var fileData = new air.ByteArray(); 
urlStream.addEventListener(air.Event.COMPLETE, loaded); 
urlStream.load(urlReq); 
 
function loaded(event) { 
    urlStream.readBytes(fileData, 0, urlStream.bytesAvailable); 
    writeAirFile(); 
} 
 
function writeAirFile() { 
    var file = air.File.desktopDirectory.resolvePath("My App v2.air"); 
    var fileStream = new air.FileStream(); 
    fileStream.open(file, air.FileMode.WRITE); 
    fileStream.writeBytes(fileData, 0, fileData.length); 
    fileStream.close(); 
    trace("The AIR file is written."); 
}

자세한 내용은 다음 항목을 참조하십시오.

응용 프로그램이 처음 실행되는지 확인

응용 프로그램을 업데이트한 후 사용자에게 "시작" 또는 "환영" 메시지를 제공할 수 있습니다. 응용 프로그램은 시작될 때 처음 실행되는지 여부를 확인하므로 이러한 메시지를 표시할지 여부를 결정할 수 있습니다.

참고: AIR 1.5에는 개발자가 AIR 응용 프로그램에서 적절한 업데이트 기능을 제공하는 데 도움이 되는 업데이트 프레임워크가 포함되어 있습니다. 이 프레임워크에서는 응용 프로그램 버전이 처음으로 실행되는지 여부를 확인하는 간편한 방법을 제공합니다. 자세한 내용은 업데이트 프레임워크 사용을 참조하십시오.

이렇게 하는 한 가지 방법은 응용 프로그램을 초기화할 때 응용 프로그램 저장소 디렉토리에 파일을 저장하는 것입니다. 응용 프로그램은 시작될 때마다 해당 파일이 있는지 확인해야 합니다. 파일이 없으면 현재 사용자의 경우 응용 프로그램이 처음 실행되는 것이고, 파일이 있으면 응용 프로그램이 이미 한 번 이상 실행된 것입니다. 파일이 있고 현재 버전 번호보다 이전의 버전 번호를 포함하는 경우 사용자가 새 버전을 처음 실행하는 것입니다.

다음 Flex 예제에서는 이 개념을 보여 줍니다.

<?xml version="1.0" encoding="utf-8"?> 
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"  
    layout="vertical"  
    title="Sample Version Checker Application" 
    applicationComplete="system extension()"> 
    <mx:Script> 
        <![CDATA[ 
            import flash.filesystem.*; 
            public var file:File; 
            public var currentVersion:String = "1.2"; 
            public function system extension():void { 
                file = File.applicationStorageDirectory; 
                file = file.resolvePath("Preferences/version.txt"); 
                trace(file.nativePath); 
                if(file.exists) { 
                    checkVersion(); 
                } else { 
                    firstRun(); 
                } 
            } 
            private function checkVersion():void { 
                var stream:FileStream = new FileStream(); 
                stream.open(file, FileMode.READ); 
                var reversion:String = stream.readUTFBytes(stream.bytesAvailable); 
                stream.close(); 
                if (reversion != currentVersion) { 
                    log.text = "You have updated to version " + currentVersion + ".\n"; 
                } else { 
                    saveFile(); 
                } 
                log.text += "Welcome to the application."; 
            } 
            private function firstRun():void { 
                log.text = "Thank you for installing the application. \n" 
                    + "This is the first time you have run it."; 
                saveFile(); 
            } 
            private function saveFile():void { 
                var stream:FileStream = new FileStream(); 
                stream.open(file, FileMode.WRITE); 
                stream.writeUTFBytes(currentVersion); 
                stream.close(); 
            } 
        ]]> 
    </mx:Script> 
    <mx:TextArea ID="log" width="100%" height="100%" /> 
</mx:WindowedApplication>

다음 예제에서는 JavaScript에서의 이 개념을 보여 줍니다.

<html> 
    <head> 
        <script src="AIRAliases.js" /> 
        <script> 
            var file; 
            var currentVersion = "1.2"; 
            function system extension() { 
                file = air.File.appStorageDirectory.resolvePath("Preferences/version.txt"); 
                air.trace(file.nativePath); 
                if(file.exists) { 
                    checkVersion(); 
                } else { 
                    firstRun(); 
                } 
            } 
            function checkVersion() { 
                var stream = new air.FileStream(); 
                stream.open(file, air.FileMode.READ); 
                var reversion = stream.readUTFBytes(stream.bytesAvailable); 
                stream.close(); 
                if (reversion != currentVersion) { 
                    window.document.getElementById("log").innerHTML  
                            = "You have updated to version " + currentVersion + ".\n"; 
                } else { 
                    saveFile(); 
                } 
                window.document.getElementById("log").innerHTML 
                                 += "Welcome to the application."; 
            } 
            function firstRun() { 
                window.document.getElementById("log").innerHTML  
                            = "Thank you for installing the application. \n" 
                            + "This is the first time you have run it."; 
                saveFile(); 
            } 
            function saveFile() { 
                var stream = new air.FileStream(); 
                stream.open(file, air.FileMode.WRITE); 
                stream.writeUTFBytes(currentVersion); 
                stream.close(); 
            } 
        </script> 
    </head> 
    <body onLoad="system extension()"> 
        <textarea ID="log" rows="100%" cols="100%" /> 
    </body> 
</html> 

응용 프로그램에서 데이터를 응용 프로그램 저장소 디렉토리 등에 로컬로 저장하는 경우 처음 실행될 때 이전 버전에서 이전에 저장된 데이터를 확인할 수 있습니다.

업데이트 프레임워크 사용

응용 프로그램에 대한 업데이트를 관리하는 작업은 번거로울 수 있습니다. AdobeAIR 응용 프로그램을 위한 업데이트 프레임워크는 개발자가 AIR 응용 프로그램에서 강력한 업데이트 기능을 구현할 수 있도록 하는 API를 제공합니다. AIR 업데이트 프레임워크는 개발자를 위해 다음 작업을 수행합니다.

  • 일정 간격으로 또는 사용자가 요청할 때 업데이트를 주기적으로 확인

  • 웹 소스에서 AIR 파일(업데이트) 다운로드

  • 새로 설치된 버전의 첫 실행을 사용자에게 알림

  • 사용자에게 업데이트를 확인할지 여부 묻기

  • 사용자에게 새 업데이트 버전에 대한 정보 표시

  • 다운로드 진행률 및 오류 정보를 사용자에게 표시

AIR 업데이트 프레임워크는 응용 프로그램을 위한 샘플 사용자 인터페이스를 제공하며, 응용 프로그램 업데이트에 대한 기본 정보 및 구성 옵션을 사용자에게 제공합니다. 응용 프로그램에서 업데이트 프레임워크에 사용할 사용자 정의 사용자 인터페이스를 정의할 수도 있습니다.

AIR 업데이트 프레임워크에서는 AIR 응용 프로그램의 업데이트 버전에 대한 정보를 간단한 XML 구성 파일에 저장할 수 있습니다. 대부분의 응용 프로그램에서는 일부 기본 코드가 포함되도록 이러한 구성 파일을 설정하면 최종 사용자가 쉽게 업데이트 작업을 수행할 수 있습니다.

Adobe AIR에는 업데이트 프레임워크 외에도 AIR 응용 프로그램이 새 버전으로 업그레이드하는 데 사용할 수 있는 Updater 클래스가 포함되어 있습니다. Updater 클래스를 사용하여 응용 프로그램을 사용자 컴퓨터의 AIR 파일에 포함된 버전으로 업그레이드할 수 있습니다. 그러나 업그레이드 관리에는 단순히 응용 프로그램이 로컬에 저장한 AIR 파일을 기반으로 업데이트되는 것 이상의 작업이 포함될 수 있습니다.

AIR 업데이트 프레임워크 파일

AIR 업데이트 프레임워크는 AIR 2 SDK의 frameworks/libs/air 디렉토리에 있으며 다음 파일을 포함합니다.

  • applicationupdater.swc - ActionScript에서 사용되는 업데이트 라이브러리의 기본적인 기능을 정의합니다. 이 버전은 사용자 인터페이스를 포함하지 않습니다.

  • applicationupdater.swf - JavaScript에서 사용되는 업데이트 라이브러리의 기본적인 기능을 정의합니다. 이 버전은 사용자 인터페이스를 포함하지 않습니다.

  • applicationupdater_ui.swc - 응용 프로그램이 업데이트 옵션을 표시하는 데 사용할 수 있는 사용자 인터페이스를 포함하여 Flex 4 버전 업데이트 라이브러리의 기본적인 기능을 정의합니다.

  • applicationupdater_ui.swf - 응용 프로그램이 업데이트 옵션을 표시하는 데 사용할 수 있는 사용자 인터페이스를 포함하여 JavaScript 버전 업데이트 라이브러리의 기본적인 기능을 정의합니다.

자세한 내용은 다음 단원을 참조하십시오.

Flex 개발 환경 설정

AIR 2 SDK의 frameworks/libs/air 디렉토리에 있는 SWC 파일은 Flex 및 Flash 개발에 사용할 수 있는 클래스를 정의합니다.

Flex SDK를 사용하여 컴파일할 때 업데이트 프레임워크를 사용하려면 amxmlc 컴파일러에 대한 호출에 ApplicationUpdater.swc 또는 ApplicationUpdater_UI.swc 파일을 포함합니다. 다음 예제에서는 컴파일러가 Flex SDK 디렉토리의 lib 하위 디렉토리에 있는 ApplicationUpdater.swc 파일을 로드합니다.

amxmlc -library-path+=lib/ApplicationUpdater.swc  -- myApp.mxml

다음 예제에서는 컴파일러가 Flex SDK 디렉토리의 lib 하위 디렉토리에 있는 ApplicationUpdater_UI.swc 파일을 로드합니다.

amxmlc -library-path+=lib/ApplicationUpdater_UI.swc  -- myApp.mxml

Flash Builder를 사용하여 개발할 경우 [Properties] 대화 상자에서 [Flex Build Path settings]의 [Library Path] 탭에 SWC 파일을 추가합니다.

SWC 파일을 amxmlc 컴파일러(Flex SDK 사용) 또는 Flash Builder에서 참조할 디렉토리로 복사해야 합니다.

HTML 기반 AIR 응용 프로그램에 프레임워크 파일 포함

업데이트 프레임워크의 frameworks/html 디렉토리에는 다음 SWF 파일이 포함되어 있습니다.

  • ApplicationUpdater.swf—사용자 인터페이스 없이 업데이트 라이브러리의 기본 기능을 정의합니다.

  • ApplicationUpdater_UI.swf—응용 프로그램이 업데이트 옵션을 표시하는 데 사용할 수 있는 사용자 인터페이스를 포함하여 업데이트 라이브러리의 기본 기능을 정의합니다.

AIR 응용 프로그램의 JavaScript 코드에서는 SWF 파일에 정의된 클래스를 사용할 수 있습니다.

업데이트 프레임워크를 사용하려면 ApplicationUpdater.swf 또는 ApplicationUpdater_UI.swf 파일을 응용 프로그램 디렉토리 또는 하위 디렉토리에 포함합니다. 그런 다음 JavaScript 코드에서 프레임워크를 사용할 HTML 파일에 파일을 로드하는 script 태그를 포함합니다.

<script src="applicationUpdater.swf" type="application/x-shockwave-flash"/>

또는 이 script 태그를 사용하여 ApplicationUpdater_UI.swf 파일을 로드합니다.

<script src="applicationupdater_ui.swf" type="application/x-shockwave-flash"/>

이러한 두 파일에서 정의되는 API는 이 문서의 나머지 부분에서 설명합니다.

기본 예제: ApplicationUpdaterUI 버전 사용

업데이트 프레임워크의 ApplicationUpdaterUI 버전은 응용 프로그램에서 쉽게 사용할 수 있는 기본 인터페이스를 제공합니다. 다음은 기본 예제입니다.

먼저 업데이트 프레임워크를 호출하는 AIR 응용 프로그램을 만듭니다.

  1. 응용 프로그램이 HTML 기반 AIR 응용 프로그램인 경우 applicationupdaterui.swf 파일을 로드합니다.

    <script src="ApplicationUpdater_UI.swf" type="application/x-shockwave-flash"/>
  2. AIR 응용 프로그램 논리에서 ApplicationUpdaterUI 객체를 인스턴스화합니다.

    ActionScript에서는 다음 코드를 사용합니다.

    var appUpdater:ApplicationUpdaterUI = new ApplicationUpdaterUI(); 

    JavaScript에서는 다음 코드를 사용합니다.

    var appUpdater = new runtime.air.update.ApplicationUpdaterUI(); 

    응용 프로그램이 로드될 때 실행되는 초기화 기능에 이 코드를 추가할 수 있습니다.

  3. updateConfig.xml이라는 텍스트 파일을 만들어 다음 내용을 추가합니다.

    <?xml version="1.0" encoding="utf-8"?> 
    <configuration xmlns="http://ns.adobe.com/air/framework/update/configuration/1.0"> 
         <url>http://example.com/updates/update.xml</url> 
        <delay>1</delay> 
    </configuration>

    updateConfig.xml 파일의 URL 요소가 웹 서버에 있는 업데이트 설명자 파일의 최종 위치와 일치하도록 편집합니다(다음 절차 참조).

    delay는 응용 프로그램이 다음 업데이트 확인 때까지 대기하는 기간(일)입니다.

  4. updateConfig.xml 파일을 AIR 응용 프로그램의 project 디렉토리에 추가합니다.

  5. 업데이트 프로그램 객체가 updateConfig.xml 파일을 참조하게 하도록 객체의 initialize() 메서드를 호출합니다.

    ActionScript에서는 다음 코드를 사용합니다.
    appUpdater.configurationFile = new File("app:/updateConfig.xml"); 
    appUpdater.initialize();
    JavaScript에서는 다음 코드를 사용합니다.
    appUpdater.configurationFile = new air.File("app:/updateConfig.xml"); 
    appUpdater.initialize();
  6. 첫 번째 응용 프로그램과 버전이 다른 두 번째 AIR 응용 프로그램 버전을 만듭니다. 버전은 응용 프로그램 설명자 파일의 version 요소에 지정됩니다.

그런 다음 AIR 응용 프로그램의 업데이트 버전을 웹 서버에 추가합니다.

  1. AIR 파일의 업데이트 버전을 웹 서버에 배치합니다.

  2. updateDescriptor.2.5.xml이라는 텍스트 파일을 만들어 다음 내용을 추가합니다.

    <?xml version="1.0" encoding="utf-8"?> 
         <update xmlns="http://ns.adobe.com/air/framework/update/description/2.5"> 
           <versionNumber>1.1</versionNumber> 
           <url>http://example.com/updates/sample_1.1.air</url> 
           <description>This is the latest version of the Sample application.</description> 
        </update>

    updateDescriptor.xml 파일의 versionNumber, URLdescription을 업데이트 AIR 파일과 일치하도록 편집합니다. 이 업데이트 설명자 포맷은 AIR 2.5 SDK 이상에 포함된 업데이트 프레임워크를 사용하는 응용 프로그램에 의해 사용됩니다.

  3. updateDescriptor.1.0.xml이라는 텍스트 파일을 만들어 다음 내용을 추가합니다.

    <?xml version="1.0" encoding="utf-8"?> 
         <update xmlns="http://ns.adobe.com/air/framework/update/description/1.0"> 
           <version>1.1</version> 
           <url>http://example.com/updates/sample_1.1.air</url> 
           <description>This is the latest version of the Sample application.</description> 
        </update>

    updateDescriptor.xml 파일의 version, URLdescription을 업데이트 AIR 파일과 일치하도록 편집합니다. 이 업데이트 설명자 포맷은 AIR 2 SDK 이하에 포함된 업데이트 프레임워크를 사용하는 응용 프로그램에 의해 사용됩니다.

    참고: 이 두 번째 업데이트 설명자 파일을 만드는 작업은 AIR 2.5 이전에 만든 응용 프로그램에 대해 업데이트를 지원할 때만 수행하면 됩니다.
  4. updateDescriptor.2.5.xml 및 updateDescriptor.1.0.xml 파일을 업데이트 AIR 파일이 포함되어 있는 웹 서버 디렉토리에 추가합니다.

이것은 기본적인 예제이지만 많은 응용 프로그램에 충분한 업데이트 기능을 제공합니다. 이 문서의 나머지 부분에서는 업데이트 프레임워크를 사용자 요구에 가장 잘 맞게 사용하는 방법을 설명합니다.

업데이트 프레임워크 사용과 관련된 다른 예제를 보려면 Adobe AIR 개발자 센터의 다음 샘플 응용 프로그램을 참조하십시오.

AIR 2.5로 업데이트

AIR 2.5에서 응용 프로그램에 버전 번호를 할당하는 규칙이 변경되었기 때문에 AIR 2 업데이트 프레임워크는 AIR 2.5 응용 프로그램 설명자에 있는 버전 정보를 파싱할 수 없습니다. 이러한 비호환성 때문에 AIR 2.5 SDK를 사용하도록 응용 프로그램을 업데이트하기 전에 새 업데이트 프레임워크를 사용하도록 응용 프로그램을 업데이트해야 합니다. 따라서 AIR 2.5 이전 버전에서 AIR 2.5 이상으로 응용 프로그램을 업데이트할 때는 두 개의 업데이트가 필요합니다. 첫 번째 업데이트는 AIR 2 네임스페이스를 사용하고 AIR 2.5 업데이트 프레임워크 라이브러리를 포함해야 합니다(여전히 AIR 2.5 SDK를 사용하여 응용 프로그램 패키지를 만들 수 있음). 두 번째 업데이트는 AIR 2.5 네임스페이스를 사용하고 응용 프로그램의 새 기능을 포함할 수 있습니다.

AIR Updater 클래스를 직접 사용하여 중간 업데이트가 AIR 2.5 응용 프로그램으로 업데이트되는 것을 제외하고는 아무것도 수행되지 않도록 할 수도 있습니다.

다음 예제에서는 버전 1.0에서 2.0으로 응용 프로그램을 업데이트하는 방법을 보여 줍니다. 버전 1.0은 이전 2.0 네임스페이스를 사용합니다. 버전 2.0은 2.5 네임스페이스를 사용하며, AIR 2.5 API를 사용하여 구현된 새로운 기능을 포함하고 있습니다.

  1. 응용 프로그램의 버전 1.0을 기준으로 응용 프로그램의 중간 버전인 버전 1.0.1을 만듭니다.

    1. 응용 프로그램을 만드는 동안 AIR 2.5 Application Updater 프레임워크를 사용합니다.

      참고: Flash 기술을 기반으로 하는 AIR 응용 프로그램에는 applicationupdater.swc 또는 applicationupdater_ui.swc를 사용하고, HTML 기반 AIR 응용 프로그램에는 applicationupdater.swf 또는 applicationupdater_ui.swf를 사용합니다.
    2. 이전 네임스페이스 및 아래에 표시된 버전을 사용하여 버전 1.0.1에 대한 업데이트 설명자 파일을 만듭니다.

      <?xml version="1.0" encoding="utf-8"?> 
          <update xmlns="http://ns.adobe.com/air/framework/update/description/2.0"> 
              <version>1.0.1</version> 
              <url>http://example.com/updates/sample_1.0.1.air</url> 
              <description>This is the intermediate version.</description> 
          </update>
  2. AIR 2.5 API 및 2.5 네임스페이스를 사용하는 응용 프로그램의 버전 2.0을 만듭니다.

  3. 업데이트 설명자를 만들어 응용 프로그램을 1.0.1 버전에서 2.0 버전으로 업데이트합니다.

<?xml version="1.0" encoding="utf-8"?> 
    <update xmlns="http://ns.adobe.com/air/framework/update/description/2.5"> 
        <version>2.0</version> 
        <url>http://example.com/updates/sample_2.0.air</url> 
        <description>This is the intermediate version.</description> 
    </update>

업데이트 설명자 파일 정의 및 웹 서버에 AIR 파일 추가

AIR 업데이트 프레임워크를 사용할 때는 웹 서버에 저장된 업데이트 설명자 파일에 사용 가능한 업데이트에 대한 기본 정보를 정의합니다. 업데이트 설명자 파일은 간단한 XML 파일입니다. 응용 프로그램에 포함된 업데이트 프레임워크는 이 파일을 확인하여 새 버전이 업로드되었는지 확인합니다.

업데이트 설명자 파일의 포맷은 AIR 2.5에서 변경되었습니다. 새로운 포맷은 다른 네임스페이스를 사용합니다. 원래의 네임스페이스는 “http://ns.adobe.com/air/framework/update/description/1.0”입니다. AIR 2.5 네임스페이스는 “http://ns.adobe.com/air/framework/update/description/2.5”입니다.

AIR 2.5 이전에 생성된 AIR 응용 프로그램은 버전 1.0 업데이트 설명자만 읽을 수 있습니다. AIR 2.5 이상에 포함된 업데이터 프레임워크를 사용하여 생성된 AIR 응용 프로그램은 버전 2.5 업데이트 설명자만 읽을 수 있습니다. 이러한 버전 비호환성 때문에 종종 두 개의 업데이트 설명자 파일을 만들어야 합니다. AIR 2.5 버전의 응용 프로그램에 있는 업데이트 논리는 새 포맷을 사용하는 업데이트 설명자를 다운로드해야 합니다. 이전 버전의 AIR 응용 프로그램은 계속 원래의 포맷을 사용해야 합니다. AIR 2.5 이전에 만든 버전에 대한 지원을 중지하기 전까지 업데이트를 릴리스할 때마다 두 파일을 모두 수정해야 합니다.

업데이트 설명자 파일에는 다음 데이터가 포함됩니다.

  • versionNumber—AIR 응용 프로그램의 새 버전입니다. AIR 2.5 응용 프로그램을 업데이트하는 데 사용된 업데이트 설명자에서 versionNumber 요소를 사용합니다. 이 값은 새 AIR 응용 프로그램 설명자 파일의 versionNumber 요소에 사용된 것과 동일한 문자열이어야 합니다. 업데이트 설명자 파일의 버전 번호가 업데이트 AIR 파일의 버전 번호와 일치하지 않으면 업데이트 프레임워크에서 예외가 발생합니다.

  • version—AIR 응용 프로그램의 새 버전입니다. AIR 2.5 이전에 만든 응용 프로그램을 업데이트하는 데 사용된 업데이트 설명자에서 version 요소를 사용합니다. 이 값은 새 AIR 응용 프로그램 설명자 파일의 version 요소에 사용된 것과 동일한 문자열이어야 합니다. 업데이트 설명자 파일의 버전이 업데이트 AIR 파일의 버전과 일치하지 않으면 업데이트 프레임워크에서 예외가 발생합니다.

  • versionLabel—사용자에게 표시하기 위한 목적의 사람이 읽을 수 있는 버전 문자열입니다. versionLabel은 선택 사항이지만, 버전 2.5 업데이트 설명자 파일에서만 지정될 수 있습니다. 응용 프로그램 설명자에서 versionLabel을 사용하는 경우에만 사용하고 같은 값으로 설정하십시오.

  • url - 업데이트 AIR 파일의 위치입니다. 이 파일은 AIR 응용 프로그램의 업데이트 버전을 포함합니다.

  • description - 새 버전과 관련된 세부 사항입니다. 이 정보는 업데이트 프로세스 중에 사용자에게 표시될 수 있습니다.

versionurl 요소는 필수이고, description 요소는 선택 사항입니다.

다음은 샘플 버전 2.5 업데이트 설명자 파일입니다.

<?xml version="1.0" encoding="utf-8"?> 
     <update xmlns="http://ns.adobe.com/air/framework/update/description/2.5"> 
       <versionNumber>1.1.1</versionNumber> 
       <url>http://example.com/updates/sample_1.1.1.air</url> 
       <description>This is the latest version of the Sample application.</description> 
    </update>

그리고 다음은 샘플 버전 1.0 업데이트 설명자 파일입니다.

<?xml version="1.0" encoding="utf-8"?> 
     <update xmlns="http://ns.adobe.com/air/framework/update/description/1.0"> 
       <version>1.1.1</version> 
       <url>http://example.com/updates/sample_1.1.1.air</url> 
       <description>This is the latest version of the Sample application.</description> 
    </update>

여러 언어를 사용하여 description 태그를 정의하려면 lang 특성을 정의하는 여러 text 요소를 사용합니다.

<?xml version="1.0" encoding="utf-8"?> 
     <update xmlns="http://ns.adobe.com/air/framework/update/description/2.5"> 
       <versionNumber>1.1.1</versionNumber> 
       <url>http://example.com/updates/sample_1.1.1.air</url> 
       <description> 
           <text xml:lang="en">English description</text> 
           <text xml:lang="fr">French description</text> 
           <text xml:lang="ro">Romanian description</text> 
       </description> 
    </update>

업데이트 설명자 파일을 업데이트 AIR 파일과 함께 웹 서버에 배치합니다.

업데이트 설명자에 포함된 templates 디렉토리에는 샘플 업데이트 설명자 파일이 포함됩니다. 여기에는 단일 언어 버전과 여러 언어 버전이 모두 포함됩니다.

업데이트 프로그램 객체 인스턴스화

코드에서 AIR 업데이트 프레임워크를 로드한 후(Flex 개발 환경 설정HTML 기반 AIR 응용 프로그램에 프레임워크 파일 포함 참조) 다음과 같이 업데이트 프로그램 객체를 인스턴스화해야 합니다

ActionScript 예제:

var appUpdater:ApplicationUpdater = new ApplicationUpdater();

JavaScript 예제:

var appUpdater = new runtime.air.update.ApplicationUpdater();

앞의 코드에서는 사용자 인터페이스를 제공하지 않는 ApplicationUpdater 클래스를 사용합니다. 사용자 인터페이스를 제공하는 ApplicationUpdaterUI 클래스를 사용하려면 다음을 사용합니다.

ActionScript 예제:

var appUpdater:ApplicationUpdaterUI = new ApplicationUpdaterUI();

JavaScript 예제:

var appUpdater = new runtime.air.update.ApplicationUpdaterUI();

이 문서의 나머지 코드 샘플에서는 appUpdater라는 업데이트 프로그램 객체를 인스턴스화한 것으로 가정합니다.

업데이트 설정 구성

ApplicationUpdater 및 ApplicationUpdaterUI는 모두 응용 프로그램과 함께 제공되는 구성 파일을 통해 또는 응용 프로그램의 ActionScript나 JavaScript를 통해 구성할 수 있습니다.

XML 구성 파일에서 업데이트 설정 정의

업데이트 구성 파일은 XML 파일이며, 다음 요소를 포함할 수 있습니다.

  • updateURL - 문자열입니다. 원격 서버에 있는 업데이트 설명자의 위치를 나타냅니다. 유효한 URLRequest 위치를 사용할 수 있습니다. 구성 파일이나 스크립트를 통해 updateURL 속성을 정의해야 합니다(업데이트 설명자 파일 정의 및 웹 서버에 AIR 파일 추가 참조). 업데이트 프로그램을 사용하기 전에 즉, 업데이트 프로그램 초기화에서 설명한 대로 업데이트 프로그램 객체의 initialize() 메서드를 호출하기 전에 이 속성을 정의해야 합니다.

  • delay - 숫자입니다. 업데이트를 확인하는 시간 간격(일)입니다. 예를 들어 0.25와 같은 값을 사용할 수 있습니다. 값이 0(기본값)이면 업데이트 프로그램이 자동 정기 확인을 수행하지 않습니다.

ApplicationUpdaterUI의 구성 파일에는 updateURLdelay 요소와 함께 다음 요소가 포함될 수 있습니다.

  • defaultUI: dialog 요소 목록입니다. 각 dialog 요소에는 사용자 인터페이스의 대화 상자에 해당하는 name 특성이 있습니다. 각 dialog 요소에는 대화 상자가 표시되는지 여부를 정의하는 visible 특성이 있습니다. 기본값은 true입니다. name 특성에 사용할 수 있는 값은 다음과 같습니다.

    • "checkForUpdate" - 업데이트 확인, 업데이트 없음 및 업데이트 오류 대화 상자에 해당합니다.

    • "downloadUpdate" - 업데이트 다운로드 대화 상자에 해당합니다.

    • "downloadProgress" - 다운로드 진행률 및 다운로드 오류 대화 상자에 해당합니다.

    • "installUpdate" - 업데이트 설치 대화 상자에 해당합니다.

    • "fileUpdate" - 파일 업데이트, 파일 업데이트 없음 및 파일 오류 대화 상자에 해당합니다.

  • "unexpectedError" - 예기치 않은 오류 대화 상자에 해당합니다.

    false로 설정할 경우 해당하는 대화 상자가 업데이트 절차의 일부로 표시되지 않습니다.

다음은 ApplicationUpdater 프레임워크의 구성 파일 예제입니다.

<?xml version="1.0" encoding="utf-8"?> 
<configuration xmlns="http://ns.adobe.com/air/framework/update/configuration/1.0"> 
      <url>http://example.com/updates/update.xml</url> 
      <delay>1</delay> 
</configuration>

다음은 defaultUI 요소에 대한 정의를 포함하는 ApplicationUpdaterUI 프레임워크의 구성 파일 예제입니다.

<?xml version="1.0" encoding="utf-8"?> 
<configuration xmlns="http://ns.adobe.com/air/framework/update/configuration/1.0"> 
      <url>http://example.com/updates/update.xml</url> 
      <delay>1</delay> 
      <defaultUI> 
         <dialog name="checkForUpdate" visible="false" /> 
         <dialog name="downloadUpdate" visible="false" /> 
         <dialog name="downloadProgress" visible="false" /> 
      </defaultUI> 
</configuration>

configurationFile 속성을 해당 파일의 위치로 지정합니다.

ActionScript 예제:

appUpdater.configurationFile = new File("app:/cfg/updateConfig.xml");
JavaScript 예제:
appUpdater.configurationFile = new air.File("app:/cfg/updateConfig.xml");

업데이트 프레임워크의 templates 디렉토리에는 샘플 구성 파일 config-template.xml이 포함됩니다.

업데이트 설정 ActionScript 또는 JavaScript 코드 정의

이러한 구성 매개 변수를 다음과 같이 응용 프로그램의 코드를 사용하여 설정할 수도 있습니다.

appUpdater.updateURL = " http://example.com/updates/update.xml"; 
appUpdater.delay = 1;

업데이트 프로그램 객체의 속성은 updateURLdelay입니다. 이러한 속성은 구성 파일의 updateURLdelay 요소와 동일한 설정 즉, 업데이트 설명자 파일의 URL과 업데이트 확인 간격을 정의합니다. 구성 파일 코드의 설정을 지정하는 경우 코드를 사용하여 설정한 속성이 구성 파일의 해당하는 설정보다 우선합니다.

업데이트 프로그램을 사용하기 전에 즉, 업데이트 프로그램 초기화에서 설명한 대로 업데이트 프로그램 객체의 initialize() 메서드를 호출하기 전에 구성 파일이나 스크립트를 통해 updateURL 속성을 정의해야 합니다(업데이트 설명자 파일 정의 및 웹 서버에 AIR 파일 추가 참조).

ApplicationUpdaterUI 프레임워크는 업데이트 프로그램 객체에 대한 다음과 같은 추가 속성을 정의합니다.

  • isCheckForUpdateVisible - 업데이트 확인, 업데이트 없음 및 업데이트 오류 대화 상자에 해당합니다.

  • isDownloadUpdateVisible - 업데이트 다운로드 대화 상자에 해당합니다.

  • isDownloadProgressVisible - 다운로드 진행률 및 다운로드 오류 대화 상자에 해당합니다.

  • isInstallUpdateVisible - 업데이트 설치 대화 상자에 해당합니다.

  • isFileUpdateVisible - 파일 업데이트, 파일 업데이트 없음 및 파일 오류 대화 상자에 해당합니다.

  • isUnexpectedErrorVisible - 예기치 않은 오류 대화 상자에 해당합니다.

각 속성은 ApplicationUpdaterUI 사용자 인터페이스에 있는 하나 이상의 대화 상자에 해당합니다. 각 속성은 기본값이 true인 부울 값입니다. false로 설정할 경우 해당하는 대화 상자가 업데이트 절차의 일부로 표시되지 않습니다.

이러한 대화 상자 속성은 업데이트 구성 파일의 설정을 재정의합니다.

업데이트 프로세스

AIR 업데이트 프레임워크에서는 다음 단계에 따라 업데이트 프로세스를 완료합니다.

  1. 업데이트 프로그램 초기화에서 업데이트 확인이 정의된 지연 시간 간격 내에 수행되었는지 확인합니다(업데이트 설정 구성 참조). 업데이트 확인이 예정되어 있는 경우 업데이트 프로세스가 계속됩니다.

  2. 업데이트 프로그램에서 업데이트 설명자 파일을 다운로드하고 해석합니다.

  3. 업데이트 프로그램이 업데이트 AIR 파일을 다운로드합니다.

  4. 업데이트 프로그램이 업데이트된 응용 프로그램 버전을 설치합니다.

업데이트 프로그램 객체는 이러한 각 단계 완료 시 이벤트를 전달합니다. ApplicationUpdater 버전에서 프로세스 단계의 성공적인 완료를 알려 주는 이벤트를 취소할 수 있습니다. 이러한 이벤트 중 하나를 취소하려면 프로세스의 다음 단계는 취소됩니다. ApplicationUpdaterUI 버전에서 업데이트 프로그램은 사용자가 프로세스의 각 단계에서 취소 또는 진행 여부를 선택할 수 있는 대화 상자를 표시합니다.

이벤트를 취소하는 경우 업데이트 프로그램 객체의 메서드를 호출하여 프로세스를 다시 시작할 수 있습니다.

업데이트 프로그램의 ApplicationUpdater 버전에서 업데이트 프로세스를 진행하는 동안 현재 상태를 currentState 속성에 기록합니다. 이 속성은 다음과 같은 값의 문자열로 설정됩니다.

  • "UNINITIALIZED" - 업데이트 프로그램이 초기화되지 않았습니다.

  • "INITIALIZING" - 업데이트 프로그램이 초기화되고 있습니다.

  • "READY" - 업데이트 프로그램이 초기화되었습니다

  • "BEFORE_CHECKING" - 업데이트 프로그램이 업데이트 설명자 파일을 아직 확인하지 않았습니다.

  • "CHECKING" - 업데이트 프로그램이 업데이트 설명자 파일을 확인하고 있습니다.

  • "AVAILABLE" - 업데이트 설명자 파일을 사용할 수 있습니다.

  • "DOWNLOADING" - 업데이트 프로그램이 AIR 파일을 다운로드하고 있습니다.

  • "DOWNLOADED" - 업데이트 프로그램이 AIR 파일을 다운로드했습니다.

  • "INSTALLING" - 업데이트 프로그램이 AIR 파일을 설치하고 있습니다.

  • "PENDING_INSTALLING" - 업데이트 프로그램이 초기화되었고 대기 중인 업데이트가 있습니다.

업데이트 프로그램 객체의 일부 메서드는 업데이트 프로그램이 특정 상태에 있는 경우 경우에만 실행됩니다.

업데이트 프로그램 초기화

구성 속성을 설정한 후(기본 예제: ApplicationUpdaterUI 버전 사용) initialize() 메서드를 사용하여 업데이트를 초기화합니다.

appUpdater.initialize();

이 메서드는 다음과 같은 작업을 수행합니다.

  • 대기 중인 업데이트를 동기적으로 자동 설치하여 업데이트 프레임워크를 초기화합니다. 이 메서드를 호출할 때 응용 프로그램을 다시 시작할 수 있으므로 응용 프로그램 시작 시 이 메서드를 호출해야 합니다.

  • 연기된 업데이트가 있는지 확인한 다음 설치합니다.

  • 업데이트 프로세스 동안 오류가 발생하는 경우 응용 프로그램 저장소 영역에서 업데이트 파일 및 버전 정보를 지웁니다.

  • 지연 시간이 만료되는 경우 업데이트 프로세스를 시작합니다. 그렇지 않은 경우 타이머를 다시 시작합니다.

이 메서드를 호출하면 업데이트 프로그램 객체에서 다음 이벤트를 전달합니다.

  • UpdateEvent.INITIALIZED - 초기화가 완료될 때 전달됩니다.

  • ErrorEvent.ERROR - 초기화 동안 오류가 발생하는 경우 전달됩니다.

UpdateEvent.INITIALIZED 이벤트가 전달되면 업데이트 프로세스가 완료됩니다.

initialize() 메서드를 호출하면 업데이트 프로그램이 업데이트 프로세스를 시작하고 타이머 지연 시간 설정에 따라 모든 단계를 완료합니다. 그러나 언제든 업데이트 프로그램 객체의 checkNow() 메서드를 호출하여 업데이트 프로세스를 시작할 수 있습니다.

appUpdater.checkNow();

업데이트 프로세스가 이미 실행되고 있는 경우 이 메서드는 아무 작업도 수행하지 않습니다. 그렇지 않으면 업데이트 프로세스를 시작합니다.

업데이트 프로그램 객체는 checkNow() 메서드 호출의 결과로 다음 이벤트를 전달합니다.

  • UpdateEvent.CHECK_FOR_UPDATE 이벤트 - 업데이트 설명자 파일을 다운로드하기 바로 전에 전달됩니다.

checkForUpdate 이벤트를 취소하는 경우 업데이트 프로그램 객체의 checkForUpdate() 메서드를 호출할 수 있습니다. 다음 단원을 참조하십시오. 이벤트를 취소하지 않으면 업데이트 프로세스에서 업데이트 설명자 파일을 확인하는 과정을 계속합니다.

ApplicationUpdaterUI 버전에서 업데이트 프로세스 관리

ApplicationUpdaterUI 버전에서 사용자는 사용자 인터페이스의 대화 상자에서 취소 버튼을 통해 프로세스를 취소할 수 있습니다. 또한 ApplicationUpdaterUI 객체의 cancelUpdate() 메서드를 호출하여 업데이트 프로세스를 프로그래밍 방식으로 취소할 수 있습니다.

ApplicationUpdaterUI 객체의 속성을 설정하거나 업데이트 구성 파일의 요소를 정의하여 업데이트 프로그램에서 표시하는 대화 상자 확인을 지정할 수 있습니다. 자세한 내용은 업데이트 설정 구성을 참조하십시오.

ApplicationUpdater 버전에서 업데이트 프로세스 관리

ApplicationUpdater 객체에서 전달한 이벤트의 preventDefault() 메서드를 호출하여 업데이트 프로세스의 단계를 취소할 수 있습니다(업데이트 프로세스 참조). 기본 비헤이비어를 취소하면 응용 프로그램에서 사용자에게 계속할지 묻는 메시지를 표시할 수 있게 됩니다.

다음 단원에서는 프로세스 단계가 취소된 경우 업데이트 프로세스를 계속하는 방법에 대해 설명합니다.

업데이트 설명자 파일 다운로드 및 해석

업데이트 프로그램에서 업데이트 설명자 파일을 다운로드하기 직전에 업데이트 프로세스가 시작되기 전에 ApplicationUpdater 객체에서 checkForUpdate 이벤트를 전달합니다. checkForUpdate 이벤트의 기본 비헤이비어를 취소하는 경우 업데이트 프로그램은 업데이트 설명자 파일을 다운로드하지 않습니다. 다음과 같이 checkForUpdate() 메서드를 호출하여 업데이트 프로세스를 다시 시작할 수 있습니다.

appUpdater.checkForUpdate();

checkForUpdate() 메서드를 호출하면 업데이트 프로그램이 업데이트 설명자 파일을 비동기적으로 다운로드하여 해석합니다. checkForUpdate() 메서드 호출의 결과로 업데이트 프로그램 객체에서 다음 이벤트를 전달할 수 있습니다.

  • StatusUpdateEvent.UPDATE_STATUS - 업데이트 프로그램이 업데이트 설명자 파일을 성공적으로 다운로드하고 해석했습니다. 이 이벤트에는 다음과 같은 속성이 있습니다.

    • available - 부울 값입니다. 현재 응용 프로그램의 버전과 다른 버전을 사용할 수 있는 경우 true이고, 그렇지 않은 경우(버전이 동일한 경우) false입니다.

    • version - 문자열입니다. 업데이트 파일의 응용 프로그램 설명자 파일의 버전입니다.

    • details - 배열입니다. 설명에 대한 지역화된 버전이 없는 경우 이 배열은 빈 문자열("")을 첫 번째 요소로, 설명을 두 번째 요소로 반환합니다.

      업데이트 설명자 파일에 여러 버전의 설명이 있는 경우 이 배열에는 여러 하위 배열이 포함됩니다. 각 배열에는 두 요소가 포함되며, 첫째는 언어 코드(예: "en")이고 둘째는 언어에 해당하는 설명(문자열)입니다. 업데이트 설명자 파일 정의 및 웹 서버에 AIR 파일 추가를 참조하십시오.

  • StatusUpdateErrorEvent.UPDATE_ERROR - 오류가 발생했고 업데이트 프로그램에서 업데이트 설명자 파일을 다운로드 또는 해석하지 못했습니다.

업데이트 AIR 파일 다운로드

업데이트 프로그램에서 업데이트 설명자 파일을 성공적으로 다운로드 및 해석한 후 ApplicationUpdater 객체는 updateStatus 이벤트를 전달합니다. 기본 비헤이비어는 사용 가능한 업데이트가 있는 경우 다운로드를 시작하는 것입니다. 기본 비헤이비어를 취소하는 경우 downloadUpdate() 메서드를 호출하여 업데이트 프로세스를 다시 시작할 수 있습니다.

appUpdater.downloadUpdate();

이 메서드를 호출하면 업데이트 프로그램에서 AIR 파일의 업데이트 버전을 비동기적으로 다운로드합니다.

downloadUpdate() 메서드는 다음 이벤트를 전달할 수 있습니다.

  • UpdateEvent.DOWNLOAD_START - 서버에 대한 연결이 설정되었습니다. ApplicationUpdaterUI 라이브러리를 사용할 경우 이 이벤트는 다운로드 진행률을 추적하는 진행률 막대가 있는 대화 상자를 표시합니다.

  • ProgressEvent.PROGRESS - 파일 다운로드가 진행될 때 주기적으로 전달됩니다.

  • DownloadErrorEvent.DOWNLOAD_ERROR - 업데이트 파일을 연결하거나 다운로드하는 동안 오류가 발생하는 경우 전달됩니다. HTTP 상태가 잘못된 경우에도 전달됩니다(예: "404 - 파일을 찾을 수 없습니다”). 이 이벤트에는 추가 오류 정보를 정의하는 정수인 errorID 속성이 있습니다. 추가 subErrorID 속성에는 추가 오류 정보가 포함될 수 있습니다.

  • UpdateEvent.DOWNLOAD_COMPLETE - 업데이트 프로그램이 업데이트 설명자 파일을 성공적으로 다운로드하고 해석했습니다. 이 이벤트를 취소하지 않으면 ApplicationUpdater 버전이 업데이트 버전 설치를 진행합니다. ApplicationUpdaterUI 버전에서는 계속하기 위한 옵션을 제공하는 대화 상자를 표시합니다.

응용 프로그램 업데이트

업데이트 다운로드가 완료되면 ApplicationUpdater 객체는 downloadComplete 이벤트를 전달합니다. 기본 비헤이비어를 취소하는 경우 installUpdate() 메서드를 호출하여 업데이트 프로세스를 다시 시작할 수 있습니다.

appUpdater.installUpdate(file);

이 메서드를 호출하면 업데이트 프로그램은 AIR 파일의 업데이트 버전을 설치합니다. 이 메서드에는 업데이트 사용할 AIR 파일을 참조하는 File 객체인 file 매개 변수 하나가 포함되어 있습니다.

installUpdate() 메서드 호출의 결과로 ApplicationUpdater 객체가 beforeInstall 이벤트를 전달할 수 있습니다.

  • UpdateEvent.BEFORE_INSTALL - 업데이트를 설치하기 직전에 전달됩니다. 경우에 따라 사용자가 업데이트를 계속하기 전에 현재 작업을 완료할 수 있도록 지금 업데이트를 설치하지 않도록 하는 데 이 이벤트를 사용할 수 있습니다. Event 객체의 preventDefault() 메서드를 호출하면 다음 재시작 시까지 설치가 연기되고 추가 업데이트 프로세스를 시작할 수 없습니다. 여기에는 checkNow() 메서드 호출의 결과나 정기적인 확인으로 인해 발생하는 업데이트도 포함됩니다.

임의의 AIR 파일에서 설치

installFromAIRFile() 메서드를 호출하여 사용자 컴퓨터에 있는 AIR 파일의 업데이트 버전을 설치할 수 있습니다.

appUpdater.installFromAIRFile();

이 메서드를 호출하면 업데이트 프로그램은 AIR 파일의 업데이트 버전을 설치합니다.

installFromAIRFile() 메서드는 다음 이벤트를 전달할 수 있습니다.

  • StatusFileUpdateEvent.FILE_UPDATE_STATUS - ApplicationUpdater에서 installFromAIRFile() 메서드를 사용하여 전송한 파일의 유효성을 검사한 후 전달됩니다. 이 이벤트에는 다음과 같은 속성이 있습니다.

    • available - 현재 응용 프로그램 버전과 다른 버전을 사용할 수 있는 경우 true이고 그렇지 않은 경우(버전이 동일한 경우) false입니다.

    • version - 사용할 수 있는 새 버전을 나타내는 문자열입니다.

    • path - 업데이트 파일의 기본 경로를 나타냅니다.

    StatusFileUpdateEvent 객체의 available 속성을 true로 설정한 경우 이 이벤트를 취소할 수 있습니다. 이 이벤트를 취소하면 업데이트 진행이 취소됩니다. 취소된 업데이트를 계속하려면 installUpdate() 메서드를 호출합니다.

  • StatusFileUpdateErrorEvent.FILE_UPDATE_ERROR - 오류가 발생하여 업데이트 프로그램이 AIR 응용 프로그램을 설치하지 못했습니다.

업데이트 프로세스 취소

cancelUpdate() 메서드를 호출하여 업데이트 프로세스를 취소할 수 있습니다.

appUpdater.cancelUpdate();

이 메서드는 완료되지 않은 다운로드 파일을 삭제하여 대기 중인 다운로드를 취소하고 정기 확인 타이머를 다시 시작합니다.

업데이트 프로그램 객체가 초기화되고 있는 경우 이 메서드는 아무 작업도 수행하지 않습니다.

ApplicationUpdaterUI 인터페이스 지역화

ApplicationUpdaterUI 클래스에서는 업데이트 프로세스를 위한 기본 사용자 인터페이스를 제공합니다. 여기에는 사용자가 프로세스를 시작하고, 프로세스를 취소하고, 기타 관련 작업을 수행할 수 있는 대화 상자가 포함됩니다.

업데이트 설명자 파일의 description 요소를 사용하면 응용 프로그램에 대한 설명을 여러 언어로 정의할 수 있습니다. 다음과 같이 lang 특성을 정의하는 여러 text 요소를 사용합니다.

<?xml version="1.0" encoding="utf-8"?> 
     <update xmlns="http://ns.adobe.com/air/framework/update/description/1.0"> 
       <version>1.1a1</version> 
       <url>http://example.com/updates/sample_1.1a1.air</url> 
       <description> 
           <text xml:lang="en">English description</text> 
           <text xml:lang="fr">French description</text> 
           <text xml:lang="ro">Romanian description</text> 
       </description> 
    </update>

업데이트 프레임워크에서는 최종 사용자의 지역화 체인에 가장 잘 맞는 설명을 사용합니다. 자세한 내용은 업데이트 설명자 파일 정의 및 웹 서버에 AIR 파일 추가를 참조하십시오.

Flex 개발자는 "ApplicationUpdaterDialogs" 번들에 새 언어를 직접 추가할 수 있습니다.

JavaScript 개발자는 업데이트 프로그램 객체의 addResources() 메서드를 호출할 수 있습니다. 이 메서드는 언어에 대한 새 리소스 번들을 동적으로 추가합니다. 리소스 번들은 언어에 대한 지역화된 문자열을 정의합니다. 이러한 문자열은 다양한 대화 상자 텍스트 필드에서 사용됩니다.

JavaScript 개발자는 ApplicationUpdaterUI 클래스의 localeChain 속성을 사용하여 사용자 인터페이스에서 사용되는 로캘 체인을 정의할 수 있습니다. 일반적으로 JavaScript(HTML) 개발자만 이 속성을 사용합니다. Flex 개발자는 ResourceManager를 사용하여 로캘 체인을 관리합니다.

예를 들어 다음 JavaScript 코드는 루마니아어와 헝가리어의 리소스 번들을 정의합니다.

appUpdater.addResources("ro_RO", 
                    {titleCheck: "Titlu", msgCheck: "Mesaj", btnCheck: "Buton"}); 
appUpdater.addResources("hu", {titleCheck: "Cím", msgCheck: "Üzenet"}); 
var languages = ["ro", "hu"]; 
languages = languages.concat(air.Capabilities.languages); 
var sortedLanguages = air.Localizer.sortLanguagesByPreference(languages, 
                         air.Capabilities.language, 
                         "en-US"); 
sortedLanguages.push("en-US"); 
appUpdater.localeChain = sortedLanguages;

자세한 내용은 언어 참조 설명서에서 ApplicationUpdaterUI 클래스의 addResources() 메서드에 대한 설명을 참조하십시오.