Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
Uygulamanızı Mağaza'ya göndermek istiyorsanız , Windows geliştirici desteğine başvurmanız ve varlık paketlerini ve paket katlama özelliğini kullanmak için onay almanız gerekir.
Varlık paketleri, uygulamalarınızın Mağaza'da genel paketleme boyutunu ve yayımlama süresini azaltabilir. Varlık paketleri ve geliştirme yinelemelerinizi nasıl hızlandırabileceği hakkında daha fazla bilgiyi varlık paketlerine giriş bölümünden öğrenebilirsiniz.
Uygulamanız için varlık paketlerini kullanmayı düşünüyorsanız veya kullanmak istediğinizi zaten biliyorsanız, varlık paketlerinin geliştirme sürecinizi nasıl değiştireceğini merak ediyorsunuzdur. Kısacası, sizin için uygulama geliştirme aynı kalır - bu, varlık paketleri için paket katlama özelliği sayesinde mümkündür.
Uygulamanızı böldükten sonra dosya erişimi
Paket katlamanın geliştirme sürecinizi nasıl etkilemediği hakkında bilgi edinmek için öncelikle uygulamanızı birden çok pakete (varlık paketleri veya kaynak paketleriyle) böldüğünüzde ne olduğunu anlamak için geri dönelim.
Yüksek düzeyde, uygulamanızın dosyalarından bazılarını diğer paketlere (mimari paketleri olmayan) böldüğünüzde, bu dosyalara kodunuzun çalıştığı yere göre doğrudan erişemezsiniz. Bunun nedeni, bu paketlerin tümünün mimari paketinizin yüklü olduğu farklı dizinlere yüklenmesidir. Örneğin, bir oyun yapıyorsanız ve oyununuz Fransızca ve Almanca olarak yerelleştirilmişse ve hem x86 hem de x64 makineleri için derlediyseniz, oyununuzun uygulama paketinde şu uygulama paketi dosyalarına sahip olmanız gerekir:
- MyGame_1.0_x86.appx
- MyGame_1.0_x64.appx
- MyGame_1.0_language-fr.appx
- MyGame_1.0_language-de.appx
Oyununuz bir kullanıcının makinesine yüklendiğinde, her uygulama paketi dosyasının WindowsApps dizininde kendi klasörü olur. Dolayısıyla 64 bit Windows çalıştıran bir Fransız kullanıcı için oyununuz şu şekilde görünür:
C:\Program Files\WindowsApps\
|-- MyGame_1.0_x64
| `-- …
|-- MyGame_1.0_language-fr
| `-- …
`-- …(other apps)
Kullanıcı için geçerli olmayan uygulama paketi dosyalarının yüklenmeyeceğini unutmayın (x86 ve Almanca paketleri).
Bu kullanıcı için, oyununuzun ana yürütülebilir dosyası MyGame_1.0_x64 klasöründe yer alır ve oradan çalıştırılır ve normalde yalnızca bu klasördeki dosyalara erişebilir. MyGame_1.0_language-fr klasöründeki dosyalara erişmek için MRT API'lerini veya PackageManager API'lerini kullanmanız gerekir. MRT API'leri, yüklenen dillerden en uygun dosyayı otomatik olarak seçebilir, WINDOWS.ApplicationModel.Resources.Core adresinde MRT API'leri hakkında daha fazla bilgi edinebilirsiniz. Alternatif olarak, PackageManager Sınıfını kullanarak Fransızca dil paketinin yüklü konumunu bulabilirsiniz. Bu değişiklik gösterebileceğinden ve kullanıcılar arasında farklılık gösterebileceğinden, uygulamanızın paketlerinin yüklü konumunu asla varsaymamalısınız.
Varlık paketi katlama
Peki varlık paketlerinizdeki dosyalara nasıl erişebilirsiniz? Mimari paketinizdeki diğer dosyalara erişmek için kullandığınız dosya erişim API'lerini kullanmaya devam edebilirsiniz. Bunun nedeni, varlık paketi dosyalarının paket katlama işlemi aracılığıyla yüklendiğinde mimari paketinizin içine dahil edilmesidir. Ayrıca, varlık paketi dosyalarının başlangıçta mimari paketlerinizdeki dosyalar olması gerektiğinden, bu, gevşek dosya dağıtımından geliştirme sürecinizde paketlenmiş dağıtıma geçtiğinizde API kullanımını değiştirmeniz gerekmediği anlamına gelir.
Paket katlamanın nasıl çalıştığı hakkında daha fazla bilgi edinmek için bir örnekle başlayalım. Aşağıdaki dosya yapısına sahip bir oyun projeniz varsa:
MyGame
|-- Audios
| |-- Level1
| | `-- ...
| `-- Level2
| `-- ...
|-- Videos
| |-- Level1
| | `-- ...
| `-- Level2
| `-- ...
|-- Engine
| `-- ...
|-- XboxLive
| `-- ...
`-- Game.exe
Oyununuzu 3 pakete bölmek istiyorsanız: x64 mimari paketi, sesler için bir varlık paketi ve videolar için bir varlık paketi, oyununuz şu paketlere bölünür:
MyGame_1.0_x64.appx
|-- Engine
| `-- ...
|-- XboxLive
| `-- ...
`-- Game.exe
MyGame_1.0_Audios.appx
`-- Audios
|-- Level1
| `-- ...
`-- Level2
`-- ...
MyGame_1.0_Videos.appx
`-- Videos
|-- Level1
| `-- ...
`-- Level2
`-- ...
Oyununuzu yüklediğinizde, önce x64 paketi dağıtılır. Ardından iki varlık paketi, önceki örneğimizdeki MyGame_1.0_language-fr gibi kendi klasörlerine dağıtılmaya devam eder. Ancak, paket katlama nedeniyle varlık paketi dosyaları da MyGame_1.0_x64 klasöründe görünmeye zorlanır (bu nedenle dosyalar iki konumda görünse de, disk alanının iki katı kadar yer kaplamaz). Varlık paketi dosyalarının görüneceği konum, tam olarak paketin köküne göre bulundukları konumdur. Dağıtılan oyunun son düzeni şöyle görünür:
C:\Program Files\WindowsApps\
|-- MyGame_1.0_x64
| |-- Audios
| | |-- Level1
| | | `-- ...
| | `-- Level2
| | `-- ...
| |-- Videos
| | |-- Level1
| | | `-- ...
| | `-- Level2
| | `-- ...
| |-- Engine
| | `-- ...
| |-- XboxLive
| | `-- ...
| `-- Game.exe
|-- MyGame_1.0_Audios
| `-- Audios
| |-- Level1
| | `-- ...
| `-- Level2
| `-- ...
|-- MyGame_1.0_Videos
| `-- Videos
| |-- Level1
| | `-- ...
| `-- Level2
| `-- ...
`-- …(other apps)
Varlık paketleri için paket katlama kullanırken, varlık paketlerine böldüğünüz dosyalara yine aynı şekilde erişebilirsiniz (mimari klasörünün özgün proje klasörüyle tam olarak aynı yapıya sahip olduğuna dikkat edin) ve kodunuzu etkilemeden varlık paketleri ekleyebilir veya dosyaları varlık paketleri arasında taşıyabilirsiniz.
Şimdi daha karmaşık bir paket katlama örneği için. Bunun yerine dosyalarınızı düzeye göre bölmek istediğinizi ve özgün proje klasörüyle aynı yapıyı korumak istiyorsanız paketlerinizin şu şekilde görünmesi gerektiğini varsayalım:
MyGame_1.0_x64.appx
|-- Engine
| `-- ...
|-- XboxLive
| `-- ...
`-- Game.exe
MyGame_Level1.appx
|-- Audios
| `-- Level1
| `-- ...
`-- Videos
`-- Level1
`-- ...
MyGame_Level2.appx
|-- Audios
| `-- Level2
| `-- ...
`-- Videos
`-- Level2
`-- ...
Bu, MyGame_Level1 paketindeki Level1 klasörlerinin ve dosyalarının ve MyGame_Level2 paketindeki Level2 klasörlerinin ve dosyalarının paket katlama sırasında Ses veVideolar klasörleriyle birleştirilmesini sağlar. Genel bir kural olarak, MakeAppx.exe için eşleme dosyasında veya paketleme düzeninde paketlenmiş dosyalar için belirlenen göreli yol, paket katlama sonrasında bunlara erişmek için kullanmanız gereken yoldur.
Son olarak, farklı varlık paketlerinde aynı göreli yollara sahip iki dosya varsa, bu durum paket katlama sırasında çakışmaya neden olur. Bir çakışma oluşursa uygulamanızın dağıtımı bir hataya neden olur ve başarısız olur. Ayrıca, paket katlama sabit bağlantılardan yararlandığından varlık paketlerini kullanırsanız uygulamanız NTFS olmayan sürücülere dağıtılamaz. Uygulamanızın büyük olasılıkla kullanıcılarınız tarafından çıkarılabilir sürücülere taşınacağını biliyorsanız varlık paketlerini kullanmamalısınız.