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.cc的wWinMain函数处加入一个::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文件,会失败。
本文详细介绍Chromium的mini_installer和setup构建流程,包括资源打包、VS工程生成、调试技巧及自定义内容修改,是Chromium安装程序开发者的实用手册。
1580

被折叠的 条评论
为什么被折叠?



