msi安装文件运行原理(4种安装程序格式MSI)
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甚至可以在Windows 7,Linux等系统运行!
4)MSIX最令人兴奋的功能是微软发布了一个SDK来增强跨平台的兼容性。可以支持iOS,MacOS,Android,Linux甚至是旧版本的Windows。开发人员在MSIX文件中放置特殊指令,以便识别操作系统以及采取的步骤。
5)程序将更干净地卸载:每次卸载软件最让人头疼的是软件卸载不干净,使用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。
有效负载文件是生成应用时创建的应用代码文件和资产。
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 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 为主。
希望本文对您有所帮助。也可收藏 点赞及关注我们
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com