chromium的安裝程式

2021-09-07 04:15:13 字數 2085 閱讀 4831

**:

這篇文章主要簡單講解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...