技術(shù)宅
大家知道從Windows 8引入Windows商店開始,在Windows系統(tǒng)中軟件就分為兩大類,一類是傳統(tǒng)的.exe文件系統(tǒng),稱之為“程序”(Program Files),一般裝在C:\Program Files下;另一類則稱之為“應(yīng)用”(Application),大多安裝在C:\Program Files\ WindowsApps下(圖1)。
對于傳統(tǒng)的標準EXE程序,默認使用的是MSI封裝格式,MSI是Microsoft Installer的簡寫,是微軟格式的安裝包,Windows 10應(yīng)用則使用APPX格式封裝。這樣開發(fā)者為Windows 10系統(tǒng)開發(fā)應(yīng)用時就常常需要使用兩種獨立封裝格式。為了簡化開發(fā)者的封裝工作,微軟引入了全新的安裝包格式MSIX(=MSI+APPX),這就是MSIX的來由(圖2)。
如上所述,MSIX=MSI+APPX,微軟推出這種格式的目的是為了簡化開發(fā)者的封裝工作。那么MSIX是怎么實現(xiàn)這個功能的呢?
首先我們來了解一下MSI封裝格式。MSI文件是Windows Installer的數(shù)據(jù)包,從本質(zhì)上講它實際上是一個數(shù)據(jù)庫,其中包含一個程序所需要的信息和在很多安裝情形下安裝(和卸載)程序所需的指令和數(shù)據(jù)。它將單純的程序文件和功能封裝在一起,并且包含有關(guān)的安裝過程信息,比如安裝路徑、系統(tǒng)運行庫文件、安裝選項等信息。這樣使用標準MSI格式封裝的程序,我們在安裝的時候可以記錄各種詳細的信息,卸載的時候則可以根據(jù)這些信息將程序完全卸載,即使安裝過程中出現(xiàn)錯誤,我們同樣可以借助這些信息恢復到安全前的狀態(tài)。因此很多大公司開發(fā)的軟件都使用MSI格式進行封裝(圖3)。
APPX則是Windows 8之后新增的一種應(yīng)用格式,其實質(zhì)是一個準備好分配和安裝的應(yīng)用程序包。將安裝包上傳到Windows商店后,在出售之前,商店會運行安全性和遵從性測試,確保用戶從應(yīng)用商店下載的都是安全性的應(yīng)用。但是由于目前CPU架構(gòu)有ARM、x86、x64之分,因此APPX主要有.appx(非通用安裝包,在ARM、x86、x64設(shè)備上需要不同的安裝包)、.appxbundle(同一應(yīng)用的APPX打包,將不同平臺需要的APPX壓縮在一起)、.appxsym(UWP符號文件)、.appxupload(開發(fā)者向商店上傳應(yīng)用用的文件)四種格式(圖4)。
Windows 10應(yīng)用商店是微軟目前全力推廣的應(yīng)用安裝方式,為了實現(xiàn)全平臺(ARM、x86、x64)兼容,微軟在MWC 2015上首次推出Windows 10通用應(yīng)用(Windows 10 Universal APP)。它構(gòu)建了一整套可以在各種Windows平臺上使用的通用而現(xiàn)代的跨語言API,再加上良好的文檔和應(yīng)用商店體系,實現(xiàn)了開發(fā)者的一份代碼幾乎完全不用改動,只用在生成安裝包的時候勾選幾個選項,就可以實現(xiàn)應(yīng)用的跨平臺安裝(圖5)。
對于應(yīng)用,UWP解決了跨平臺封裝難題。不過從上面的介紹可以知道,UWP(APPX封裝)和MSI是兩種完全不同的封裝格式,它們分別對應(yīng)微軟全力推廣的應(yīng)用和目前最為普及的EXE程序。如何讓這兩者整合在一起?MSIX應(yīng)運而生,它匯集了APP應(yīng)用程序和MSI文件封裝格式的功能。全新的MSIX安裝器將支持所有的Windows文件格式,包括Win32、WPF、WinForm和UWP。這樣開發(fā)者只要遵循MSIX封裝協(xié)議,將開發(fā)的應(yīng)用程序封裝為.MSIX格式后發(fā)布到Windows 10應(yīng)用商店,用戶下載后就可以根據(jù)自己的實際需要自行選擇安裝方式(圖6)。
比如很多習慣Windows 7的用戶喜歡運行EXE文件,這種類型的程序功能更全面,擴展功能更豐富;但是很多平板用戶則更喜歡APPX應(yīng)用,這種應(yīng)用界面清爽,操作簡單。以后我們只要從應(yīng)用商店下載安裝自己喜歡的應(yīng)用即可,而不是像現(xiàn)在EXE程序要到華軍這些網(wǎng)站下載,應(yīng)用則要到商店下載。
如上所述,傳統(tǒng)EXE文件的功能強大,但是大家也知道很多惡意軟件、病毒也都是使用這種格式開發(fā)的。平時我們電腦的病毒、木馬大多是EXE文件帶來的,傳統(tǒng)程序在帶來便利的同時也給我們帶來極大的安全隱患。
應(yīng)用相對EXE程序來說安全性就提高了許多,這是因為一方面應(yīng)用的開發(fā)需要打包證書(這樣通過證書就很容易追溯到惡意應(yīng)用的開發(fā)者);另一方面應(yīng)用安裝包在上傳到商店后需要通過微軟的審核,運行安全性和遵從性測試,徹底杜絕惡意軟件的入駐。因此從商店下載的MSIX文件可以給用戶帶來前所未有的安全性。當然二合一方式的封裝也便于用戶自行選擇安裝方式,同樣給開發(fā)者帶來極大的便利,而且微軟會將MSIX文件格式進行開源化。期待MSIX文件的普及早些到來。