**:
這篇文章主要簡單講解chromium的安裝程式mini_installer
在編譯mini_installer時,要更改編譯的引數把component設定為static_library,不然編譯出來的mini_staller會報「mini_installer.exe is incompatible with the component build」的錯誤
python build\gyp_chromium -d"component=static_library"
可能重新編譯之前需要清空之前編譯的結果,清空完成後執行編譯程式。
ninja -c out\release -t clean
ninja -c out\release mini_installer
這個步驟會把之前的chromium重新編譯了,所以在清空之前需要考慮之前使用shared_library編譯的chromium是否需要儲存。
關於static_library和shared_library的區別,我個人的理解是:
static library:程式執行時依賴的庫函式在編譯時被包含到編譯的目標**中,所以程式可以在沒有這些庫的機器上執行。
shared library:程式執行時依賴的庫函式在編譯時沒有被包含到編譯的目標**中,而是把這些函式屬於哪個庫和它們在庫中的位址等資訊記錄下來。
當使用到這些函式時,會根據已記錄下的資訊把函式所屬的庫載入進來。
mini_installer的工程在src\chrome\installer下,入口就是mini_installer.cc
mini_installer.exe的工作比較簡單,主要是進行了以下幾個工作。
解壓安裝檔案,在cr_b4d84.tmp資料夾中會得到兩個檔案setup.exe和chrome.packed.7z
建立程序執行setup.exe,並等待安裝程式完成程式的安裝。
刪除cr_b4d84.tmp臨時資料夾。是否刪除cr_b4d84.tmp臨時資料夾,由函式shoulddeleteextractedfiles決定。為了能夠讓程式不刪除cr_b4d84.tmp臨時資料夾,需要在登錄檔\hkey_current_user\software\chromium下加入一項。該項的名稱為chromeinstallercleanup,型別為字串值,值為"0"。
以上就是mini_installer.exe的工作,在這個過程中,會建立程序執行setup.exe。
setup.exe的**看起來比較複雜,它的實現在**,setup_main.cc中,主要工作包括:
確定安裝目錄,chromium的安裝分為兩種,一種是system install,另一種是user install,都是通過pathproviderwin函式獲取安裝路徑,具體**在base_paths_win.cc。
如果是system install,安裝目錄csidl_program_files,對應c:\program files
呼叫安裝函式installproducts,該函式的主要工作在installproductshelper完成。
1、createtemporaryandunpackdirectories函式
2、初始化rchivepatchhelper例項archive_helper
uncompressandpatchchromearchive函式
進行第一次解壓,在unpack_path目錄下解壓chrome.packed.7z,得到chrome.7z
unpackarchive函式
進行第二次解壓,解壓chrome.7z得到chrome-bin目錄
從chrome-bin目錄下得到當前安裝的版本號installer_version
3、呼叫installorupdateproduct函式安裝程式
該函式中呼叫installnewversion函式,其中install_list包含了安裝程式進行的一系列操作,包括建立目錄、拷貝檔案和修改登錄檔等。
在addinstallworkitems函式中為install_list新增安裝的操作,然後呼叫install_list->do()執行操作。
如果安裝過程中出現錯誤,則呼叫install_list->rollback()進行回滾。
Ubuntu 安裝Chromium瀏覽器
sudo wget p etc apt sources.list.d step 2 匯入google 的公鑰 wget q o sudo apt key add step 3 更新當前系統的可用列表 sudo apt get update step 4 安裝chrome 穩定版 sudo apt g...
Chromium和Chrome的區別
1 chromium是谷歌的開源專案,開發者們可以共同去改進它,然後谷歌會收集改進後的chromium並發布改進後安裝包。chrome不是開源專案,谷歌會把chromium的東西更新到chrome中。你也可以這麼理解chromium是體驗版,chrome是正式版 3 chromium功能比chrom...
Chromium和Chrome的區別
1 chromium是谷歌的開源專案,開發者們可以共同去改進它,然後谷歌會收集改進後的chromium並發布改進後安裝包。chrome不是開源專案,谷歌會把chromium的東西更新到chrome中。你也可以這麼理解chromium是體驗版,chrome是正式版 3 chromium功能比chrom...