'xml'에 해당되는 글 1건

  1. 2009/07/08 플래시 AIR 어플리케이션 자동 업데이트 구현

 AIR 환경은 여타 데스크탑 어플리케이션처럼 자동 업데이트의 구현 가능을 제공합니다. 하지만 플래시로 AIR 어플리케이션을 제작할 때는 자동 업데이트를 구현할 수 있는 컴포넌트가 플래시 내에 없기 때문에 플렉스 SDK의 컴포넌트들을 가져와야 합니다. 업데이트를 구현하기 위해 SDK에서 가져올 최소한의 컴포넌트는 ApplicationUpdaterUI이며 이 컴포넌트를 가져오는 방법은 아래와 같습니다.

  1. File > Publish Settings 선택
  2. 컴파일 세팅 패널에서 Flash탭 클릭
  3. Player: Adobe AIR 1.5  / Script: Action Script 3.0 선택
  4. Script 텍스트 창 옆에 [Settings...] 버튼 선택
  5. Library Path 탭 선택
  6. [+]버튼 (Add New Path) 선택하여 새 주소창 영역 만든 후 Browse to SWC file 버튼 클릭
  7. 파일 선택 패널로 컴포넌트 선택
    (Flex SDK가 있는 폴더)\frameworks\libs\air\applicationupdater_ui.swc



 이렇게 컴포넌트를 가져온 후에 사용하는 방법의 예는 아래와 같습니다.

import air.update.ApplicationUpdaterUI;
//그분 모셔오기

var exampleUpdater:ApplicationUpdaterUI = new ApplicationUpdaterUI();
// 업데이트 폼 객체 생성
var configFile:File = new File("app:/update-config.xml");
// 설정 정보를 담은 xml파일을 File 객체로 생성 

exampleUpdater.configurationFile = configFile;
// xml에 담긴 설정 정보를 업데이트 폼 객체에 적용
exampleUpdater.initialize();
//설정 정보에 맞춰 업데이트 폼 객체의 초기화





 업데이트 설정 정보를 담은 update-config.xml는 AIR  패키지를 생성할 때 함께 추가되어 배포될 것입니다. 이 xml 파일은 사용자의 컴퓨터에 설치되어 해당 어플리케이션이 업데이트 정보를 어떻게 확인하고 어디서 확인하는지에 대한 정보를 담고 있습니다. XML 구조는 아래와 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://ns.adobe.com/air/framework/update/configuration/1.0" >
   <url>'update-descriptor.xml'이 있는 경로</url>
   <!-- 최신 업데이트가 있는지 확인할 수 있는 서버측 xml //-->
   <delay>1</delay>
   <defaultUI>
       <dialog name="checkForUpdate" visible="true" />
       <dialog name="downloadUpdate" visible="true" />
       <dialog name="downloadProgress" visible="true" />
       <dialog name="installUpdate" visible="true" />   
       <dialog name="fileUpdate" visible="true" />   
       <dialog name="unexpectedError" visible="true" />
       <!-- 상기 설정에 관한 자세한 정보는 검색을 이용 | 일단 모두 true 설정 //-->
   </defaultUI>
</configuration>



 이렇게 사용자 컴퓨터는 이 xml 설정 정보를 이용해 최신 업데이트가 있는지 확인합니다. 하지만 최신 업데이트가 있는지 확인할려면 서버측에도 업데이트 정보를 가지고 있어야겠지요? 이 역활을 해주는 것이 update-descriptor.xml입니다. 내용은 아래와 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<update xmlns="http://ns.adobe.com/air/framework/update/description/1.0">
    <version>1.0</version>
    // 버전 설정 | 사용자 컴퓨터는 이 버전의 숫자로 파일의 버전을 식별
    <url>최신 업데이트용 패치 파일 *.air</url>
    <description><![CDATA[
        업데이트 내용을 서술하는 곳 | 릴리즈 정보로 나오게 됨
    ]]></description>
</update>



 이제 업데이트 구현을 위한 기본적인 구색은 갖춰졌습니다만 한가지 문제가 있습니다. 서버측에서 최신 버전을 확인하기 위해선 checkNow()라는 함수를 사용하는데 이것을 사용할 때는 initialize() 함수를 실행한 후 서버측 요청이 끝나야 사용가능하다는 것입니다. 쉽게 설명드리자면...

exampleUpdater.initialize();
exampleUpdater.checkNow();



 이렇게 하면 작동이 안된다는 것이지요. 이 문제를 해결하기 위해서는

  1. [업데이트 확인]이라는 버튼을 따로 만들어서 이 버튼을 클릭할 경우에 checkNow()를 실행시키거나 (이 버튼을 클릭할 때에는 이미 업데이트 객체의 initialize가 완료되어 있으므로)
  2. Timer객체를 이용하여 일정 시간 이후에 실행되거나

 둘중 하나를 선택해야할 것입니다.


 저 같은 경우엔 1분 간격으로 서버의 update-descriptor.xml에서 version정보를 주기적으로 읽어들여 사용자 컴퓨터의 버전 정보와 비교 후 같으면 checkNow() 함수가 실행되게 해놨습니다. 자세한건 설명드리 않겠습니다.(나도 먹고 살아야지;;) 한가지 힌트를 드리자면...

 NativeApplication.nativeApplication.applicationDescriptor를 이용해서 해당 어플리케이션의 버전과 이름 정보를 xml로 return 받을 수 있습니다. 여기서 버전 정보를 추출해 서버측 update-descriptor.xml의 버전 정보를 비교하면 되는 것이지요.

 건투를 빕니다.


참고 자료 : http://www.adobe.com/devnet/air/flash/quickstart/update_framework.html

저작자 표시 비영리 변경 금지
Posted by 정 영진

트랙백 주소 : http://www.weblind.com/trackback/101 관련글 쓰기

  1. Subject : 정영진의 생각

    Tracked from buckard's me2DAY 2009/07/21 14:57  삭제

    플래시 AIR 어플 자동 업데이트 기술 개발 완료~ 핵심 기술은 단돈 9원에 팝니다. “5원짜리 한개와 1원짜리 네개를 구하는 정성만 있으면 오픈”

댓글을 달아 주세요