軟件是一系列按照特定順序組織的計(jì)算機(jī)數(shù)據(jù)和指令的集合。一般來(lái)講軟件被劃分為編程語(yǔ)言、系統(tǒng)軟件、應(yīng)用軟件和介于這兩者之間的中間件。硬件是“計(jì)算機(jī)硬件”的簡(jiǎn)稱。與“軟件”相對(duì),電子計(jì)算機(jī)系統(tǒng)中所有實(shí)體部件和設(shè)備的統(tǒng)稱。
什么是APPX格式?很多朋友下載解壓之后出現(xiàn)一個(gè)APPX格式的文件,根本沒(méi)見(jiàn)過(guò)怎么辦?APPX其實(shí)就是ZIP、RAR這類的文件,把后綴名改成ZIP就能正常解壓了。

一個(gè)典型的依賴包APPX
APPX格式分為四種:
第一種,擴(kuò)展名為.appx;
第二種,擴(kuò)展名為.appxbundle;
第三種,擴(kuò)展名為.appxsym;
第四種,擴(kuò)展名為.appxupload。
第一種APPX可能在一些人看來(lái)并不能體現(xiàn)它是“UWP”的安裝包,因?yàn)樗陌惭b包并不是通用的,在ARM、x86、x64設(shè)備上需要不同的安裝包,并不能一個(gè)安裝包走遍天下(基于JavaScript開(kāi)發(fā)的UWP除外,老的Windows 8應(yīng)用除外)。
第二種APPX其實(shí)就是將同一應(yīng)用的第一種APPX打包了起來(lái),將ARM、x86、x64等平臺(tái)需要的APPX用ZIP文件放到了一起,在ARM設(shè)備上安裝就提取里面ARM的第一類APPX來(lái)安裝,x86就提取x86。你沒(méi)看錯(cuò),就是這么粗暴的做法,實(shí)現(xiàn)了“偽”安裝包通用。
第三種和第四種都是開(kāi)發(fā)者需要接觸到的,平常見(jiàn)不到,第三種是UWP符號(hào)文件,第四種是未經(jīng).Net Native處理的上傳文件。開(kāi)發(fā)者向商店上傳應(yīng)用用的就是第四種文件,實(shí)際上就是將第二種和第三種文件通過(guò)ZIP壓縮放到了一起。
現(xiàn)在大家應(yīng)該清楚了,第二、三、四種APPX都是用來(lái)打包第一種APPX的,那么第一種APPX里面是什么呢?
第一種APPX又分三種
1、依賴包;
2、資源包;
3、應(yīng)用程序包。
其中所有的.winmd .dll文件是供其它程序使用的庫(kù)。
CodeIntegrity.cat文件是包的數(shù)字簽名,保證appx文件不被篡改。
AppxBlockMap.xml文件保存了包中所有文件的名稱,校驗(yàn)值和文件大小。
AppxManifest.xml文件是包清單文件,它保存了這個(gè)包的基本屬性,比如包的名稱,發(fā)布者等。
[Content_Types].xml文件保存了所有文件的Content Type。
AppxSignature.p7x同樣是數(shù)字簽名。
剩下兩個(gè)文件是logo.png和resources.pri,這兩個(gè)文件是這個(gè)包特有的,就不詳細(xì)說(shuō)明了。logo.png自然是這個(gè)包的圖標(biāo)。resources.pri是這個(gè)dll的資源文件。
各種dll、exe、png等。
現(xiàn)在大家應(yīng)該都清楚APPX是個(gè)什么東西了,它實(shí)際上就是帶數(shù)字簽名的壓縮包,把安裝目錄打包起來(lái)而已。
可能有人會(huì)疑惑,難道微軟的UWP平臺(tái)實(shí)現(xiàn)的所謂跨平臺(tái)就是這么一個(gè)簡(jiǎn)單的東西嗎?不就打包了一下嗎?
實(shí)際上UWP平臺(tái)的通用并不是體現(xiàn)在安裝包上的通用,UWP構(gòu)建了一整套可以在各種Windows平臺(tái)上使用的通用而現(xiàn)代的跨語(yǔ)言API,再加上良好的文檔和應(yīng)用商店體系。實(shí)現(xiàn)了開(kāi)發(fā)者的一份代碼幾乎完全不用改動(dòng),只用在生成安裝包的時(shí)候勾選幾個(gè)選項(xiàng)就可以實(shí)現(xiàn)的跨平臺(tái)。