自包含安装程序(在Windows上)如何工作?

时间:2017-03-09 11:46:19

标签: windows windows-installer installer

出于好奇,我想了解这些自包含安装程序的行为,并尝试自己编写一个简单的安装程序。

我在Google上进行了一些搜索,并没有真正找到解释它的有用文章。但是AFAIK,安装程序应该有一小部分代码驻留在可执行文件的顶部。它从可执行文件的后面提取数据,并根据库存文件(可能是xml?)将它们解释为文件。其他操作(如写入寄存器条目)也可以在清单文件中指定。

现在我对文件结构的猜测是真的吗?如果是这样,我想我只需要阅读关于PE格式的内容,然后在概念上我就可以轻松实现它。如果我猜错了,我很想知道它是如何工作的。

谢谢你的时间!

2 个答案:

答案 0 :(得分:1)

通常,安装程序包是包含以下内容的自包含压缩可执行文件(SFX),

  • 小型安装程序可执行文件
  • 包含要提取的文件的压缩文件结构
  • 用于定义文件目的地,注册表项,桌面/开始菜单快捷方式,安装模式的一些配置文件(xml,ini,json,属性)
  • 使安装程序正常工作的额外文件(dll,图标/图像资源)。

对于MSI包,它有点复杂。它是在COM结构化存储文件中打包为SQL数据库的专有格式。它还包含安装包内的虚拟文件系统(使用文件流进行文件访问)。

您可以查看一些免费工具并检查许多典型功能,以使安装程序可执行文件如下:

答案 1 :(得分:0)

对于Windows来说,它几乎是

声明:MSI,AppX,ClickOnce

势在必行:任意数量的第三方工具,脚本和本土EXE

MSI通常是您的最佳选择。运行时已经是Windows的一部分,因此当您双击MSI数据库MSIEXEC接管​​时。声明性模型的要点是将需要完成的工作与您的工作方式分开。命令模型基本上是一些简单到复杂的框架来编写程序代码来做实际的安装工作。

要详细询问其中任何一项如何在较低水平上运作,这是一个广泛的问题。对于MSI,它们都在MSDN上的Windows Platform SDK文档中。