AIR uygulamalarını güncellemeKullanı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ındaUpdater 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ındaupdate() 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ı imzalamaGü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:
Özel bir uygulama güncelleme kullanıcı arabirimi sunmaAIR, 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ı indirmeUpdater 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 edinUygulamayı 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 kullanmaUygulama 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:
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:
Daha fazla bilgi için şu bölümlere bakın: Flex geliştirme ortamınızı ayarlamaAIR 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 etmeGüncelleme çerçevesinin frameworks/html dizini şu SWF dosyalarını içerir:
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ü kullanmaGü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:
Daha sonra, AIR uygulamasının güncelleme sürümünü web sunucunuza 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üncellemeUygulamalara 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.
<?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 eklemeAIR 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:
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şlatmaAIR 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ırmaHem 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ımlamaGüncelleme yapılandırma dosyası, bir XML dosyasıdır. Aşağıdaki öğeleri içerebilir:
ApplicationUpdaterUI için yapılandırma dosyası, updateURL ve delay öğelerinin yanı sıra aşağıdaki öğeyi içerebilir:
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ımlamaBu 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:
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şlemiAIR güncelleme çerçevesi, güncelleme işlemlerini aşağıdaki adımlarla tamamlar:
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:
Updater nesnesinin bazı yöntemleri yalnızca güncelleyici belirli bir durumda olduğunda yürütülür. Güncelleme çerçevesini başlatmaYapı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:
Bu yöntemin çağrılması, updater nesnesinin aşağıdaki olayları göndermesiyle sonuçlanabilir:
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:
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önetmeKullanı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önetmeGü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 yorumlamaApplicationUpdater 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:
Güncelleme AIR dosyasını indirmeGü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:
Uygulamayı güncellemeApplicationUpdater 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:
Rastgele bir AIR dosyasından yüklemeKullanı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:
Güncelleme işlemini iptal etmeGü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ştirmeApplicationUpdaterUI 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. |
|