windows 4种安装程序格式MSI,EXE、AppX和MSIX 功能及优缺点详细对比
Windows之前有三种常见的安装程序格式 - MSI,EXE和AppX,都各有优点和缺点
MSI是Microsoft Installer的简写, 它使用微软提供的标准安装卸载界面,本质上 MSI 就是一个数据库,包含该软件的所有必要数据。安装过程不会检测该软件是否已经存在于计算机,或者是否缺少什么必备组件,它会直接覆盖安装路径中的所有文件。这种简单粗暴的方式,非常适合无人值守的情况,驱动程序大多也是用 MSI 格式安装。
特点
1)使用基本的安装图形用户界面(GUI)安装或卸载程序
2)没有额外的或选项。
3)这个安装程序是一组压缩的安装程序文件,包含该软件的所有必要数据。
4)安装过程不会检测软件是否已存在,或者是否缺少任何组件。
5)它可能会覆盖安装路径中的任何文件。这种简单性意味着管理员可以轻松实现全默认安装。
EXE 格式更普及,大家也最熟悉,EXE安装文件本质上就是一个可执行程序,大多数Windows程序都是EXE格式。因为是程序,所以能实现更多功能,比如检测已安装项,允许自定义安装路径,安装包语言,安装密码,打开网址,版权协议显示,检测安装缺失的必备运行库,以及更漂亮酷炫的安装界面等等(Tmtony)。因为EXE 格式功能更丰富,用户和开发者都喜欢用,反而比专门的安装格式 MSI 更常见。大多数软件开发者都喜欢直接使用Exe安装程序。我之前做的不少共享软件均使用Setup Factory 或InstallShield 生成这种安装文件格式。
特点
1)安装程序可以包括语言选项,附件,检测以前的安装(更新)等。
2)EXE安装程序允许自定义安装路径并选择要安装的组件。
3)开发人员可以将Logo Banner添加到界面中,并包含软件协议服务条款,并支持多语言。但是相对地exe安装程序并不能全自动安装。
AppX 是 Windows 8 后推出的新安装格式,很多网友可能没见过这种使用这种格式的程序,它就是 UWP 应用。
它继承了 MSI 的优点,就像手机软件的安装过程一样,几乎没有给用户任何选项,它允许直接覆盖升级,完全干净的卸载,Appx 程序运行在沙盒中,不能访问其他应用内存、文件。这个安装格式之所以没有火起来,估计主要是对开发者太不友好,限制了软件权限,封包AppX 格式还必须重写。并且 Windows 8 之前的版本都不能使用这个格式,在还有很多电脑使用Win7 WinXp的情况下,很多程序员不太愿意使用它来分发程序(小辣椒高效office)。
1)它结合MSI安装程序的一些优点。它们是简单,直接的安装程序,为最终用户提供的选择很少。
2)它们允许从较旧版本的软件到较新版本的更容易的升级路径,并允许更简洁地卸载。
3)AppX安装程序还依赖于容器技术,因此它们与操作系统的其余部分隔离以确保安全性。
遗憾的是MSX 或EXE安装程序编写的程序必须在AppX软件包的帮助下重写 或转换,可能需要借助工具。AppX软件包只能用于Windows 10,不适用旧版本。
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文件并想知道它是否安全,那么您应该问的第一个问题是您获得安装程序的位置。与任何其他程序安装程序一样,如果您不信任源,就不要打开它。在下载文件之前,确保文件是安全的。
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的情况。
再单击安装即可。
在.msixbundle安装包目录下按住shift+右键空白处,点击“在此处打开powershell 窗口(s)”
在命令行片 然后输入 add-appxpackage .你的文件名 并回车。即可安装安装包。
如 add-appxpackage ./你的软件名.msixbundle
如果文件的文件名过长,可直接按Tab键补全文件名,不用手动输入了。
摘自:微软官网
MSIX 是一种 Windows 应用包格式,可以为所有 Windows 应用提供现代打包体验。 MSIX 包格式保留了现有应用包和/或安装文件的功能,此外,它还为 Win32、WPF 和 Windows 窗体应用启用了全新的现代打包和部署功能。MSIX 是一种 Windows 应用包格式,可以为所有 Windows 应用提供现代打包体验。 MSIX 包格式保留了现有应用包和/或安装文件的功能,此外,它还为 Win32、WPF 和 Windows 窗体应用启用了全新的现代打包和部署功能。
MSIX 可使企业掌握最新信息,并确保其应用程序始终保持最新状态。 它使 IT 专业人员和开发人员能够交付以用户为中心的解决方案,同时通过减少重新打包的需求,来降低应用程序的所有权成本。
访问 MSIX 技术社区页,获取有关 MSIX 的各种讨论内容和最新信息。 有关 MSIX 的其他学习资源,请参阅此文。
有效负载文件是生成应用时创建的应用代码文件和资产。
包块映射文件是一个 XML 文档,其中包含应用的文件列表,以及存储在包中的每个数据块的索引和加密哈希。 为包签名时,将使用数字签名来验证和保护块映射文件本身。 使用块映射文件能够以增量方式下载和验证 MSIX 包,在安装应用文件后,还可以使用块映射文件来支持对应用文件进行差异更新。
包清单是一个 XML 文档,其中包含系统在部署、显示和更新 MSIX 应用时所需的信息。 此信息包括包标识、包依赖项、所需功能、可视元素和扩展点。
为包签名时,将生成 AppxSignature.p7x。 在安装之前,需要为所有 MSIX 包签名。 借助 AppxBlockmap.xml,平台可以安装包,并可对平台进行验证。
使用 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 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 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 应用。
下表显示了不同版本的 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 行为。
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及更高版本。
MSIX SDK 是一个开放源代码项目,允许开发人员在所有平台上普遍使用 MSIX 包格式。 任何允许第三方生成插件或扩展的跨平台客户端应用都可以使用 SDK。 客户端应用开发人员可以使用Windows 10平台上提供的应用扩展模型,并在非Windows 10平台上(如 macOS、iOS、Android 和 Linux)上使用 MSIX SDK。
MSIX 虽然很多优点,并且在Windows各版本上已经可以使用了,但真正全面普及估计还需要很漫长时间,因为要考虑程序员的习惯 意愿以及迁移的成本,另msix还需要签名和微软审核,短期内安装包还是以 EXE 为主。
希望本文对您有所帮助。也可收藏 点赞及关注我们