感謝IT之家網(wǎng)友 yinyue200 的原創(chuàng)投稿
簡單來說,APPX格式的文件就是ZIP換了個擴(kuò)展名,把APPX文件的擴(kuò)展名改成zip就能打開了。
APPX格式分為四種:
第一種,擴(kuò)展名為.appx;
第二種,擴(kuò)展名為.appxbundle;
第三種,擴(kuò)展名為.appxsym;
第四種,擴(kuò)展名為.appxupload。
第一種APPX可能在一些人看來并不能體現(xiàn)它是“UWP”的安裝包,因為它的安裝包并不是通用的,在ARM、x86、x64設(shè)備上需要不同的安裝包,并不能一個安裝包走遍天下(基于JavaScript開發(fā)的UWP除外,老的Windows 8應(yīng)用除外)。
第二種APPX其實就是將同一應(yīng)用的第一種APPX打包了起來,將ARM、x86、x64等平臺需要的APPX用ZIP文件放到了一起,在ARM設(shè)備上安裝就提取里面ARM的第一類APPX來安裝,x86就提取x86。你沒看錯,就是這么粗暴的做法,實現(xiàn)了“偽”安裝包通用。
第三種和第四種都是開發(fā)者需要接觸到的,平常見不到,第三種是UWP符號文件,第四種是未經(jīng).Net Native處理的上傳文件。開發(fā)者向商店上傳應(yīng)用用的就是第四種文件,實際上就是將第二種和第三種文件通過ZIP壓縮放到了一起。
現(xiàn)在大家應(yīng)該清楚了,第二、三、四種APPX都是用來打包第一種APPX的,那么第一種APPX里面是什么呢?
第一種APPX又分三種
1、依賴包;
2、資源包;
3、應(yīng)用程序包。
▲一個典型的依賴包APPX
其中所有的.winmd .dll文件是供其它程序使用的庫。
CodeIntegrity.cat文件是包的數(shù)字簽名,保證appx文件不被篡改。
AppxBlockMap.xml文件保存了包中所有文件的名稱,校驗值和文件大小。
AppxManifest.xml文件是包清單文件,它保存了這個包的基本屬性,比如包的名稱,發(fā)布者等。
[Content_Types].xml文件保存了所有文件的Content Type。
AppxSignature.p7x同樣是數(shù)字簽名。
剩下兩個文件是logo.png和resources.pri,這兩個文件是這個包特有的,就不詳細(xì)說明了。logo.png自然是這個包的圖標(biāo)。resources.pri是這個dll的資源文件。
▼資源包
沒什么可說的,和依賴包的文件分工差不多,沒介紹到的都是每個包自己獨有的地方。
▼最重要的應(yīng)用程序包
各種dll、exe、png等。
現(xiàn)在大家應(yīng)該都清楚APPX是個什么東西了,它實際上就是帶數(shù)字簽名的壓縮包,把安裝目錄打包起來而已。
可能有人會疑惑,難道微軟的UWP平臺實現(xiàn)的所謂跨平臺就是這么一個簡單的東西嗎?不就打包了一下嗎?
實際上UWP平臺的通用并不是體現(xiàn)在安裝包上的通用,UWP構(gòu)建了一整套可以在各種Windows平臺上使用的通用而現(xiàn)代的跨語言API,再加上良好的文檔和應(yīng)用商店體系。實現(xiàn)了開發(fā)者的一份代碼幾乎完全不用改動,只用在生成安裝包的時候勾選幾個選項就可以實現(xiàn)的跨平臺。
如下圖,基本只要勾選就能實現(xiàn)的跨平臺。
注1:基于JavaScript開發(fā)的uwp除外,老的Windows 8應(yīng)用除外。
廣告聲明:文內(nèi)含有的對外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。