XAP文件是什么东西?一篇文章带你搞懂XAP文件格式!

话说回来,我最近接了个活,要处理一批好多年前的旧数据。甲方那边不知道从哪里挖出来一个文件夹,里面全是扩展名是.XAP的文件。我一看这名字就懵了,啥玩意儿?听都没听过,肯定又是微软搞的什么幺蛾子。

问题的起点:这壳子到底是个

当时我就在想,这批数据是老旧的Windows Phone应用留下的残骸,XAP一看就是打包部署用的文件。但名字这么怪,难道它用了什么独有的加密或者打包技术?我上网随便搜了一下,发现资料虽然有,但都说得云里雾里,全是专业术语,根本没有一个人好好地讲清楚,这玩意儿普通人该怎么对付它。

我当时的想法很简单,管你是什么鬼格式,无非就是个压缩包或者一个带壳的程序。我先是双击了一下,果然,系统告诉我:找不到能打开它的程序。废话,这要能直接开,我还用得着研究?

实践出真知:最简单的招数往往最有效

我琢磨着,按照我这么多年跟各种奇怪文件打交道的经验,凡是这种打包文件,十有八九都是换了皮的ZIP或者RAR。这叫“容器文件”,很多大厂喜欢把标准格式套个自己的名字,显得自己技术牛逼。

我立马把其中一个最大的文件复制了一份,然后直接用鼠标,把它的后缀名从.XAP改成了.ZIP。改完之后,我心里还挺没底的,万一崩了?万一是真的特殊格式,这不白忙活?

结果?我点开这个“新ZIP”文件一看,好家伙!瞬间弹出了熟悉的压缩软件界面,文件列表清清楚楚地显示出来了。我当时就想骂人,微软起个这么高大上的名字,搞半天就是把文件套了个壳,本质上就是个普普通通的ZIP压缩包!

彻底解剖:XAP文件里到底藏着什么?

既然壳子扒掉了,那剩下的就是看里头到底塞了什么东西了。我赶紧把这个重命名后的文件给解压了,解压出来后,里头的东西瞬间就清晰了,基本上就是应用运行需要的所有东西,结构很规矩:

  • 这个是应用程序的清单文件,一看就是配置文件,告诉系统这APP叫啥、权限是啥、版本号是多少。
  • 一大堆DLL文件:这些是程序的主体,是代码编译后的库文件。它们告诉系统程序具体该怎么跑。
  • Content文件夹:这是我的目标。这里面塞满了应用运行时需要的所有资源,包括图片、音效、以及各种界面布局文件。
  • 有时候资源不放在Content里,而是直接打包进了这个特殊的资源库里。

我当时最想找的就是里头旧版的启动图标和几个遗失的PNG图片,因为甲方说有些图标他们找不到了。我直接钻进了那个Content文件夹,果然,我要的图全都在里面躺着,PNG格式和JPG格式,一清二楚,直接复制出来就能用,根本不需要任何特殊的工具去解析。

经验别被名字吓住了

通过这回折腾,我彻底明白了XAP文件格式的真面目。它压根就不是什么高深的技术,它就是以前微软在搞Windows Phone和Silverlight应用部署用的一个容器,本质上就是把所有代码、资源和配置文件用ZIP压缩标准打包到了一起,然后改了个后缀名,让它看起来很专业很高深。

这事儿也给我提了个醒:下次遇到这种奇奇怪怪的、听起来特别牛掰的文件格式,先别急着去网上查什么复杂的API文档,直接用最简单粗暴的方式试试,把后缀名改成.ZIP或者.RAR。很多时候,这些所谓的“新技术”或者“新格式”,底下藏着的都是我们玩烂了的老套路。我们做实践的,就得有这种打破砂锅问到底,并且敢于动手的劲头。