chromium 22 关于chromium的setup和mini_installer

杜河
2023-12-01

01 setup和mini_installer

src\chrome\installer\mini_installer
src\chrome\installer\setup

mini_installer以需要安装的文件为资源,打了一个包。
具体要打包的资源在 src\chrome\installer\mini_installer\chrome.release 里描述。
setup实现了具体的安装逻辑。
可以参考gclxry的一篇博客:Chromium installer介绍

这两个工程是需要单独生成的:

ninja -C out\DebugX64 setup mini_installer

02 关于生成mini_installer/setup的vs工程文件

在gn gen生成项目工程文件时,如果加了过滤项,可能无法生成mini_installer/setup的vs工程文件。比如:
gn gen out/DebugX64 --ide=vs2017 --winsdk=10.0.17134.12 --filters=//chrome
这样生成的工程中,没有生成mini_installer/setup的vs工程文件。
取消掉过滤项--filters=//chrome即可生成。

03 关于调试mini_installer/setup

1 把mini_installer工程设为启动项目
2 mini_installer.cc的ProcessExitResult RunProcessAndWait中会在新进程中调用setup.exe

::CreateProcess(exe_path, cmdline, NULL, NULL, FALSE, CREATE_NO_WINDOW,
                       NULL, NULL, &si, &pi)

A:跨进程调试的断点设置:
setup_main.ccwWinMain函数处加入一个::MessageBoxA(NULL, “wait setup”, “test1”, MB_OK);
或者 Sleep(5000);这类的,来附加进程。
B:setup.exe的符号文件:
这里的新进程的setup.exe的路径已经被拷贝到临时目录 %temp%\CR_*.tmp\setup.exe
这时setup.exe的默认符号文件src\out\DebugX64\setup.exe.pdb 是找不到的;需要设置mini_installer项目的符号文件路径,或者把src\out\DebugX64\setup.exe.pdb 拷贝到上面的临时目录中。

04 需要修改的自定义内容

src\chrome\installer\util\util_constants.cc文件中 kChromeExe、kChromeNewExe、kChromeOldExe,一般需要根据自己的需要修改下名称。安装时候如果找不到kChromeExe文件,会失败。

 类似资料: