Chromium installer介绍

mini_installer是Chromium的安装和升级系统的一部分。它的有两个主要作用:

  1. 从自身资源中抽取出chrome.packed.7z和setup.exe程序
  2. 调用setup.exe进行实际的安装操作

mini_installer很小

mini_installer之所以叫mini,是因为它真的很小。除去资源的大小,它本身大约只有5kb,而我们创建一个空的控制台的程序也有100多kb。

mini_installer做的这么小的原因是:Chromium的差量升级包实际上也是一个mini_installer。为了使差量包尽可能的小,所以mini_installer本身也要非常小。

mini_installer只是一个壳,本身并没有很复杂的逻辑,它是调用setup.exe做真正的安装和升级逻辑。另外它还没有链接CRT库。没有链接CRT库带来了一个副作用就是不能调用CRT库里面的函数,只能调用Windows api。

那么,mini_intaller.exe能不能跟setup.exe合并呢?如果按照Chromium目前的的升级更新逻辑,目前这样设计是最好的。

其实我们可以单独抽出一个updater.exe程序,这个程序负责跟服务器接收差量数据,然后它根据差量数据进行升级。

mini_installer的逻辑

上图就是mini_installer的大概逻辑,包含了安装和升级逻辑。

删除之前的文件

mini_installer一开始会在DeleteOldChromeTempDirectories函数里面会尝试删除之前遗留在temp目录下面的以chrome_和CR_为前缀的目录。如果是–cleanup模式,那么删除完遗留目录那么mini_installer就退出了。

抽取资源文件

安装模式里,mini_installer会抽取出CHROME.7Z。另外抽取出SETUP.EX_另存为setup.exe。

差量升级模式稍微复杂,mini_installer资源里面包含的都是差量数据。先抽取出SETUP_PATCH_xxx,然后再抽取出SETUP_PATCH_xxx。其中会调用原来的旧版本的setup.exe程序根据差量数据生成新的setup.exe,其命令行如下:

运行setup.exe

抽取资源文件完成之后,mini_installer会调用抽取出来的setup.exe,安装模式传递这样参数:

–install-archive里面的文件就是安装的文件。如果是差量升级模式,传递这样参数:

–install-archive里面的文件是差量数据。setup.exe会根据差量数据生成完整的安装文件。

删除抽取出来的文件

最后DeleteExtractedFiles函数会删除临时目录里抽取出来的文件。

Setup

setup.exe是真正执行Chromium安装、升级、卸载逻辑的程序。

上图大概是setup的逻辑。

发表评论

电子邮件地址不会被公开。 必填项已用*标注