AIR uygulamalarını güncelleme

Kullanıcılar bilgisayarlarında veya tarayıcıdan (kesintisiz yükleme özelliğini kullanarak) bir AIR dosyasını çift tıklatarak AIR uygulamasını yükleyebilir veya güncelleyebilir. Adobe® AIR® yükleyici uygulaması, kullanıcıyı önceden var olan bir uygulamayı güncellemekte olduğuna ilişkin uyararak yüklemeyi yönetir.

Ancak, Updater sınıfını kullanarak kendini yeni sürüme güncelleyen yüklenmiş bir uygulamanız da olabilir. (Yüklenmiş bir uygulama, yeni bir sürümün indirilmek ve yüklenmek üzere kullanılabilir olduğunu saptayabilir.) Updater sınıfı, kullanıcının bilgisayarında yer alan bir AIR dosyasını göstermenize ve bu sürüme güncellemenizi sağlayan bir update() yöntemini içerir. Uygulamanız Updater sınıfını kullanmak için AIR dosyası olarak paketlenmelidir. Yerel yürütülebilir veya paket olarak paketlenmiş uygulamalar yerel platform tarafından sağlanan güncelleme olanaklarını kullanmalıdır.

Güncelleme AIR dosyasının hem uygulama kimliği hem de yayıncı kimliği, güncellenecek uygulamanınkilerle eşleşmelidir. Yayıncı kimliği imzalanan sertifikadan türetilir. Hem güncelleme hem de güncellenecek uygulama, aynı sertifikayla imzalanmış olmalıdır.

AIR 1.5.3 veya sonrası için, uygulama açıklayıcı dosyası bir <publisherID> öğesi içerir. Uygulamanızın AIR 1.5.2 veya öncesini kullanarak geliştirilen herhangi bir sürümü varsa bu öğeyi kullanmanız gerekir. Daha fazla bilgi için bkz. publisherID.

AIR 1.1 ve daha yeni sürümlerde, yeni bir kod imzalayıcı sertifika kullanmak için uygulamayı taşıyabilirsiniz. Yeni bir imza kullanması için bir uygulamayı taşıma, hem yeni hem de orijinal sertifikayı içeren güncelleme AIR dosyasını imzalamayı içerir. Sertifika taşıma, tek yönlü bir işlemdir. Taşımadan sonra, yalnızca yeni sertifikayla (veya her iki dosyayla) imzalanan AIR dosyaları var olan bir yüklemeye güncellemeler olarak dikkate alınır.

Uygulama güncellemelerinin yönetilmesi karmaşık olabilir. AIR 1.5, Adobe® AIR uygulamaları için yeni güncelleme çerçevesini içerir. Bu çerçeve, AIR uygulamalarında iyi güncelleme özellikleri sunmada geliştiricilere yardımcı olacak API'ler sağlar.

Kendinden imzalı sertifikayı ticari kod imzalayan sertifika olarak değiştirmek veya bir kendinden imzalı veya ticari sertifikadan diğerine geçmek için sertifika taşımayı kullanabilirsiniz. Sertifikayı taşımazsanız, var olan kullanıcılar yeni sürümü yüklemeden önce geçerli uygulama sürümlerini kaldırmak zorunda kalır. Daha fazla bilgi için bkz. Sertifikaları değiştirme.

Uygulamanızda bir güncelleme mekanizması kullanmakta fayda vardır. Uygulamanın yeni bir sürümünü oluşturursanız, güncelleme mekanizması kullanıcıya yeni sürümü yüklemek isteyip istemediğini sorabilir.

AIR uygulama yükleyicisi bir AIR uygulaması yüklendiğinde, güncellendiğinde veya kaldırıldığında günlük dosyaları oluşturur. Herhangi bir yükleme sorununun nedenini belirlemenize yardımcı olması için bu günlüklere başvurabilirsiniz. Bkz. Yükleme günlükleri.

Not: Adobe AIR çalışma zamanının yeni sürümleri güncellenmiş WebKit sürümleri içerebilir. WebKit öğesinin güncellenmiş bir sürümü dağıtmak bir AIR uygulamasındaki HTML içeriğinde beklenmeyen değişikliklere neden olabilir. Bu değişiklikler sizden uygulamanızı güncellemenizi isteyebilir. Güncelleme mekanizması, uygulamanın yeni sürümünün kullanıcısını bilgilendirebilir. Daha fazla bilgi için bkz.HTML ortamı hakkında (ActionScript geliştiricileri için) veya HTML ortamı hakkında (HTML geliştiricileri için).

Uygulamaları güncelleme hakkında

Updater sınıfı (flash.desktop paketinde), geçerli olarak çalışan uygulamayı farklı bir sürüme güncellemek için kullanabileceğiniz bir yöntemi, update() öğesini içerir. Örneğin, kullanıcının masaüstünde bir AIR dosyası sürümü ("Sample_App_v2.air") bulunuyorsa, aşağıdaki kod uygulamayı günceller.

ActionScript örneği:

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 örneği:

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

Bir uygulama Updater sınıfını kullanmadan önce kullanıcı veya uygulama AIR dosyasının güncellenmiş sürümünü bilgisayara indirmelidir. Daha fazla bilgi için bkz. Kullanıcının bilgisayarına bir AIR dosyası indirme.

Updater.update() yöntem çağrısının sonuçları

Çalışma zamanındaki bir uygulama update() yöntemini çağırdığında, çalışma zamanı uygulamayı kapatır ve daha sonra AIR dosyasından yeni sürümü yüklemeye çalışır. Çalışma zamanı, AIR dosyasında belirtilen uygulama kimliği ve yayıncı kimliğinin update() yöntemini çağıran uygulamaya ilişkin uygulama kimliği ve yayıncı kimliğiyle eşleşip eşleşmediğini kontrol eder. (Uygulama kimliği ve yayıncı kimliği hakkında bilgi için bkz. AIR uygulama tanımlayıcı dosyaları.) Çalışma zamanı ayrıca, sürüm dizesinin update() yöntemine iletilen version dizesiyle eşleşip eşleşmediğini kontrol eder. Yükleme başarıyla tamamlanırsa, çalışma zamanı uygulamanın yeni sürümünü açar. Aksi halde (yükleme tamamlanamazsa), uygulamanın var olan (yükleme öncesi) sürümünü yeniden açar.

Mac OS'de uygulamanın güncellenmiş bir sürümünü yüklemek için, kullanıcının uygulama dizinine yüklemek için yeterli sistem ayrıcalıklarına sahip olması gerekir. Windows ve Linux'ta, kullanıcı yönetici ayrıcalıklarına sahip olmalıdır.

Uygulamanın güncellenmiş sürümü çalışma zamanının güncellenmiş sürümünü gerektiriyorsa, yeni çalışma zamanı sürümü yüklenir. Kullanıcı, çalışma zamanını güncellemek için bilgisayara ilişkin yönetici ayrıcalıklarına sahip olmalıdır.

ADL kullanarak uygulama test edilirken update() yönteminin çağrılması bir çalışma zamanı istisnasına neden olur.

Sürüm dizesi hakkında

update() yönteminin version parametresi olarak belirtilen dize, yüklenecek AIR dosyasına ilişkin uygulama tanımlayıcı dosyasında bulunan version veya versionNumber öğesindeki dizeyle eşleşmelidir. Sürüm parametresinin belirtilmesi, güvenlik nedenleri için gereklidir. AIR dosyasında sürüm sayısını doğrulamayı gerektirdiğinden, uygulaması kasıtsız olarak daha eski bir sürüm yüklemeyecektir. (Uygulamanın eski sürümü, şu an kurulu olan uygulamada giderilmiş olan bazı güvenlik açıkları içerebilir.) Uygulama, indirgeme saldırılarını engellemek için yüklenmiş uygulamadaki sürüm dizesiyle AIR dosyasındaki sürüm dizesinin eşleşip eşleşmediğini de kontrol etmelidir.

AIR 2.5'ten önceki sürümlerde sürüm dizesi herhangi bir biçimde olabilir. Örneğin, "2.01" veya "sürüm 2" olabilir. AIR 2.5 veya sonraki sürümlerde, sürüm dizesi noktalarla ayrılmış en fazla üç basamaktan oluşan sıralamalar olmalıdır. Örneğin, “.0”, “1.0” ve “67.89.999” geçerli sürüm numaralarıdır. Uygulamayı güncellemeden önce güncelleme sürümü dizesini doğrulamanız gerekir.

Adobe AIR uygulaması web üzerinden bir AIR dosyası indirirse, web servisinin Adobe AIR uygulamasını indirilen sürüme ilişkin bilgilendirebileceği bir mekanizmaya sahip olmak, iyi bir uygulamadır. Bu şekilde, uygulama dizeyi update() yönteminin version parametresi olarak kullanabilir. AIR dosyası sürümünün bilinmediği diğer yöntemlerle elde edildiyse, AIR uygulaması sürüm bilgisini belirlemek için AIR dosyasını inceleyebilir. (AIR dosyası, sıkıştırılmış bir ZIP arşividir ve uygulama tanımlayıcı dosyası arşivdeki ikinci kayıttır.)

Uygulama tanımlayıcı dosyası hakkında ayrıntılar için bkz. AIR uygulama tanımlayıcı dosyaları.

Uygulama güncellemeleri için iş akışını imzalama

Güncellemeleri geçici bir şekilde yayınlama birden fazla uygulama sürümünü yönetme görevlerini karmaşıklaştırır ve sertifika sona erme tarihlerini izlemeyi zorlaştırır. Sertifikaların süresi siz bir güncelleme yayınlamadan önce sona erebilir.

Adobe AIR çalışma zamanı, geçiş imzası olmadan yayınlanmış uygulama güncellemelerini yeni bir uygulama olarak değerlendirir. Kullanıcılar uygulama güncellemesini yüklemeden önce geçerli AIR uygulamalarını kaldırmalıdır.

Sorunu çözmek için her güncellenen uygulamayı en güncel sertifikayla birlikte ayrı bir dağıtım URL'sine yükleyin. Sertifikanız 180 günlük yetkisiz kullanım süresindeyken geçiş imzası uygulamanızı hatırlatacak bir mekanizma dahil edin. Daha fazla bilgi için bkz. Bir AIR uygulamasının güncellenmiş sürümünü imzalama.

Nasıl imza uygulanacağıyla ilgili bilgi için bkz. ADT komutları.

Geçiş imzası uygulama sürecini kolaylaştırmak için aşağıdaki görevleri gerçekleştirin:

  • Her güncellenmiş uygulamayı ayrı bir dağıtım URL'sine yükleyin.

  • Yükseltme tanımlayıcı XML dosyasını ve güncellemenin en son sertifikasını aynı URL'ye yükleyin.

  • Güncellenmiş uygulamayı en son sertifikayla imzalayın.

  • Farklı bir URL'de bulunan önceki sürümü imzalamak için kullanılmış sertifikayla güncellenmiş uygulamaya bir geçiş imzası uygulayın.

Özel bir uygulama güncelleme kullanıcı arabirimi sunma

AIR, varsayılan bir güncelleme arabirimi içerir:

Bu arabirim, her zaman kullanıcı bir uygulama sürümünü bilgisayara ilk yüklediğinde kullanılır. Ancak, sonraki örneklerde kullanmak için kendi arabiriminizi tanımlayabilirsiniz. Uygulamanız özel bir güncelleme arabirimi tanımlıyorsa, güncel olarak yüklü uygulamaya ilişkin uygulama tanımlayıcı dosyasında bir customUpdateUI öğesi belirleyin:

<customUpdateUI>true</customUpdateUI>

Uygulama yüklendiğinde ve kullanıcı yüklenen uygulamayla eşleşen, uygulama kimliğine ve yayıncı kimliğine sahip bir AIR dosyasını açtığında, çalışma zamanı varsayılan AIR uygulama yükleyicisi yerine uygulamayı açar. Daha fazla bilgi için bkz. customUpdateUI.

Uygulama, çalıştırıldığında (NativeApplication.nativeApplication nesnesi bir load olayı gönderdiğinde), uygulamanın güncellenip güncellenmeyeceğine karar verebilir (Updater sınıfını kullanarak). Güncellemeye karar verirse, kullanıcıya kendi yükleme arabirimini (çalışan standart arabirimden farklı olan) sunabilir.

Kullanıcının bilgisayarına bir AIR dosyası indirme

Updater sınıfını kullanmak için, kullanıcı veya uygulama önce kullanıcının bilgisayarına bir AIR dosyasını yerel olarak kaydetmelidir.

Not: AIR 1.5, geliştiricilere AIR uygulamalarında iyi güncelleme özellikleri sağlamada yardımcı olan bir güncelleme çerçevesi içerir. Bu çerçeveyi kullanmak, doğrudan Update sınıfının update() yöntemini kullanmaktan çok daha kolay olabilir. Ayrıntılar için bkz. Güncelleme çerçevesini kullanma.

Aşağıdaki kod bir URL'den AIR dosyasını okur(http://example.com/air/updates/Sample_App_v2.air) ve AIR dosyasını uygulama depo dizinine kaydeder.

ActionScript örneği:

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 örneği:

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."); 
}

Daha fazla bilgi için bkz.:

Uygulamanın ilk kez çalışıp çalışmadığını görmek için kontrol edin

Uygulamayı güncelledikten sonra kullanıcıya bir “başlangıç” veya “hoş geldiniz” mesajı sunmak isteyebilirsiniz. Başlatmadan sonra, uygulama mesajın görüntülenip görüntülenmeyeceğini belirlemek için ilk kez çalışıp çalışmadığını kontrol eder.

Not: AIR 1.5, geliştiricilere AIR uygulamalarında iyi güncelleme özellikleri sağlamada yardımcı olan bir güncelleme çerçevesi içerir. Bu çerçeve, bir uygulama sürümünün ilk kez çalışıp çalışmadığını kontrol etmek için kolay yöntemler sağlar. Ayrıntılar için bkz. Güncelleme çerçevesini kullanma.

Bunu yapmanın bir yolu, uygulamanın başlatılmasından sonra uygulama depo dizinine bir dosya kaydetmektir. Uygulama her başladığında, bu dosyanın mevcudiyetini kontrol etmelidir. Dosya mevcut değilse, uygulama geçerli kullanıcı için ilk kez çalışmaktadır. Dosya mevcutsa, uygulama önceden en az bir kez çalışmıştır. Dosya mevcutsa ve geçerli sürüm numarasından daha eski bir sürüm numarası içeriyorsa, kullanıcının yeni sürümü ilk kez çalıştığını bilirsiniz.

Aşağıdaki Flex örneği, bu kavramı gösterir:

<?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>

Aşağıdaki örnek kavramı JavaScript'te gösterir:

<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> 

Uygulamanız verileri yerel olarak (örneğin, uygulama depo dizinine) kaydediyorsa, ilk çalıştırmadan sonra önceden kaydedilmiş veri (önceki sürümlerden) olup olmadığını kontrol etmek isteyebilirsiniz.

Güncelleme çerçevesini kullanma

Uygulama güncellemelerini yönetmek yorucu olabilir. AdobeAIR uygulamaları için güncelleme çerçevesi, geliştiricilerin AIR uygulamalarında sağlam güncelleme özellikleri sağlamasına izin veren API'ler sağlar. AIR güncelleme çerçevesi geliştiriciler için aşağıdaki görevleri gerçekleştirir:

  • Bir aralığa bağlı olarak veya kullanıcı istediğinde periyodik olarak güncellemeleri denetler

  • Web kaynağından AIR dosyalarını (güncellemeleri) indirir

  • Yeni yüklenen sürümün ilk çalıştırılmasında kullanıcıyı uyarır

  • Kullanıcının güncellemeleri denetlemek isteyip istemediğini teyit eder

  • Yeni güncelleme sürümü hakkındaki bilgileri kullanıcıya gösterir

  • İndirme ilerlemesi ve hata bilgisini kullanıcıya gösterir

AIR güncelleme çerçevesi, uygulamanız için örnek bir kullanıcı arabirimi sağlar. Kullanıcıya temel bilgileri ve uygulama güncellemelerine ilişkin konfigürasyon seçeneklerini sunar. Uygulamanız, güncelleme çerçevesiyle birlikte kullanmak üzere özel bir kullanıcı arabirimi de tanımlayabilir.

AIR güncelleme çerçevesi, AIR uygulamasının güncelleme sürümü hakkındaki bilgiyi basit XML yapılandırma dosyalarında saklamanıza olanak verir. Çoğu uygulama için, bazı basit kodları dahil etmek için bu konfigürasyon dosyalarını kurma, son kullanıcıya kullanışlı güncelleme işlevleri sağlar.

Adobe AIR, AIR uygulamalarının güncelleme çerçevesini kullanmadan bile yeni sürümlere yükseltilebileceği bir Updater sınıfı içerir. Updater sınıfı, bir uygulamanın kullanıcının bilgisayarındaki AIR dosyasında yer alan bir sürüme yükseltilmesine olanak verir. Ancak, yükseltme yönetimi yalnızca yerel olarak saklanan bir AIR dosyasına dayanan uygulama güncellemesini yapmaktan daha fazlasını içerebilir.

AIR güncelleme çerçevesi dosyaları

AIR güncelleme çerçevesi, AIR 2 SDK'in frameworks/libs/air dizinine dahil edilmiştir. Şu dosyaları içerir:

  • applicationupdater.swc—ActionScript'te kullanılacak güncelleme kütüphanesinin temel işlevini tanımlar. Bu sürüme hiçbir kullanıcı arabirimi dahil edilmemiştir.

  • applicationupdater.swf—JavaScript'te kullanılacak güncelleme kütüphanesinin temel işlevini tanımlar. Bu sürüme hiçbir kullanıcı arabirimi dahil edilmemiştir.

  • applicationUpdater_ui.swc—Uygulamanızın güncelleme seçeneklerini görüntülemek için kullanabileceği bir kullanıcı arabirimi dahil olmak üzere, temel güncelleme kitaplığının Flex 4 sürümü işlevlerini tanımlar.

  • applicationUpdater_ui.swf—Uygulamanızın güncelleme seçeneklerini görüntülemek için kullanabileceği bir kullanıcı arabirimi dahil olmak üzere, temel güncelleme kitaplığının JavaScript sürümü işlevlerini tanımlar.

Daha fazla bilgi için şu bölümlere bakın:

Flex geliştirme ortamınızı ayarlama

AIR 2 SDK'deki frameworks/libs/air dizinindeki SWC dosyaları, Flex ve Flash geliştirmede kullanabileceğiniz sınıfları tanımlar.

Flex SDK ile derleme sırasında güncelleme çerçevesini kullanmak için ApplicationUpdater.swc veya ApplicationUpdater_UI.swc dosyasını amxmlc derleyicisine yapılan çağrıya dahil edin. Derleyici, aşağıdaki örnekte Flex SDK dizininin lib alt dizininde yer alan ApplicationUpdater.swc dosyasını yükler:

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

Derleyici, aşağıdaki örnekte Flex SDK dizininin lib alt dizininde yer alan ApplicationUpdater_UI.swc dosyasını yükler:

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

Flash yapıcısı aracılığıyla geliştirme yaparken, SWC dosyasını Özellikler iletişim kutusundaki Flex Build Path ayarlarının Library Path sekmesine ekleyin.

SWC dosyalarını amxmlc derleyicisinde (Flex SDK kullanarak) veya Flash Builder'da başvuracağınız dizine kopyaladığınızdan emin olun.

Çerçeve dosyalarını HTML tabanlı bir AIR uygulamasına dahil etme

Güncelleme çerçevesinin frameworks/html dizini şu SWF dosyalarını içerir:

  • applicationupdater.swf—Herhangi bir kullanıcı arabirimi olmadan güncelleme kütüphanesinin temel işlevlerini tanımlar

  • applicationupdater_ui.swf—Uygulamanızın güncelleme seçeneklerini görüntülemek için kullanabileceği bir kullanıcı arabirimi dahil, temel güncelleme kütüphanesi işlevlerini tanımlar

AIR uygulamalarındaki JavaScript kodu, SWF dosyalarında tanımlanan sınıfları kullanabilir.

Güncelleme çerçevesini kullanmak için applicationupdater.swf veya applicationupdater_ui.swf dosyasını uygulama dizininize (veya bir alt dizine) dahil edin. Daha sonra, çerçeveyi kullanacak HTML dosyasına (JavaScript kodunda), dosyayı yükleyen bir script etiketini dahil edin:

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

Veya applicationupdater_ui.swf dosyasını yüklemek için bu script etiketini kullanın:

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

Bu iki dosyada tanımlanan API, bu belgenin devamında açıklanmıştır.

Temel örnek: ApplicationUpdaterUI sürümünü kullanma

Güncelleme çerçevesinin ApplicationUpdaterUI sürümü, uygulamanızda kolayca kullanabileceğiniz basit bir arabirim sunar. Aşağıdaki, temel bir örnektir.

Önce, güncelleme çerçevesini çağıran bir AIR uygulaması oluşturun:

  1. Uygulamanız HTML tabanlı bir AIR uygulamasıysa, applicationupdaterui.swf dosyasını yükleyin:

    <script src="ApplicationUpdater_UI.swf" type="application/x-shockwave-flash"/>
  2. AIR uygulama program mantığınızda, bir ApplicationUpdaterUI nesnesini başlatın.

    ActionScript'te şu kodu kullanın:

    var appUpdater:ApplicationUpdaterUI = new ApplicationUpdaterUI(); 

    JavaScript'te şu kodu kullanın:

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

    Bu kodu uygulama yüklendiğinde yürütülen bir başlatma işlevine eklemek isteyebilirsiniz.

  3. updateConfig.xml adlı bir metin dosyası oluşturun ve bu dosyaya aşağıdakini ekleyin:

    <?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 dosyasının URL öğesini web sunucunuzdaki güncelleme tanımlayıcı dosyasının son konumuyla eşleşecek biçimde düzenleyin. (Sonraki yordama bakın.)

    delay, uygulamanın kontroller ve güncellemeler arasında beklediği gün sayısıdır.

  4. updateConfig.xml dosyasını AIR uygulamanızın proje dizinine ekleyin.

  5. Updater nesnesinin updateConfig.xml dosyasına başvurmasını sağlayın ve nesnenin initialize() yöntemini çağırın.

    ActionScript'te şu kodu kullanın:
    appUpdater.configurationFile = new File("app:/updateConfig.xml"); 
    appUpdater.initialize();
    JavaScript'te şu kodu kullanın:
    appUpdater.configurationFile = new air.File("app:/updateConfig.xml"); 
    appUpdater.initialize();
  6. İlk uygulamadan farklı bir sürüme sahip olan AIR uygulamasının ikinci sürümünü oluşturun. (Sürüm, uygulama tanımlayıcı dosyasında, version öğesinde belirtilmiştir.)

Daha sonra, AIR uygulamasının güncelleme sürümünü web sunucunuza ekleyin:

  1. AIR dosyasının güncelleme sürümünü web sunucunuza yerleştirin.

  2. updateDescriptor.2.5.xml adlı bir metin dosyası oluşturun ve bu dosyaya aşağıdakileri ekleyin:

    <?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 dosyasının versionNumber, URL ve description öğelerini güncelleme AIR dosyanızla eşleşecek biçimde düzenleyin. Bu güncelleme tanımlayıcısı biçimi, AIR 2.5 SDK'ye (veya üstüne) dahil olan güncelleme çerçevesini kullanan uygulamalar tarafından kullanılır.

  3. updateDescriptor.1.0.xml adlı bir metin dosyası oluşturun ve bu dosyaya aşağıdakileri ekleyin:

    <?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 dosyasının version, URL ve description öğelerini güncelleme AIR dosyanızla eşleşecek biçimde düzenleyin. Bu güncelleme tanımlayıcısı biçimi, AIR 2 SDK'ye (veya önceki sürümlere) dahil olan güncelleme çerçevesini kullanan uygulamalar tarafından kullanılır.

    Not: Bu ikinci güncelleme tanımlayıcısı dosyasının oluşturulması, yalnızca AIR 2.5'ten önce oluşturulmuş uygulamalar için güncelleme destekliyorsanız gereklidir.
  4. updateDescriptor.2.5.xml ve updateDescriptor.1.0.xml dosyasını, güncelleme AIR dosyasını içeren aynı web sunucusu dizinine ekleyin.

Bu temel bir örnektir, ancak çoğu uygulama için yeterli olan güncelleme işlevlerini sağlar. Bu belgenin devamı, güncelleme çerçevesini ihtiyaçlarınıza en uygun şekilde nasıl kullanabileceğinizi açıklar.

Güncelleme çerçevesinin başka bir örneği için, Adobe AIR geliştirici merkezinde aşağıdaki örnek uygulamalara bakın:

AIR 2.5'e güncelleme

Uygulamalara sürüm numarası atama kuralları AIR 2.5'te değiştiğinden, AIR 2 güncelleme çerçevesi bir AIR 2.5 uygulama tanımlayıcısındaki sürüm bilgilerini çözümleyemez. Bu uyumsuzluk, uygulamanızı AIR 2.5 SDK'yi kullanmak için güncellemeden ÖNCE yeni güncelleme çerçevesini kullanmak üzere güncellemeniz gerektiği anlamına gelir. Bu nedenle, 2.5'ten önceki herhangi bir AIR sürümünü, AIR 2.5 veya daha sonraki bir sürüme güncellemek İKİ güncelleme gerektirir. İlk güncelleme AIR 2 ad alanını kullanmalı ve AIR 2.5 güncelleme çerçevesi kütüphanesini içermelidir (uygulama paketini AIR 2.5 SDK'yi kullanarak oluşturmaya devam edebilirsiniz). İkinci güncelleme AIR 2.5 ad alanını kullanabilir ve uygulamanızın yeni özelliklerini içerebilir.

Ayrıca ara güncellemenin, doğrudan AIR Updater sınıfını kullanarak AIR 2.5 uygulamasına güncelleme dışında hiçbir şey yapmamasını sağlayabilirsiniz.

Aşağıdaki örnek bir uygulamanın nasıl sürüm 1.0'dan 2.0'a güncelleneceğini gösterir. Sürüm 1.0 eski 2.0 ad alanını kullanır. Sürüm 2.0, 2.5 ad alanını kullanır ve AIR 2.5 API'leri kullanılarak uygulanan yeni özelliklere sahiptir.

  1. Uygulamanın 1.0 sürümüne bağlı olarak 1.0.1 ara sürümünü oluşturun.

    1. Uygulamayı oluştururken AIR 2.5 Uygulama Güncelleyici çerçevesini kullanın.

      Not: Flash teknolojisine bağlı AIR uygulamaları için applicationupdater.swc veya applicationupdater_ui.swc öğesini ve HTML tabanlı AIR uygulamaları için applicationupdater.swf veya applicationupdater_ui.swf öğesini kullanın.
    2. Aşağıda gösterildiği gibi eski ad alanını ve sürümü kullanarak sürüm 1.0.1 için güncelleme tanımlayıcısı dosyası oluşturun:

      <?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. Uygulamanın AIR 2.5 API'lerini ve 2.5 ad alanını kullanan 2.0 sürümünü oluşturun.

  3. Uygulamayı 1.0.1 sürümünden 2.0 sürümüne güncellemek için güncelleme tanımlayıcısı oluşturun.

<?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>

Güncelleme tanımlayıcı dosyalarını tanımlama ve AIR dosyasını web sunucunuza ekleme

AIR güncelleme çerçevesini kullandığınızda, web sunucunuzda saklanan güncelleme tanımlayıcı dosyalarında bulunan güncelleme hakkında temel bilgileri tanımlarsınız. Güncelleme tanımlayıcı dosyası, basit bir XML dosyasıdır. Uygulamada yer alan güncelleme çerçevesi, yeni bir sürümün yüklenip yüklenmediğini görmek için bu dosyayı kontrol eder.

Güncelleme tanımlayıcı dosyasının biçimi AIR 2.5 için değişmiştir. Yeni biçim farklı bir ad alanı kullanır. Orijinal ad alanı“http://ns.adobe.com/air/framework/update/description/1.0” şeklindeydi. AIR 2.5 ad alanı“http://ns.adobe.com/air/framework/update/description/2.5” şeklindedir.

AIR 2.5'ten önce oluşturulmuş AIR uygulamaları yalnızca sürüm 1.0 güncelleme tanımlayıcısını okuyabilir. AIR 2.5 veya sonraki sürümlere dahil güncelleyici çerçevesi kullanılarak oluşturulmuş AIR uygulamaları yalnızca sürüm 2.5 güncelleme tanımlayıcısını okuyabilir. Bu sürüm uyumsuzluğu nedeniyle genellikle iki güncelleme tanımlayıcı dosyası oluşturmanız gerekir. Uygulamanızın AIR 2.5 sürümlerindeki güncelleme mantığı yeni biçimi kullanan bir güncelleme tanımlayıcısını indirmelidir. AIR uygulamanızın önceki sürümleri aynı biçimi kullanmaya devam etmelidir. İki dosya da yayınladığınız her güncelleme için değiştirilmelidir (siz AIR 2.5'ten önce oluşturulan sürümleri desteklemeyi durdurana kadar)

Güncelleme tanımlayıcı dosyası aşağıdaki verileri içerir:

  • versionNumber—AIR uygulamasının yeni sürümü. versionNumber öğesini AIR 2.5 uygulamalarını güncellemek için kullanılan güncelleme tanımlayıcılarında kullanın. Değer yeni AIR uygulama tanımlayıcı dosyasının versionNumber öğesinde kullanılanla aynı dize olmalıdır. Güncelleme tanımlayıcı dosyasının sürüm numarası, güncelleme AIR dosyasının sürümü numarasıyla eşleşmiyorsa, güncelleme çerçevesi istisna verir.

  • version—AIR uygulamasının yeni sürümü. AIR 2.5'ten önce oluşturulmuş uygulamaları güncellemek için kullanılan uygulama tanımlayıcılarda version öğesini kullanın. Değer yeni AIR uygulama tanımlayıcı dosyasının version öğesinde kullanılanla aynı dize olmalıdır. Güncelleme tanımlayıcı dosyasının sürümü, güncelleme AIR dosyasının sürümüyle eşleşmiyorsa, güncelleme çerçevesi istisna verir.

  • versionLabel—Kullanıcılara gösterilmesi planlanan kişiler tarafından okunabilen sürüm dizesi. versionLabel isteğe bağlıdır, ancak yalnızca 2.5 sürümü güncelleme tanımlayıcı dosyalarında belirtilebilir. Uygulama tanımlayıcısında bir versionLabel öğesi kullanıyorsanız kullanın ve aynı değere ayarlayın.

  • url—Güncelleme AIR dosyasının konumu. Bu, AIR uygulamasının güncelleme sürümünü içeren dosyadır.

  • description—Yeni sürüme ilişkin ayrıntılar. Bu bilgi, güncelleme işlemi sırasında kullanıcıya gösterilebilir.

version ve url öğeleri zorunludur. description öğesi isteğe bağlıdır.

Örnek bir 2.5 sürümü güncelleme tanımlayıcı dosyası:

<?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>

Ve örnek bir 1.0 sürümü güncelleme tanımlayıcı dosyası:

<?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>

Birden çok dil kullanarak description etiketini tanımlamak istiyorsanız, bir lang niteliği tanımlayan birden çok text öğesi kullanın:

<?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>

Güncelleme tanımlayıcı dosyasını web sunucunuzda güncelleme AIR dosyasıyla birlikte konumlandırın.

Güncelleme tanımlayıcısına dahil olan templates dizini örnek güncelleme tanımlayıcı dosyaları içerir. Bunlar tek dilli ve çok dilli sürümler içerir.

Updater nesnesini başlatma

AIR güncelleme çerçevesini kodunuza yükledikten sonra (bkz. Flex geliştirme ortamınızı ayarlama ve Çerçeve dosyalarını HTML tabanlı bir AIR uygulamasına dahil etme), aşağıdaki örnekte olduğu gibi bir updater nesnesini örneklemeniz gerekir.

ActionScript örneği:

var appUpdater:ApplicationUpdater = new ApplicationUpdater();

JavaScript örneği:

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

Önceki kod ApplicationUpdater sınıfını kullanır (kullanıcı arabirimi sağlamayan). ApplicationUpdaterUI sınıfını kullanmak istiyorsanız (kullanıcı arabirimi sağlayan), aşağıdakini kullanın.

ActionScript örneği:

var appUpdater:ApplicationUpdaterUI = new ApplicationUpdaterUI();

JavaScript örneği:

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

Bu belgenin devamında yer alan kod, appUpdater adlı bir updater nesnesini başlattığınızı varsayar.

Güncelleme ayarlarını yapılandırma

Hem ApplicationUpdater hem de ApplicationUpdaterUI uygulamayla birlikte verilen bir yapılandırma dosyası yoluyla veya uygulamadaki ActionScript ya da JavaScript aracılığıyla yapılandırılabilir.

Güncelleme ayarlarını XML yapılandırma dosyasında tanımlama

Güncelleme yapılandırma dosyası, bir XML dosyasıdır. Aşağıdaki öğeleri içerebilir:

  • updateURL— Bir Dize. Güncelleme tanımlayıcısının uzak sunucudaki konumunu temsil eder. Herhangi bir geçerli URLRequest konumu olanaklıdır. Konfigürasyon dosyası veya komut dosyası aracılığıyla updateURL özelliğini tanımlamalısınız (bkz. Güncelleme tanımlayıcı dosyalarını tanımlama ve AIR dosyasını web sunucunuza ekleme). Güncelleyiciyi kullanmadan önce bu özelliği tanımlamanız gerekir (Güncelleme çerçevesini başlatma) bölümünde tanımlandığı biçimde updater nesnesinin initialize() yöntemini çağırmadan önce).

  • delay—Bir Sayı. Güncellemeleri kontrol etmek için gün cinsinden (0.25 gibi değerler geçerlidir) verilen zaman aralığını temsil eder. 0 değeri (varsayılan değer), güncelleyicinin otomatik bir dönemsel kontrol gerçekleştirmediğini belirtir.

ApplicationUpdaterUI için yapılandırma dosyası, updateURL ve delay öğelerinin yanı sıra aşağıdaki öğeyi içerebilir:

  • defaultUI: Bir dialog öğeleri listesi. Her dialog öğesi, kullanıcı arabiriminde iletişim kutusuna karşılık gelen bir name niteliği içerir. Herdialog öğesi, iletişim kutusunun görünür olup olmadığını tanımlayan bir visible niteliğine sahiptir. Varsayılan olarak true değerindedir. name niteliği için olası değerler şöyledir:

    • "checkForUpdate"—Güncellemeyi Kontrol Et, Güncelleme Yok ve Hatayı Güncelle iletişim kutularına karşılık gelir

    • "downloadUpdate"—Güncellemeyi İndir iletişim kutusuna karşılık gelir

    • "downloadProgress"—İndirme İlerlemesi ve İndirme Hatası iletişim kutularına karşılık gelir

    • "installUpdate"—Güncellemeyi Yükle iletişim kutusuna karşılık gelir

    • "fileUpdate"—Dosya Güncelleme, Dosya Güncellemesi Yok ve Dosya Hatası iletişim kutularına karşılık gelir

  • "unexpectedError"—Beklenmeyen Hata iletişim kutusuna karşılık gelir

    false olarak ayarlandığında, karşılık gelen iletişim kutusu güncelleme yordamının bölümü olarak görünmez.

Burada, ApplicationUpdater çerçevesine ilişkin yapılandırma dosyasının bir örneği bulunur:

<?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>

Burada, defaultUI öğesi için tanım içeren ApplicationUpdaterUI çerçevesine ilişkin yapılandırma dosyasının bir örneği bulunur:

<?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 özelliğini dosyanın konumuna yönlendirin:

ActionScript örneği:

appUpdater.configurationFile = new File("app:/cfg/updateConfig.xml");
JavaScript örneği:
appUpdater.configurationFile = new air.File("app:/cfg/updateConfig.xml");

Güncelleme çerçevesinin templates dizini, örnek bir yapılandırma dosyası olan config-template.xml dosyasını içerir.

Güncelleme ayarları ActionScript veya JavaScript kodunu tanımlama

Bu yapılandırma parametreleri, uygulamadaki kodu aşağıdaki şekilde kullanarak da ayarlanabilir:

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

Updater nesnesi updateURL ve delay özelliklerine sahiptir. Bu özellikler, yapılandırma dosyasındaki updateURL ve delay öğeleriyle aynı özellikleri tanımlar: güncelleme tanımlayıcı dosyasının URL'si ve güncellemeleri kontrol etmek için aralık. Kodda bir yapılandırma dosyası ve ayarlarını tanımladığınızda, kod kullanılarak ayarlanan tüm özellikler yapılandırma dosyasında karşılık gelen ayarların yanında önceliğe sahip olur.

Güncelleyiciyi kullanmadan önce (updater nesnesinin initialize() yöntemini Güncelleme çerçevesini başlatma bölümündeki şekilde çağırmadan önce) yapılandırma dosyası veya komut dosyası yoluyla updateURL özelliğini tanımlamalısınız (bkz. Güncelleme tanımlayıcı dosyalarını tanımlama ve AIR dosyasını web sunucunuza ekleme).

ApplicationUpdaterUI çerçevesi, updater nesnesinin bu ek özelliklerini tanımlar:

  • isCheckForUpdateVisible—Güncellemeyi Kontrol Et, Güncelleme Yok ve Hatayı Güncelle iletişim kutularına karşılık gelir

  • isDownloadUpdateVisible—Güncellemeyi İndir iletişim kutusuna karşılık gelir

  • isDownloadProgressVisible—İndirme İlerlemesi ve İndirme Hatası iletişim kutularına karşılık gelir

  • isInstallUpdateVisible—Güncellemeyi Yükle iletişim kutusuna karşılık gelir

  • isFileUpdateVisible—Dosya Güncelleme, Dosya GüncellemesiYok ve Dosya Hatası iletişim kutularına karşılık gelir

  • isUnexpectedErrorVisible—Beklenmeyen Hata iletişim kutusuna karşılık gelir

Her özellik, ApplicationUpdaterUI kullanıcı arabiriminde bir veya daha çok iletişim kutusuna karşılık gelir. Her özellik varsayılan olarak true değerine sahip olan bir Boolean değeridir. false olarak ayarlandığında, karşılık gelen iletişim kutuları güncelleme yordamının parçası olarak görüntülenmez.

Bu iletişim kutusu özellikleri, güncelleme yapılandırma dosyasındaki ayarları geçersiz kılar.

Güncelleme işlemi

AIR güncelleme çerçevesi, güncelleme işlemlerini aşağıdaki adımlarla tamamlar:

  1. Güncelleyicinin başlatılması, tanımlanan gecikme aralığı içinde güncelleme kontrolünün gerçekleştirilip gerçekleştirilmediğini kontrol eder (bkz. Güncelleme ayarlarını yapılandırma). Güncelleme kontrolünün zamanı geldiğinde, güncelleme işlemi devam eder.

  2. Güncelleyici, güncelleme tanımlayıcı dosyasını indirir ve yorumlar.

  3. Güncelleyici, güncelleme AIR dosyasını indirir.

  4. Güncelleyici, uygulamanın güncel sürümünü yükler.

Updater nesnesi, bu adımların her biri tamamlandığında olaylar gönderir. ApplicationUpdater sürümünde, işlemdeki bir adımın başarıyla tamamlandığını gösteren olayları iptal edebilirsiniz. Bu olaylardan birini iptal ettiğinizde, işlemin sonraki adımı iptal edilir. Güncelleyici, ApplicationUpdaterUI sürümünde kullanıcının işlemin her adımında iptal etmesine veya devam etmesine olanak sağlayan bir iletişim kutusu sunar.

Olayı iptal ederseniz, işleme devam etmek için updater nesnesinin yöntemlerini çağırabilirsiniz.

Güncelleyicinin ApplicationUpdater sürümü güncelleme işlemi boyunca ilerledikçe, güncel durumunu currentState özelliğinde kaydeder. Bu özellik, aşağıdaki olası değerlere sahip bir dizeye ayarlanır:

  • "UNINITIALIZED"—Güncelleyici başlatılmadı.

  • "INITIALIZING"—Güncelleyici başlatılıyor.

  • "READY"—Güncelleyici başlatıldı

  • "BEFORE_CHECKING"—Güncelleyici, güncelleme tanımlayıcı dosyası için henüz kontrol edilmedi.

  • "CHECKING"—Güncelleyici, güncelleme tanımlayıcı dosyası için kontrol ediliyor.

  • "AVAILABLE"—Güncelleme tanımlayıcı dosyası mevcut.

  • "DOWNLOADING"—Güncelleyici, AIR dosyasını indiriyor.

  • "DOWNLOADED"—Güncelleyici, AIR dosyasını indirdi.

  • "INSTALLING"—Güncelleyici, AIR dosyasını yüklüyor.

  • "PENDING_INSTALLING"—Güncelleyici başlatıldı ve bekleyen güncellemeler mevcut.

Updater nesnesinin bazı yöntemleri yalnızca güncelleyici belirli bir durumda olduğunda yürütülür.

Güncelleme çerçevesini başlatma

Yapılandırma özelliklerini ayarladıktan sonra (bkz. Temel örnek: ApplicationUpdaterUI sürümünü kullanma), güncellemeyi başlatmak için initialize() yöntemini çağırın:

appUpdater.initialize();

Bu yöntem şunu yapar:

  • Senkronize olarak bekleyen güncellemeleri sessizce yüklerken, güncelleme çerçevesini başlatır. Bu yöntem, çağrıldığında uygulamayı yeniden başlatabileceğinden, uygulamanın başlatılması sırasında çağrılmalıdır.

  • Ertelenen bir güncelleme olup olmadığını kontrol eder ve bunu yükler.

  • Güncelleme işlemi sırasında hata oluştuğunda, uygulama depo alanından güncelleme dosyasını ve sürüm bilgisini temizler.

  • Gecikmenin süresi dolduğunda güncelleme işlemini başlatır. Aksi halde, zamanlayıcıyı yeniden başlatır.

Bu yöntemin çağrılması, updater nesnesinin aşağıdaki olayları göndermesiyle sonuçlanabilir:

  • UpdateEvent.INITIALIZED—Başlatma tamamlandığında gönderilir.

  • ErrorEvent.ERROR—Başlatma sırasında hata olduğunda gönderilir.

UpdateEvent.INITIALIZED olayı gönderildiğinde, güncelleme işlemi tamamlanmıştır.

initialize() yöntemini çağırdığınızda, güncelleyici güncelleme işlemini başlatır ve zamanlayıcı gecikme ayarını temel alarak tüm adımları tamamlar. Ancak, her zaman updater nesnesinin checkNow() yöntemini çağırarak güncelleme işlemini başlatabilirsiniz.

appUpdater.checkNow();

Güncelleme işlemi zaten çalışıyorsa, bu yöntem etkisizdir. Aksi halde, güncelleme işlemini başlatır.

Updater nesnesi, checkNow() yönteminin çağrılmasının sonucu olarak aşağıdaki olayı gönderebilir:

  • Güncelleme tanımlayıcı dosyasını indirmeye çalışmadan hemen önce UpdateEvent.CHECK_FOR_UPDATE olayı.

checkForUpdate olayını iptal ederseniz, updater nesnesinin checkForUpdate() yöntemini çağırabilirsiniz. (Bkz. sonraki bölüm.) Olayı iptal etmezseniz, güncelleme işlemi güncelleme tanımlayıcı dosyasını kontrol etmeye devam eder.

ApplicationUpdaterUI sürümünde güncelleme işlemini yönetme

Kullanıcı, ApplicationUpdaterUI sürümünde, kullanıcı arabiriminin iletişim kutularındaki İptal düğmeleri yoluyla işlemi iptal edebilir. Ayrıca, ApplicationUpdaterUI nesnesinin cancelUpdate() yöntemini çağırarak da güncelleme işlemini programlama yoluyla iptal edebilirsiniz.

Güncelleyicinin hangi iletişim kutusu teyitlerini görüntülediğini belirlemek için ApplicationUpdaterUI nesnesinin özelliklerini ayarlayabilir veya güncelleme yapılandırma dosyasındaki öğeleri tanımlayabilirsiniz. Ayrıntılar için bkz. Güncelleme ayarlarını yapılandırma.

ApplicationUpdater sürümünde güncelleme işlemini yönetme

Güncelleme işleminin adımlarını iptal etmek için ApplicationUpdater nesnesi tarafından gönderilen olay nesnelerinin preventDefault() yöntemini çağırabilirsiniz (bkz. Güncelleme işlemi). Varsayılan davranışın iptal edilmesi, uygulamanıza kullanıcının devam etmek isteyip istemediğini soran bir mesaj görüntüleme şansı verir.

Aşağıdaki adımlar, güncelleme işleminin bir adımı iptal edildiğinde işleme nasıl devam edileceğini açıklar.

Güncelleme tanımlayıcı dosyasını indirme ve yorumlama

ApplicationUpdater nesnesi, checkForUpdate olayını güncelleme işlemi başlamadan, güncelleyici güncelleme tanımlayıcı dosyasını indirmeye çalışmadan hemen önce gönderir. checkForUpdate olayının varsayılan davranışını iptal ederseniz, güncelleyici güncelleme tanımlayıcı dosyasını indirmez. Güncelleme işlemine devam etmek için checkForUpdate() yöntemini çağırabilirsiniz:

appUpdater.checkForUpdate();

checkForUpdate() yönteminin çağrılması güncelleyicinin güncelleme tanımlayıcı dosyasını senkronize olmayan şekilde indirmesine ve yorumlamasına neden olur. Güncelleyici, checkForUpdate() yönteminin çağrılmasının sonucu olarak aşağıdaki olayları gönderebilir:

  • StatusUpdateEvent.UPDATE_STATUS—Güncelleyici güncelleme tanımlayıcı dosyasını başarıyla indirdi ve yorumladı. Bu olay şu özelliklere sahiptir:

    • available—Bir Boolean değeri. Güncel uygulamanın sürümünden farklı bir sürüm mevcut olduğunda true olarak; aksi halde (sürüm aynıysa) false olarak ayarlanır.

    • version—Bir Dize. Güncelleme dosyasının uygulama tanımlayıcı dosyasından sürüm

    • details—Bir Dizi. Tanımlamanın yerelleştirilmiş sürümleri mevcutsa, bu dizi ilk öğe olarak boş bir dize ("") ve ikinci öğe olarak tanımı içerir.

      Tanımın birden çok sürümü mevcutsa (güncelleme tanımlayıcı dosyasında), bu dizi birden çok alt dizi içerir. Her dizi iki öğeye sahiptir: ilk öğe dil kodu (örn. "en") ve ikinci öğe bu dile karşılık gelen tanımdır (bir Dize). Bkz. Güncelleme tanımlayıcı dosyalarını tanımlama ve AIR dosyasını web sunucunuza ekleme.

  • StatusUpdateErrorEvent.UPDATE_ERROR—Hata oluştu ve güncelleyici güncelleme tanımlayıcı dosyasını indiremedi veya yorumlayamadı.

Güncelleme AIR dosyasını indirme

Güncelleyici güncelleme tanımlayıcı dosyasını başarıyla indirip yorumladıktan sonra, ApplicationUpdater nesnesi updateStatus olayını gönderir. Varsayılan davranış, mevcutsa güncelleme dosyasını indirmeye başlamaktır. Varsayılan davranışı iptal ederseniz, güncelleme işlemine devam etmek için downloadUpdate() yöntemini çağırabilirsiniz:

appUpdater.downloadUpdate();

Bu yöntemin çağrılması, güncelleyicinin AIR dosyasının güncel sürümünü senkronize olmayan biçimde indirmesine neden olur.

downloadUpdate() yöntemi aşağıdaki olayları gönderebilir:

  • UpdateEvent.DOWNLOAD_START—Sunucuya bağlantı kuruldu. ApplicationUpdaterUI kitaplığı kullanılırken, bu olay indirme ilerlemesini izleyen bir ilerleme çubuğu içeren bir iletişim penceresi görüntüler.

  • ProgressEvent.PROGRESS—Dosya indirme ilerlerken düzenli aralıklarla gönderilir.

  • DownloadErrorEvent.DOWNLOAD_ERROR—Güncelleme dosyasına bağlanma veya bu dosyayı indirme sırasında hata oluştuğunda gönderilir. Ayrıca geçersiz HTTP durumlarında gönderilir. (Örn. “404 - Dosya bulunamadı”.) Bu olay, ek hata bilgilerini tanımlayan bir tam sayı olan errorID özelliğini içerir. Ek subErrorID özelliği, daha fazla bilgi içerir.

  • UpdateEvent.DOWNLOAD_COMPLETE—Güncelleyici güncelleme tanımlayıcı dosyasını başarıyla indirdi ve yorumladı. Bu olayı iptal etmezseniz, ApplicationUpdater sürümü, güncel sürümü yüklemeye devam eder. ApplicationUpdaterUI sürümünde, kullanıcıya devam etme ve etmeme seçeneklerini veren bir iletişim kutusu sunulur.

Uygulamayı güncelleme

ApplicationUpdater nesnesi, güncelleme dosyasının indirilmesi tamamlandığında downloadComplete olayını gönderir. Varsayılan davranışı iptal ederseniz, güncelleme işlemine devam etmek için installUpdate() yöntemini çağırabilirsiniz:

appUpdater.installUpdate(file);

Bu yöntemin çağrılması, güncelleyicinin AIR dosyasının güncel sürümünü yüklemesine neden olur. Bu yöntem, güncelleme olarak AIR dosyasına referans veren bir File nesnesi olan tek bir file parametresi içerir.

ApplicationUpdater nesnesi, installUpdate() yöntemini çağırmanın bir sonucu olarak beforeInstall olayını gönderebilir:

  • UpdateEvent.BEFORE_INSTALL—Güncellemenin yüklenmesinden hemen önce gönderilir. Bazen, güncelleme devam etmeden kullanıcının geçerli çalışmayı tamamlayabilmesi için, bu sırada güncellemenin yüklenmesini önlemek yararlıdır. Event nesnesinin preventDefault() yönteminin çağrılması, yüklemeyi bir sonraki yeniden başlatmaya kadar erteler ve ek güncelleme işlemi başlatılamaz. (Bunlar, checkNow() yönteminin çağrılması veya dönemsel kontrol sonucu oluşan güncellemeleri kapsar.)

Rastgele bir AIR dosyasından yükleme

Kullanıcının bilgisayarındaki bir AIR dosyasından yüklemek üzere güncel sürümü yüklemek için installFromAIRFile() yöntemini çağırabilirsiniz:

appUpdater.installFromAIRFile();

Bu yöntem, güncelleyicinin AIR dosyasından uygulamanın güncel sürümünü yüklemesine neden olur.

installFromAIRFile() yöntemi aşağıdaki olayları gönderebilir:

  • StatusFileUpdateEvent.FILE_UPDATE_STATUS—ApplicationUpdater, dosyayı installFromAIRFile() yöntemini kullanarak başarıyla doğruladıktan sonra gönderilir. Bu olay, aşağıdaki özelliklere sahiptir.

    • available—Güncel uygulamanın sürümünden farklı bir sürüm mevcut olduğunda true olarak; aksi halde (sürüm aynıysa) false olarak ayarlıdır.

    • version —Yeni kullanılabilir sürümü temsil eden dize.

    • path—Güncelleme dosyasının yerel yolunu temsil eder.

    StatusFileUpdateEvent nesnesinin mevcut özelliği true olarak ayarlandığında bu olayı iptal edebilirsiniz. Bu olayın iptal edilmesi, güncellemenin ilerlemesini iptal eder. İptal edilen güncellemeye devam etmek için installUpdate() yöntemini çağırın.

  • StatusFileUpdateErrorEvent.FILE_UPDATE_ERROR—Hata oluştu ve güncelleyici AIR uygulamasını yükleyemedi.

Güncelleme işlemini iptal etme

Güncelleme işlemini iptal etmek için cancelUpdate() yöntemini çağırabilirsiniz:

appUpdater.cancelUpdate();

Bu yöntem, tüm eksik indirilen dosyaları silerek, bekleyen tüm indirmeleri iptal eder ve dönemsel kontrol zamanlayıcısını yeniden başlatır.

Updater nesnesi başlatılıyorsa, bu yöntem etkisizdir.

ApplicationUpdaterUI arabirimini yerelleştirme

ApplicationUpdaterUI sınıfı, güncelleme işlemi için varsayılan bir kullanıcı arabirimi sağlar. Bu, kullanıcının işlemi başlatmasına, işlemi iptal etmesine ve diğer ilgili işlemleri gerçekleştirmesine olanak sağlayan iletişim kutularını içerir.

Güncelleme tanımlayıcı dosyasının description öğesi, uygulama açıklamasını farklı dillerde tanımlamanızı sağlar. Aşağıdaki gibi lang niteliklerini tanımlayan birden çok text öğesi kullanın:

<?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>

Güncelleme çerçevesi, son kullanıcının yerelleştirme zincirine en çok uyan tanımı kullanır. Daha fazla bilgi için bkz. Güncelleme tanımlayıcı dosyasını tanımlama ve AIR dosyasını web sunucunuza ekleme.

Flex geliştiricileri, doğrudan "ApplicationUpdaterDialogs" paketine yeni bir dil ekleyebilir.

JavaScript geliştiricileri, updater nesnesinin addResources() yöntemini çağırabilir. Bu yöntem, bir dil için dinamik olarak yeni bir kaynak paketi ekler. Kaynak paketi, bir dile ilişkin yerelleştirilmiş dizeleri tanımlar. Bu dizeler, çeşitli iletişim kutusu metin alanlarında kullanılır.

JavaScript geliştiricileri, kullanıcı arabirimi tarafından kullanılan yerel ayar zincirini tanımlamak için ApplicationUpdaterUI sınıfının localeChain özelliğini kullanabilir. Genellikle yalnızca JavaScript (HTML) geliştiricileri bu özelliği kullanır. Flex geliştiricileri, yerel ayar zincirini yönetmek için ResourceManager kullanabilir.

Örneğin, aşağıdaki JavaScript kodu Rumence ve Macarca için kaynak paketlerini tanımlar:

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;

Ayrıntılar için bkz. dil başvurusundaki ApplicationUpdaterUI sınıfının addResources() yöntemi.