windows 4種安裝程序格式MSI,EXE、AppX和MSIX 功能及優缺點詳細對比
一、Windows四種安裝程序格式:MSI,EXE、AppX和最新的MSIX優缺點對比
Windows之前有三種常見的安裝程序格式 - MSI,EXE和AppX,都各有優點和缺點
1、MSI是Windows最基本的安裝格式:比較簡單
MSI是Microsoft Installer的簡寫, 它使用微軟提供的標準安裝卸載界面,本質上 MSI 就是一個數據庫,包含該軟件的所有必要數據。安裝過程不會檢測該軟件是否已經存在于計算機,或者是否缺少什么必備組件,它會直接覆蓋安裝路徑中的所有文件。這種簡單粗暴的方式,非常適合無人值守的情況,驅動程序大多也是用 MSI 格式安裝。
特點
1)使用基本的安裝圖形用戶界面(GUI)安裝或卸載程序
2)沒有額外的或選項。
3)這個安裝程序是一組壓縮的安裝程序文件,包含該軟件的所有必要數據。
4)安裝過程不會檢測軟件是否已存在,或者是否缺少任何組件。
5)它可能會覆蓋安裝路徑中的任何文件。這種簡單性意味著管理員可以輕松實現全默認安裝。
2、EXE安裝程序更普及
EXE 格式更普及,大家也最熟悉,EXE安裝文件本質上就是一個可執行程序,大多數Windows程序都是EXE格式。因為是程序,所以能實現更多功能,比如檢測已安裝項,允許自定義安裝路徑,安裝包語言,安裝密碼,打開網址,版權協議顯示,檢測安裝缺失的必備運行庫,以及更漂亮酷炫的安裝界面等等(Tmtony)。因為EXE 格式功能更豐富,用戶和開發者都喜歡用,反而比專門的安裝格式 MSI 更常見。大多數軟件開發者都喜歡直接使用Exe安裝程序。我之前做的不少共享軟件均使用Setup Factory 或InstallShield 生成這種安裝文件格式。
特點
1)安裝程序可以包括語言選項,附件,檢測以前的安裝(更新)等。
2)EXE安裝程序允許自定義安裝路徑并選擇要安裝的組件。
3)開發人員可以將Logo Banner添加到界面中,并包含軟件協議服務條款,并支持多語言。但是相對地exe安裝程序并不能全自動安裝。
3、AppX安裝程序用于通用Windows應用程序
AppX 是 Windows 8 后推出的新安裝格式,很多網友可能沒見過這種使用這種格式的程序,它就是 UWP 應用。
它繼承了 MSI 的優點,就像手機軟件的安裝過程一樣,幾乎沒有給用戶任何選項,它允許直接覆蓋升級,完全干凈的卸載,Appx 程序運行在沙盒中,不能訪問其他應用內存、文件。這個安裝格式之所以沒有火起來,估計主要是對開發者太不友好,限制了軟件權限,封包AppX 格式還必須重寫。并且 Windows 8 之前的版本都不能使用這個格式,在還有很多電腦使用Win7 WinXp的情況下,很多程序員不太愿意使用它來分發程序(小辣椒高效office)。
1)它結合MSI安裝程序的一些優點。它們是簡單,直接的安裝程序,為最終用戶提供的選擇很少。
2)它們允許從較舊版本的軟件到較新版本的更容易的升級路徑,并允許更簡潔地卸載。
3)AppX安裝程序還依賴于容器技術,因此它們與操作系統的其余部分隔離以確保安全性。
遺憾的是MSX 或EXE安裝程序編寫的程序必須在AppX軟件包的幫助下重寫 或轉換,可能需要借助工具。AppX軟件包只能用于Windows 10,不適用舊版本。
4、MSIX結合了MSI和AppX的優點及最佳性能
MISX文件格式集成了Windows之前的文件格式安裝技術,并繼承了UWP的特性,更加安全和可靠,網絡帶寬優化,磁盤空間優化,程序自定義,并支持全部的Windows應用程序,而且MSIX使程序可更干凈地卸載。MSIX將來可能會取代EXE、 WIN32、 WPF、WinForm和UWP
先說一下為什么會誕生MSIX:
1、EXE 程序功能強大,但容易被惡意程序和流氓軟件甚至病毒、木馬利用,它帶來便利的同時也給我們帶來極大的安全隱患。
2、MSI 過于簡單,用戶和開發者都不喜歡用。
3、APPX 對比EXE 安全性有了質的提升,但限制條件較多又傷害了開發者的利益,而無法廣泛傳播。
所以MSIX應運而生,MSI + AppX = MSIX , 結合了 MSI 和APPX 的優點而誕生了。
從用戶的角度來看,MSIX 的安裝過程類似 MSI 文件,但在其背后的工作原理又類似 AppX 文件。
MSIX安裝器將支持所有的 Windows 文件格式,包括 Win32、WPF、WinForm 和 UWP。這樣開發者只要遵循 MSIX 封裝協議,將開發的應用程序封裝為 .MSIX 格式后發布到Windows 10 應用商店,或其他網站,用戶下載后就可以根據自己實際需要自行選擇安裝方式。另外國內很多流氓安裝軟件經常卸載軟件后還留下文件夾和注冊表。使用 MSIX 安裝的程序都被放在類似「沙盒」的環境中,所有文件、注冊表都按規則存放(例如 AppData 文件夾),卸載時所有數據都會被刪除不會有殘留。
能夠使用的 MSIX 文件都必須要有受信任的根簽名,并且上傳到應用商店的軟件都需要經過微軟的審核。所以MSIX 格式可以給用戶帶來更大的安全感,但這樣也可能需要簽名或審核,可能需要給微軟支付費用或審核,所以對于個人開發者或資金不足的軟件工作室,有可能還是會選擇免費的 EXE 格式,而不是馬上就遷移到MSIX格式。
另外 MSIX 格式甚至可以在 Windows7,linux 等平臺上直接運行!
特點
1)MSIX文件具有AppX的優點,同時類似于MSI文件。它是一個直接的安裝程序,管理員甚至可以編寫自動“無人值守”安裝腳本。此外,它依賴于容器技術,可以順利卸載和升級。
2)從用戶的角度來看,MSIX安裝類似于MSI文件,但實際上它更類似于AppX文件。此外,可以在Microsoft Store外部進行MSIX分發。通過這個流程,可以更輕松地將舊程序引入并重新打包為MSIX。
3)MSIX最令人興奮的功能是微軟發布了一個SDK來增強跨平臺的兼容性。可以支持IOS,macOS,Android,Linux甚至是舊版本的Windows(如win7) 。開發人員在MSIX文件中放置特殊指令,以便識別操作系統以及采取的步驟。
這里:msix-packaging/tdf-guidance.md at master · microsoft/msix-packaging
早于Win10指定的版本 可試試這里的msix-core
https://learn.microsoft.com/zh-cn/windows/msix/msix-core/msixcore
MSIX SDK 為開發人員提供了一種將包內容分發到客戶端設備的通用方式,而不管客戶端設備上的操作系統平臺如何。這使開發人員能夠一次打包他們的應用程序內容,而不必為每個平臺打包。里面有支持win7 和其它平臺,但這個沒有嘗試過,建議還是在win10或更高版本。
4)程序將更干凈地卸載:每次卸載軟件最讓人頭疼的是軟件卸載不干凈,使用MSI和EXE安裝程序時,該程序可以更改注冊表并在整個系統中創建文件和文件夾(小辣椒高效Office)。卸載程序時,這些文件和注冊表項經常被忽略,導致卸載不干凈,久而久之大量的垃圾會拖慢電腦速度。使用MSIX,程序安裝在一個容器中,所有必需的文件都保留在該容器中,或遵循關于這些文件可能存在的位置的精確,可預測的規則(例如生活在AppData文件夾中)。卸載時,所有數據都與程序一致 - 不殘留任何文件。這意味著您的系統將更加清潔。
如果您正在查看MSIX文件并想知道它是否安全,那么您應該問的第一個問題是您獲得安裝程序的位置。與任何其他程序安裝程序一樣,如果您不信任源,就不要打開它。在下載文件之前,確保文件是安全的。
二、后綴為 .msixbundle的msix文件怎么安裝?
Windows10/11 后綴是 .msixbundle的文件怎么安裝?
大家在下載軟件或者程序的時候,有遇到文件后綴是msixbundle的嗎
如壓縮軟件NanaZip的安裝包文件是
40174MouriNaruto.NanaZip_2.0.396.0_gnj4mf6z9tkrc.msixbundle
擴展名為 .msix(或msixbundle)的文件是Windows應用程序安裝程序。微軟推出的MSIX作為EXE,MSI甚至AppX軟件包的替代品。
MSIX是新的Microsoft Installer ,不僅將其應用于APPX中的UWP,而且還應用于Win32,WPF和其他Windows安裝程序格式。MSIX需要Windows 10 1809及更高版本,所以低版本的系統需要先升級
在Windows 10中打開一個.MSIX 文件并開始安裝打包的應用程序,只需雙擊該文件即可。但如果低版本win10會遇到安裝不了.MSIX的情況。
三、解決辦法
1、首先在Microsoft Store中搜索 應用安裝程序,并安裝它
2.安裝后,再在msixbundle文件 右鍵菜單 選擇“安裝”
再單擊安裝即可。
3、很快就安裝好了
四、使用命令行方式安裝
在.msixbundle安裝包目錄下按住shift+右鍵空白處,點擊“在此處打開powershell 窗口(s)”
在命令行片 然后輸入 add-appxpackage .你的文件名 并回車。即可安裝安裝包。
如 add-appxpackage ./你的軟件名.msixbundle
如果文件的文件名過長,可直接按Tab鍵補全文件名,不用手動輸入了。
五、相關知識:什么是 MSIX
摘自:微軟官網
MSIX 是一種 Windows 應用包格式,可以為所有 Windows 應用提供現代打包體驗。 MSIX 包格式保留了現有應用包和/或安裝文件的功能,此外,它還為 Win32、WPF 和 Windows 窗體應用啟用了全新的現代打包和部署功能。MSIX 是一種 Windows 應用包格式,可以為所有 Windows 應用提供現代打包體驗。 MSIX 包格式保留了現有應用包和/或安裝文件的功能,此外,它還為 Win32、WPF 和 Windows 窗體應用啟用了全新的現代打包和部署功能。
MSIX 可使企業掌握最新信息,并確保其應用程序始終保持最新狀態。 它使 IT 專業人員和開發人員能夠交付以用戶為中心的解決方案,同時通過減少重新打包的需求,來降低應用程序的所有權成本。
關鍵功能
- 可靠性。 MSIX 提供可靠的安裝,在數百萬次安裝中,其成功率達到了引以為豪的 99.96%,并提供有保證的卸載體驗。
- 網絡帶寬優化。 MSIX 只會下載 64k 大小的數據塊,可以減輕對網絡帶寬的影響。 此項優勢是利用 MSIX 應用包中的 AppxBlockMap.xml 文件來實現的(參閱下面的詳細信息)。 MSIX 旨在用于新式系統和云。
- 磁盤空間優化。 使用 MSIX 時,不會在應用之間復制文件,Windows 將跨應用管理共享的文件。 應用仍然彼此獨立,因此更新不會影響共享該文件的其他應用。 即使平臺跨應用管理共享的文件,也能保證干凈卸載。
亮點
- 將現有的 Windows 應用打包。 使用 MSIX 打包工具可為任何舊式或新式 Windows 應用創建 MSIX 包。 MSIX 打包工具簡化了打包體驗,提供交互式用戶界面或命令行來轉換和打包 Windows 應用。
- 安裝 MSIX 應用包。 使用應用安裝程序可安裝或更新在本地或任何內容分發網絡上提供的任何 MSIX 應用包。
- 將運行時修補程序應用于已打包的應用。包支持框架是一個開放源代碼工具包,有助于在無權訪問源代碼時將修補程序應用于現有桌面應用,以便其在 MSIX 容器中運行。
- 隨時隨地使用 MSIX。 由于使用了開源 MSIX SDK,MSIX 包的用途更廣泛,并且不區分平臺。 該 SDK 提供在任何平臺(包括 Windows 10 平臺和非 Windows 10 平臺)上驗證和解包應用包所需的全部 API。
訪問 MSIX 技術社區頁,獲取有關 MSIX 的各種討論內容和最新信息。 有關 MSIX 的其他學習資源,請參閱此文。
MSIX 包的內部
應用有效負載
有效負載文件是生成應用時創建的應用代碼文件和資產。
AppxBlockMap.xml
包塊映射文件是一個 XML 文檔,其中包含應用的文件列表,以及存儲在包中的每個數據塊的索引和加密哈希。 為包簽名時,將使用數字簽名來驗證和保護塊映射文件本身。 使用塊映射文件能夠以增量方式下載和驗證 MSIX 包,在安裝應用文件后,還可以使用塊映射文件來支持對應用文件進行差異更新。
AppxManifest.xml
包清單是一個 XML 文檔,其中包含系統在部署、顯示和更新 MSIX 應用時所需的信息。 此信息包括包標識、包依賴項、所需功能、可視元素和擴展點。
AppxSignature.p7x
為包簽名時,將生成 AppxSignature.p7x。 在安裝之前,需要為所有 MSIX 包簽名。 借助 AppxBlockmap.xml,平臺可以安裝包,并可對平臺進行驗證。
應用容器的優勢
使用 MSIX 打包的應用在一個輕型應用容器中運行。 MSIX 應用進程及其子進程在該容器內部運行,并使用文件系統和注冊表虛擬化進行隔離。 所有 MSIX 應用都可以讀取全局注冊表。 MSIX 應用寫入到其自身的虛擬注冊表和應用程序數據文件夾,卸載或重置應用時會刪除此數據。 其他應用無法訪問 MSIX 應用的虛擬注冊表或虛擬文件系統。
六、自己制作Msix文件
可以下載MSIX Packaging Tool 制作試試,打枹后的文件會比較小
為了促進開發者使用新的格式,微軟提供了非常簡便的 MSIX 轉換工具,開發人員可以直接將現有的 EXE、MSI 或 AppX 文件轉換為 MSIX 格式。
工具下載地址:https://docs.microsoft.com/zh-cn/windows/msix/
七、MSIX支持的平臺及在不同平臺的區別下表顯示了不同版本的 Windows 支持哪些 MSIX 功能和方案。
Windows 桌面
功能 | Windows 10 1809 (LTSC 2019) | Windows 10 1903 | Windows 10 1909 | Windows 10 2004 | Windows 10 20H2 (LTSC 2021) | Windows 10 21H1 | Windows 10 21H2 | Windows 11 21H2 |
---|---|---|---|---|---|---|---|---|
允許提升 | ?? | ?? | ?? | ?? | ?? | ?? | ?? | ?? |
應用安裝程序文件支持 | ?? | ?? | ?? | ?? | ?? | ?? | ?? | ?? |
延遲注冊標志 | ? | ? | ? | ?? | ?? | ?? | ?? | ?? |
強制從任何版本降級更新 | ?? | ?? | ?? | ?? | ?? | ?? | ?? | ?? |
強制預配 | ? | ? | ? | ?? | ?? | ?? | ?? | ?? |
打包桌面應用的標識 | ?? | ?? | ?? | ?? | ?? | ?? | ?? | ?? |
修改包 | ?? | ?? | ?? | ?? | ?? | ?? | ?? | ?? |
本機 MSIX 安裝和卸載 | ?? | ?? | ?? | ?? | ?? | ?? | ?? | ?? |
包支持框架 (PSF) | ?? | ?? | ?? | ?? | ?? | ?? | ?? | ?? |
Windows 服務 | ? | ? | ? | ?? | ?? | ?? | ?? | ?? |
非應用商店包的包完整性強制實施 | ? | ? | ? | ?? | ?? | ?? | ?? | ?? |
對 Windows 應用服務的支持 | ? | ? | ? | ?? | ?? | ?? | ?? | ?? |
共享包容器 | ? | ? | ? | ? | ? | ? | ? | ?? |
具有外部位置的包 | ? | ? | ? | ?? | ?? | ?? | ?? | ?? |
托管的應用 | ? | ? | ? | ?? | ?? | ?? | ?? | ?? |
靈活虛擬化 | ? | ? | ? | ? | ? | ?? | ?? | ?? |
“開始”菜單組 | ? | ? | ? | ? | ? | ?? | ?? | ?? |
舊上下文菜單支持 | ? | ? | ? | ? | ? | ? | ? | ?? |
可變包目錄 | ? | ? | ? | ? | ? | ? | ? | ?? |
MSIX 持久標識 | ? | ? | ? | ? | ? | ? | ? | ?? |
Windows Server 支持
功能 | Windows Server 2019 | Windows Server 2022 |
---|---|---|
允許提升 | ?? | ?? |
應用安裝程序文件支持 | ?? | ?? |
延遲注冊標志 | ? | ?? |
強制從任何版本降級更新 | ?? | ?? |
強制預配 | ? | ? |
打包桌面應用的標識 | ?? | ?? |
修改包 | ?? | ?? |
本機 MSIX 安裝和卸載 | ?? | ?? |
包支持框架 (PSF) | ?? | ?? |
Windows 服務 | ? | ?? |
非應用商店包的包完整性強制實施 | ? | ?? |
對 Windows 應用服務的支持 | ? | ?? |
共享包容器 | ? | ? |
具有外部位置的包 | ? | ?? |
托管的應用 | ? | ?? |
包格式支持
下表顯示了不同版本的Windows 10支持哪些包格式。
包格式 | Windows 10 (1809) | Windows 10 (1903) | Windows 10 (1909) | Windows 10 (2004) | Windows 10 (20H2) | Windows 10 (21H1) | Windows 10 (21H2) | Windows 11 (21H2) |
---|---|---|---|---|---|---|---|---|
.msix | ?? | ?? | ?? | ?? | ?? | ?? | ?? | ?? |
.msixbundle | ?? | ?? | ?? | ?? | ?? | ?? | ?? | ?? |
.appx | ?? | ?? | ?? | ?? | ?? | ?? | ?? | ?? |
.appxbundle | ?? | ?? | ?? | ?? | ?? | ?? | ?? | ?? |
重要
在 2004 Windows 10之前,必須啟用 Windows 應用的旁加載,以允許在企業、教育和 LTSC SKU 上安裝非應用商店 Windows 應用。 默認情況下,Windows 10 家庭版和專業 SKU 已啟用旁加載 Windows 應用。
Microsoft Store
下表顯示了不同版本的 Windows 10 支持哪些 Microsoft Store 功能。
功能 | Windows 10 (1809) | Windows 10 (1903) | Windows 10 (1909) | Windows 10 (2004) | Windows 10 (20H2) | Windows 10 (21H1) | Windows 10 (21H2) | Windows 11 (21H2) |
---|---|---|---|---|---|---|---|---|
發布 | ?? | ?? | ?? | ?? | ?? | ?? | ?? | ?? |
更新通知 | ?? | ?? | ?? | ?? | ?? | ?? | ?? | ?? |
流式安裝 | ?? | ?? | ?? | ?? | ?? | ?? | ?? | ?? |
Delta 匯報 | ?? | ?? | ?? | ?? | ?? | ?? | ?? | ?? |
備注
.appx 或 .appxbundle 適用于所有上面列出的Windows 10版本。 該表僅反映 .msix 或 .msixbundle 行為。
Microsoft Store 提交
MSIX 包支持的最低 OS 版本已在包清單文件中的 TargetDeviceFamily
元素內以 MinVersion
形式列出。 例如,MSIX 包可以列出 MinVersion="10.0.17701.0"
為最低支持版本,這意味著 MSIX 包可以在此版本和更高版本的操作系統上運行。
Windows 10 版本 1709、1803 和 1809 支持主流的企業部署方案。 這包括通過 Microsoft Endpoint Configuration Manager、Microsoft Intune、PowerShell 或雙擊安裝進行安裝。
目前,通過 Microsoft Store 和 適用于企業的 Microsoft Store 安裝 MSIX 需要Windows 10 版本 1809及更高版本。
非 Windows 平臺
MSIX SDK 是一個開放源代碼項目,允許開發人員在所有平臺上普遍使用 MSIX 包格式。 任何允許第三方生成插件或擴展的跨平臺客戶端應用都可以使用 SDK。 客戶端應用開發人員可以使用Windows 10平臺上提供的應用擴展模型,并在非Windows 10平臺上(如 macOS、iOS、Android 和 Linux)上使用 MSIX SDK。
八、小結
MSIX 雖然很多優點,并且在Windows各版本上已經可以使用了,但真正全面普及估計還需要很漫長時間,因為要考慮程序員的習慣 意愿以及遷移的成本,另msix還需要簽名和微軟審核,短期內安裝包還是以 EXE 為主。
希望本文對您有所幫助。也可收藏 點贊及關注我們