Google Chrome menyimpan preferensi pengguna default dalam file master_preferences . Ini adalah file teks dalam format JSON , dan itu termasuk distribution
objek yang berisi pengaturan yang akan dibaca selama instalasi. Mengedit file ini di instalasi Chrome yang ada tidak menyelesaikan masalah karena instalasi sudah jelas terjadi pada saat itu. Solusinya adalah mengintegrasikan file master_preferences khusus ke dalam proses instalasi Windows Installer dengan menggunakan file transformasi. Ambil langkah-langkah berikut untuk mencapai ini.
Kumpulkan Penginstal dan Peralatan yang Diperlukan
- Pemasang Google Chrome untuk Bisnis .
Saya akan mengunduh versi 64-bit ke E:\Chrome for Business 38 (64-bit)
.
- Kit Pengembangan Perangkat Lunak Microsoft Windows (SDK) untuk Windows 8.1 .
Saya akan unduh ini untuk E:\WindowsSDK8.1
.
- Instal Windows SDK:
E:\WindowsSDK8.1.\sdksetup.exe
.
- Instal Orca (Windows Installer Database Editor):
msiexec /package "C:\Program Files (x86)\Windows Kits\8.1\bin\x86\Orca-x86_en-us.msi"
.
Tulis file master_preferences khusus
- Tinjau pengaturan distribusi yang tersedia. Ini adalah properti dari
distribution
objek, yang terkandung dalam objek anonim di file master_preferences. Daftar pengaturan berikut dikompilasi dengan menggabungkan dua file sumber Chromium: master_preferences_constants.h dan master_preferences_constants.cc di / trunk / src / chrome / installer / util / . Perhatikan bahwa yang berikut ini bukan JSON yang valid karena tidak ada nilai yang disertakan untuk properti. Contoh ditunjukkan lebih lanjut di bawah ini.
{
"distribution" : {
// All the preferences below are expected to be inside the JSON "distribution"
// block (as shown here). Some of them also have equivalent command line option.
// If same option is specified in master preference as well as command line,
// the command line value takes precedence.
// Boolean. Use alternate text for the shortcut. Cmd line override present.
"alternate_shortcut_text"
// Boolean. Whether to instruct the installer to auto-launch chrome on computer
// startup. The default (if not provided) is |false|.
"auto_launch_chrome"
// Boolean. This is to be a Chrome install. (When using MultiInstall)
"chrome"
// Boolean. This is to be a Chrome App Host install.
"app_host" // TODO(huangs): Remove by M27.
// Boolean. This is to be a Chrome App Launcher install.
"app_launcher"
// Integer. Icon index from chrome.exe to use for shortcuts.
"chrome_shortcut_icon_index"
// Boolean. This is a legacy preference and should no longer be used; it is
// kept around so that old master_preferences which specify
// "create_all_shortcuts":false still enforce the new
// "do_not_create_(desktop|quick_launch)_shortcut" preferences. Setting this to
// true no longer has any impact.
"create_all_shortcuts"
// Boolean pref that disables all logging.
"disable_logging"
// Name of the dictionary that holds the distribution values.
"distribution"
// Boolean pref that triggers silent import of the default browser bookmarks.
"import_bookmarks"
// String pref that triggers silent import of bookmarks from the html file at
// given path.
"import_bookmarks_from_file"
// Boolean pref that triggers silent import of the default browser history.
"import_history"
// Boolean pref that triggers silent import of the default browser homepage.
"import_home_page"
// Boolean pref that triggers silent import of the default search engine.
"import_search_engine"
// Integer. RLZ ping delay in seconds.
"ping_delay"
// String of Chrome version for which the "set as default browser" infobar will
// never be shown.
"suppress_default_browser_prompt_for_version"
// Boolean. Do not show first run bubble, even if it would otherwise be shown.
"suppress_first_run_bubble"
// Boolean. Prevent creation of all shortcuts to chrome, including the
// desktop, quick launch, taskbar and the start menu shortcuts.
"do_not_create_any_shortcuts"
// Boolean. Prevent creation of the Desktop shortcut on install (and later on
// Active Setup for each user on a system-level install).
"do_not_create_desktop_shortcut"
// Boolean. Prevent creation of the Quick Launch shortcut on install (and later
// on Active Setup for each user on a system-level install).
"do_not_create_quick_launch_shortcut"
// Boolean. Prevent creation of the Taskbar (since Windows 7) shortcut on
// install (and later on Active Setup for each user on a system-level install).
"do_not_create_taskbar_shortcut"
// Boolean. Do not launch Chrome after first install. Cmd line override present.
"do_not_launch_chrome"
// Boolean. Do not register with Google Update to have Chrome launched after
// install. Cmd line override present.
"do_not_register_for_update_launch"
// String. Specifies the file path to write logging info to.
"log_file"
// Boolean. Register Chrome as default browser. Cmd line override present.
"make_chrome_default"
// Boolean. Register Chrome as default browser for the current user.
"make_chrome_default_for_user"
// Boolean. Expect to be run by an MSI installer. Cmd line override present.
"msi"
// Boolean. Support installing multiple products at once.
"multi_install"
// Boolean. Show EULA dialog before install.
"require_eula"
// Boolean. Indicates that the first-run 'set-as-default' dialog should not be
// shown. Relevant in Windows 8+ context only. If this is true, the standard
// 'set default browser' prompt on the butter-bar will appear during the first
// run.
"suppress_first_run_default_browser_prompt"
// Boolean. Install Chrome to system wise location. Cmd line override present.
"system_level"
// Boolean. Run installer in verbose mode. Cmd line override present.
"verbose_logging"
// Name of the block that contains the extensions on the master preferences.
"extensions.settings"
}
}
- Tinjau pengaturan non-distribusi yang tersedia. Pengaturan ini pergi luar dari
distribution
objek dalam JSON. Mereka diterapkan ke profil pengguna ketika pengguna menjalankan Chrome untuk pertama kalinya. Daftar lengkap pengaturan tersedia di file sumber Chromium, pref_names.h dan pref_names.cc di / trunk / src / chrome / common / . Daftarnya agak panjang, jadi hanya sebagian yang ditampilkan di sini.
{
// *************** PROFILE PREFS ***************
// These are attached to the user profile
// A string property indicating whether default apps should be installed
// in this profile. Use the value "install" to enable defaults apps, or
// "noinstall" to disable them. This property is usually set in the
// master_preferences and copied into the profile preferences on first run.
// Defaults apps are installed only when creating a new profile.
"default_apps"
// If set to true profiles are created in ephemeral mode and do not store their
// data in the profile folder on disk but only in memory.
"profile.ephemeral_mode"
// A boolean specifying whether the New Tab page is the home page or not.
"homepage_is_newtabpage"
// This is the URL of the page to load when opening new tabs.
"homepage"
// An integer pref. Holds one of several values:
// 0: (deprecated) open the homepage on startup.
// 1: restore the last session.
// 2: this was used to indicate a specific session should be restored. It is
// no longer used, but saved to avoid conflict with old preferences.
// 3: unused, previously indicated the user wants to restore a saved session.
// 4: restore the URLs defined in kURLsToRestoreOnStartup.
// 5: open the New Tab Page on startup.
"session.restore_on_startup"
// The URLs to restore on startup or when the home button is pressed. The URLs
// are only restored on startup if kRestoreOnStartup is 4.
"session.startup_urls"
// Boolean that is true when SafeBrowsing is enabled.
"safebrowsing.enabled"
// Boolean that tell us whether malicious download feedback is enabled.
"safebrowsing.extended_reporting_enabled"
/* Might be useful for highly-secure workstations. */
// Enum that specifies whether Incognito mode is:
// 0 - Enabled. Default behaviour. Default mode is available on demand.
// 1 - Disabled. Used cannot browse pages in Incognito mode.
// 2 - Forced. All pages/sessions are forced into Incognito.
"incognito.mode_availability"
// Boolean that is true when Suggest support is enabled.
"search.suggest_enabled"
// A boolean pref set to true if a Home button to open the Home pages should be
// visible on the toolbar.
"browser.show_home_button"
// Boolean that indicates whether we should check if we are the default browser
// on start-up.
"browser.check_default_browser"
// Policy setting whether default browser check should be disabled and default
// browser registration should take place.
"browser.default_browser_setting_enabled"
// Boolean that specifies whether to import bookmarks from the default browser
// on first run.
"import_bookmarks"
// Boolean that specifies whether to import the browsing history from the
// default browser on first run.
"import_history"
// Boolean that specifies whether to import the homepage from the default
// browser on first run.
"import_home_page"
// Boolean that specifies whether to import the search engine from the default
// browser on first run.
"import_search_engine"
// Boolean that specifies whether to import the saved passwords from the default
// browser on first run.
"import_saved_passwords"
// Boolean that specifies if the sign in promo is allowed to show on first run.
// This preference is specified in the master preference file to suppress the
// sign in promo for some installations.
"sync_promo.show_on_first_run_allowed"
// *************** LOCAL STATE ***************
// These are attached to the machine/installation
// Note: Both settings included below are for Windows only.
// Whether downloaded PDFs should be opened in Adobe Acrobat Reader.
"download.open_pdf_in_adobe_reader"
// Preference to be used while relaunching Chrome. This preference dictates if
// Chrome should be launched in Metro or Desktop mode.
// For more info take a look at ChromeRelaunchMode enum.
"relaunch.mode"
// Boolean that specifies if the sign in promo is allowed to show on first run.
// This preference is specified in the master preference file to suppress the
// sign in promo for some installations.
"sync_promo.show_on_first_run_allowed";
// Boolean that specifies if we should show a bubble in the new tab page.
// The bubble is used to confirm that the user is signed into sync.
"sync_promo.show_ntp_bubble";
// As part of the master preferences an optional section indicates the tabs
// to open during first run. An example is the following:
"first_run_tabs": [
"http://google.com/f1",
"https://google.com/f2"
]
// Note that the entries are usually urls but they don't have to be.
- Pilih pengaturan yang Anda inginkan, dan tulis file teks master_preferences kustom Anda sendiri. Berikut ini adalah yang dibangun ke dalam file Pemasang Windows (diperluas ke beberapa baris untuk dibaca):
{
"distribution" :
{
"msi" : true,
"system_level" : true,
"verbose_logging" : true
}
}
Anda harus memasukkan semua properti ini seperti yang ditunjukkan dalam file master_preferences agar installer dapat berfungsi dengan benar. Karena itu, Anda harus mulai dengan ini dan menambahkannya. File saya ditunjukkan di bawah ini. Satu-satunya cara yang saya temukan untuk menghentikan Chrome meminta pengguna untuk mengonfigurasi akun Google adalah dengan menyetel first_run_tabs
properti.
{
"browser" : {
"check_default_browser" : false
},
"distribution" : {
"import_bookmarks" : false,
"import_history" : false,
"import_home_page" : false,
"import_search_engine" : false,
"suppress_first_run_bubble" : true,
"do_not_create_desktop_shortcut" : true,
"do_not_create_quick_launch_shortcut" : true,
"do_not_create_taskbar_shortcut" : true,
"do_not_launch_chrome" : true,
"do_not_register_for_update_launch" : true,
"make_chrome_default" : false,
"make_chrome_default_for_user" : false,
"msi" : true,
"require_eula" : false,
"suppress_first_run_default_browser_prompt" : true,
"system_level" : true,
"verbose_logging" : true
},
"first_run_tabs" : [
"chrome://newtab"
],
"homepage" : "chrome://newtab",
"homepage_is_newtabpage" : true,
"sync_promo" : {
"show_on_first_run_allowed" : false
}
}
Telusuri ke http://jslint.com/ , salin JSON Anda ke dalam kotak Source, dan klik tombol JSLint. Ini akan memverifikasi bahwa Anda memiliki JSON yang baik. Ini penting, karena memberi makan JSON yang rusak ke installer akan menghasilkan hasil yang tidak diharapkan dan / atau tidak diinginkan. Simpan file terverifikasi untuk referensi di masa mendatang.
Buat salinan JSON terverifikasi Anda, dan hapus semua spasi dan baris baru. Pemasang Chrome tidak dapat menangani baris baru; termasuk baris baru akan mengakibatkan instalasi yang rusak yang harus dihapus melalui operasi registri dan penghapusan file secara manual. Menghapus spasi mungkin tidak diperlukan, tetapi cocok dengan apa yang dilakukan penulis pengaturan dengan JSON default. Milik saya ditunjukkan di bawah ini.
{"browser":{"check_default_browser":false},"distribution":{"import_bookmarks":false,"import_history":false,"import_home_page":false,"import_search_engine":false,"suppress_first_run_bubble":true,"do_not_create_desktop_shortcut":true,"do_not_create_quick_launch_shortcut":true,"do_not_create_taskbar_shortcut":true,"do_not_launch_chrome":true,"do_not_register_for_update_launch":true,"make_chrome_default":false,"make_chrome_default_for_user":false,"msi":true,"require_eula":false,"suppress_first_run_default_browser_prompt":true,"system_level":true,"verbose_logging":true},"first_run_tabs":["chrome://newtab"],"homepage":"chrome://newtab","homepage_is_newtabpage":true,"sync_promo":{"show_on_first_run_allowed":false}}
Jalankan JSON baru tanpa spasi melalui JSLint untuk memastikan bahwa Anda tidak menemukan kesalahan.
Salin JSON terverifikasi tanpa spasi atau baris baru ke penyandi URL. Saya menggunakan URL Encode / Decode Online . Simpan JSON yang disandikan untuk digunakan di installer dan untuk referensi di masa mendatang. JSON saya yang dikodekan ditunjukkan di bawah ini.
%7B%22browser%22%3A%7B%22check_default_browser%22%3Afalse%7D%2C%22distribution%22%3A%7B%22import_bookmarks%22%3Afalse%2C%22import_history%22%3Afalse%2C%22import_home_page%22%3Afalse%2C%22import_search_engine%22%3Afalse%2C%22suppress_first_run_bubble%22%3Atrue%2C%22do_not_create_desktop_shortcut%22%3Atrue%2C%22do_not_create_quick_launch_shortcut%22%3Atrue%2C%22do_not_create_taskbar_shortcut%22%3Atrue%2C%22do_not_launch_chrome%22%3Atrue%2C%22do_not_register_for_update_launch%22%3Atrue%2C%22make_chrome_default%22%3Afalse%2C%22make_chrome_default_for_user%22%3Afalse%2C%22msi%22%3Atrue%2C%22require_eula%22%3Afalse%2C%22suppress_first_run_default_browser_prompt%22%3Atrue%2C%22system_level%22%3Atrue%2C%22verbose_logging%22%3Atrue%7D%2C%22first_run_tabs%22%3A%5B%22chrome%3A%2F%2Fnewtab%22%5D%2C%22homepage%22%3A%22chrome%3A%2F%2Fnewtab%22%2C%22homepage_is_newtabpage%22%3Atrue%2C%22sync_promo%22%3A%7B%22show_on_first_run_allowed%22%3Afalse%7D%7D
Tulis Transformasi Penginstal Windows
- Mulai Orca.
- Buka file Chrome untuk Bisnis MSI yang diunduh sebagai hanya-baca. (Saya kira Anda dapat mengedit file yang sebenarnya, tetapi saya suka menggunakan transformasi sehingga saya selalu memiliki file yang disediakan vendor sebagai garis dasar jika semuanya serba salah.) Saya mengunduh Chrome for Business 38 64-bit, dan nama filenya
googlechromestandaloneenterprise64.msi
.
- Pada menu Transform , pilih Transform Baru . Sekarang semua tabel database Pemasang Windows dapat diedit karena Anda mengedit file transformasi baru.
- Pilih tabel Properti.
- Klik kanan di kolom Properti dan klik "Tambahkan Baris". Tetapkan Properti ke
MASTER_PREFERENCES
, dan tetapkan Nilai ke JSON yang disandikan URL Anda. Kode ini akan diterapkan selama penyebaran dan disimpan sebagai file instalasi master_preferences
oleh installer.
- Pilih tabel CustomAction, dan cari aksi BuildInstallCommand.
- Klik dua kali sel Target untuk tindakan BuildInstallCommand untuk membuatnya dapat diedit.
- Di dekat akhir teks, hapus JSON yang sudah disandikan yang mengikuti berikut ini
installerdata=
dan ganti dengan nama properti baru dalam tanda kurung. Pastikan untuk mempertahankan tanda kutip penutup. Seharusnya terlihat seperti ini: installerdata=[MASTER_PREFERENCES]"
- Tekan Enter untuk menyelesaikan pengeditan sel.
- Pada menu Transform , klik Hasilkan Transform ... dan simpan file MST baru. Saya menyimpan milik saya sebagai
E:\Chrome for Business 38 (64-bit)\MasterPreferences.mst
.
- Keluar dari Orca.
Catatan: Diperlukan untuk menggunakan properti daripada menyisipkan JSON langsung ke tindakan kustom karena bidang Target tindakan kustom hanya panjang 255 karakter . Skema tabel itu tidak bisa diubah, dan sebagian besar JSON kustom akan mengambil panjang total bidang itu di atas batas. Menggunakan properti menghindari batasan panjang, karena tidak ada batasan praktis untuk panjang nilai properti.
Pasang Chrome dengan Transformasi Anda
- Buka jendela Prompt Perintah dengan hak administratif.
- Instal Google Chrome dengan transformasi Anda dengan mengatur
TRANSFORMS
properti ke nama file-nya. Aktifkan pencatatan untuk membantu Anda menemukan kesalahan. Menggunakan folder contoh saya dan berasumsi bahwa Anda masuk sebagai Administrator:
msiexec /package "E:\Chrome for Business 38 (64-bit)\googlechromestandaloneenterprise64.msi" TRANSFORMS="E:\Chrome for Business 38 (64-bit)\MasterPreferences.mst" /l*v "C:\Users\Administrator\Desktop\ChromeInstallationLog.txt"
- Jika Chrome memasang tanpa kesalahan, coba jalankan sebagai pengguna non-administratif yang berbeda untuk memastikan bahwa pengaturan menyebar dengan benar.
- Terakhir, konfigurasikan sistem penempatan Anda dengan file penginstal dan transformasi. Saya menggunakan System Center Configuration Manager 2012 R2 . Baris perintah saya untuk Aplikasi ini serupa dengan yang berikut:
msiexec /package "googlechromestandaloneenterprise64.msi" /quiet TRANSFORMS="MasterPreferences.mst" /l*v "%TEMP%\ChromeInstallationLog.txt"
Ini memberi pengguna saya pengalaman seperti app-store dengan aplikasi Pusat Perangkat Lunak Configuration Manager, meninggalkan kontrol ikon desktop dan taskbar semata-mata dengan pengguna, dan menghindari pengalaman menjengkelkan pertama kali yang mengganggu. . Ini adalah pengalaman pengguna pilihan saya secara umum, tetapi ini sangat berguna untuk komputer yang menghadap publik, seperti di lab komputer, di mana perubahan hard drive hilang pada setiap restart, dan setiap log masuk adalah logon "pertama".
Catatan
Lihat juga dokumentasi Google pada file master_preferences , yang mencakup subset pengaturan yang tersedia, tetapi tidak memberi tahu Anda cara memasukkan pengaturan ke mesin selama instalasi.
Terima kasih kepada grt@chromium.org karena menunjukkan kemungkinan penyesuaian MSI . Tujuan saya di sini adalah untuk memperluas informasi tersebut untuk memberikan penjelasan yang komprehensif dan contoh solusi. Saya harap ini membantu.