APPX格式到底是什么
简单来说,APPX格式的文件就是ZIP换了个扩展名,把APPX文件的扩展名改成zip就能打开了。
APPX格式分为四种:
第一种,扩展名为.appx;
第二种,扩展名为.appxbundle;
第三种,扩展名为.appxsym;
第四种,扩展名为.appxupload。
第一种APPX可能在一些人看来并不能体现它是“UWP”的安装包,因为它的安装包并不是通用的,在ARM、x86、x64设备上需要不同的安装包,并不能一个安装包走遍天下(基于JavaScript开发的UWP除外,老的Windows 8应用除外)。
第二种APPX其实就是将同一应用的第一种APPX打包了起来,将ARM、x86、x64等平台需要的APPX用ZIP文件放到了一起,在ARM设备上安装就提取里面ARM的第一类APPX来安装,x86就提取x86。你没看错,就是这么粗暴的做法,实现了“伪”安装包通用。
第三种和第四种都是开发者需要接触到的,平常见不到,第三种是UWP符号文件,第四种是未经.Net Native处理的上传文件。开发者向商店上传应用用的就是第四种文件,实际上就是将第二种和第三种文件通过ZIP压缩放到了一起。
现在大家应该清楚了,第二、三、四种APPX都是用来打包第一种APPX的,那么第一种APPX里面是什么呢?
第一种APPX又分三种
1、依赖包;
2、资源包;
3、应用程序包。
▲一个典型的依赖包APPX
其中所有的.winmd .dll文件是供其它程序使用的库。
CodeIntegrity.cat文件是包的数字签名,保证appx文件不被篡改。
AppxBlockMap.xml文件保存了包中所有文件的名称,校验值和文件大小。
AppxManifest.xml文件是包清单文件,它保存了这个包的基本属性,比如包的名称,发布者等。
[Content_Types].xml文件保存了所有文件的Content Type。
AppxSignature.p7x同样是数字签名。
剩下两个文件是logo.png和resources.pri,这两个文件是这个包特有的,就不详细说明了。logo.png自然是这个包的图标。resources.pri是这个dll的资源文件。
▼资源包
没什么可说的,和依赖包的文件分工差不多,没介绍到的都是每个包自己独有的地方。
▼最重要的应用程序包
各种dll、exe、png等。
现在大家应该都清楚APPX是个什么东西了,它实际上就是带数字签名的压缩包,把安装目录打包起来而已。
可能有人会疑惑,难道微软的UWP平台实现的所谓跨平台就是这么一个简单的东西吗?不就打包了一下吗?
实际上UWP平台的通用并不是体现在安装包上的通用,UWP构建了一整套可以在各种Windows平台上使用的通用而现代的跨语言API,再加上良好的文档和应用商店体系。实现了开发者的一份代码几乎完全不用改动,只用在生成安装包的时候勾选几个选项就可以实现的跨平台。
如下图,基本只要勾选就能实现的跨平台。
注1:基于JavaScript开发的uwp除外,老的Windows 8应用除外。
发表评论: