微软曾宣布Windows 10将引入一种全新的安装包格式MSIX,它可以被看成现有MSI的升级版,几乎支持所有程序格式。到底是新技术还是旧酒装个新瓶子,就让我们来一睹究竟。
追根溯源,了解MSIX的前世今生
大家知道从Windows 8引入Windows商店开始,在Windows系统中软件就分为两大类,一类是传统的.exe文件系统称之为程序( Program Files),一般装在C:\Program Files下;另一类则称之为应用(Application),大多安装在C:\Program Files\WindowsApps下(图1)。
图1 Windows 10应用安装位置
对于传统的标准EXE程序,默认使用的是MSI封装格式,MSI是Microsoft Installer的简写,是微软格式的安装包,Windows 10应用则使用APPX格式封装。这样开发者为Windows 10系统开发应用是就常常需要为应用两种独立封装格式,为了简化开发者的封装工作,微软引入了全新的安装包格式MSIX(=MSI+APPX),这就是MSIX的来由(图2)。
图2 MSIX格式
组合格式的背后,MSIX封装解析
如上所述MSIX=MSI+APPX,微软推出这种格式的目的是为了简化开发者的封装工作。那么MSIX是怎么实现这个功能的呢?
首先我们来了解一下MSI封装格式,MSI文件是Windows Installer的数据包,从本质上将它实际上是一个数据库,其中包含一个程序所需要的信息和在很多安装情形下安装(和卸载)程序所需的指令和数据。它将单纯的程序文件和功能封装在一起,并且包含有关安装过程信息,比如安装路径,系统运行库文件,安装选项等信息。这样使用标准MSI格式封装的程序,我们在安装的时候可以记录各种详细的信息,卸载的时候则可以根据这些信息将程序完全卸载,即使安装过程中出现错误,我们同样可以借助这些想信息恢复到安全前状态。因此很多大公司开发的软件都使用MSI格式进行封装(图3)。
图3 MSI格式
APPX则是Windows 8之后新增的一种应用格式,其实质一个准备好分配和安装的应用程序包。将安装包上传到Windows商店后,在出售之前,商店会运行安全性和遵从性测试,确保用户从应用商店下载的都是安全性的应用。但是由于目前CPU架构有ARM、x86、x64之分,因此Appx主要有.appx(非通用安装包,在ARM、x86、x64设备上需要不同的安装包)、.appxbundle(同一应用的APPX打包,将不同平台需要的APPX压缩在一起)、.appxsym(UWP符号文件)、.appxupload(开发者向商店上传应用用的文件)四种格式(图4)。
图4 .appxbundle文件
Windows 10应用商店是微软目前全力推广的应用安装方式,为了实现全平台(ARM、x86、x64)兼容,微软在MWC 2015上首次推出Win10通用应用(Windows10 Universal App),它构建了一整套可以在各种Windows平台上使用的通用而现代的跨语言API,再加上良好的文档和应用商店体系。实现了开发者的一份代码几乎完全不用改动,只用在生成安装包的时候勾选几个选项就可以实现应用的跨平台安装(图5)。
图5 应用商店的UWP应用
对于应用,UWP解决跨平台封装难题。不过从上面的介绍可以知道,UWP(APPX封装)和MSI是两种完全不同的封装格式,它们分别对应微软全力推广的应用和目前最为普及的EXE程序。如何让这两者在整合在一起?MSIX应运而生,它汇集了APP应用程序和MSI文件封装格式的功能。全新的MSIX安装器将支持所有的Windows文件格式,包括Win32、WPF、WinForm和UWP。这样开发者只要遵循MSIX封装协议,将开发的应用程序封装为.MSIX格式后发布到Windows 10应用商店,用户下载后就可以根据自己实际需要自行选择安装方式(图6)。
图6 MSIX通用格式
比如很多习惯Windows 7用户喜欢运行EXE文件,这种类型的程序功能更全面,扩展功能更丰富;但是很多平板用户则更喜欢APPX应用,这种应用界面清爽,操作简单。以后我们只要从应用商店下载安装自己喜欢的应用即可,而不是像现在EXE程序要到华军这些网站下载,应用则要到商店下载。
MSIX,将带给我们安全和便利
如上所述,传统EXE文件功能强大,但是大家也知道很多恶意软件,病毒也都是使用这种格式开发的。平时我们电脑的病毒、木马大多是EXE文件带来的,传统程序在带来便利的同时也给我们带来极大的安全隐患。
应用相对EXE程序来说安全性就提高了许多,这是因为一方面应用的开发需要打包证书(这样通过证书就很容追溯到恶意应用的开发者),另一方面应用安装包在上传到商店后需要通过微软的审核,运行安全性和遵从性测试,彻底杜绝恶意软件的入驻。因此从商店下载的MSIX文件可以给用户带来前所唯有的安全性。当然二合一方式的封装也便于用户自行选择安装方式,给开发者同样带来极大的便利。而且微软会将MSIX文件格式进行开源化,期待MSIX文件普及早些到来。