Google Chrome зберігає налаштування користувача за замовчуванням у файлі master_preferences . Це текстовий файл у форматі JSON , і він включає distribution
об'єкт, що містить налаштування, які будуть прочитані під час встановлення. Редагування цього файлу в існуючій установці Chrome не вирішує проблему, оскільки установка, очевидно, вже відбулася в цей момент. Рішення полягає в інтеграції персоналізованого файлу master_preferences в процес інсталяції Windows за допомогою файлу перетворення. Для цього виконайте наступні кроки.
Зберіть необхідні інсталятори та інструменти
- Інсталятор Google Chrome for Business .
Я завантажу 64-бітну версію в E:\Chrome for Business 38 (64-bit)
.
- Комплект для розробки програмного забезпечення Microsoft Windows (SDK) для Windows 8.1 .
Я завантажу це на E:\WindowsSDK8.1
.
- Встановіть Windows SDK:
E:\WindowsSDK8.1.\sdksetup.exe
.
- Встановіть Orca (редактор бази даних інсталятора Windows):
msiexec /package "C:\Program Files (x86)\Windows Kits\8.1\bin\x86\Orca-x86_en-us.msi"
.
Напишіть налаштований файл master_preferences
- Перегляньте доступні настройки розповсюдження. Це властивості
distribution
об'єкта, які містяться в анонімному об'єкті у файлі master_preferences. Наступний список налаштувань був складений поєднанням двох вихідних файлів Chromium: master_preferences_constants.h та master_preferences_constants.cc в / trunk / src / chrome / installer / util / . Зауважте, що наведене нижче не є дійсним JSON, оскільки для властивостей не включаються значення. Приклад наведено далі нижче.
{
"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"
}
}
- Перегляньте доступні налаштування нерозповсюдження. Ці параметри виходять за межі
distribution
об'єкта в JSON. Вони застосовуються до профілю користувача, коли користувач вперше запускає Chrome. Повний список налаштувань доступний у вихідних файлах Chromium pref_names.h та pref_names.cc в / trunk / src / chrome / common / . Список досить тривалий, тому тут відображається лише підмножина.
{
// *************** 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.
- Виберіть потрібні налаштування та напишіть власний текстовий файл master_preferences. Ось такий, який вбудований у файл інсталятора Windows (розширений на кілька рядків для читабельності):
{
"distribution" :
{
"msi" : true,
"system_level" : true,
"verbose_logging" : true
}
}
Ви повинні включити всі ці властивості, як показано у вашому файлі master_preferences, щоб інсталятор працював правильно. Тому слід почати з цього і додати до нього. Мій файл показано нижче. Єдиний спосіб, за яким я зупинив Chrome у тому, щоб вимагати від користувача налаштування облікового запису Google, - це встановити first_run_tabs
властивість.
{
"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
}
}
Перейдіть на сторінку http://jslint.com/ , скопіюйте свій JSON у поле "Джерело" та натисніть кнопку JSLint. Це підтвердить, що у вас хороший JSON. Це важливо, тому що подача JSON із неправильним формуванням інсталятора дасть неочікувані та / або небажані результати. Збережіть перевірений файл для подальшого використання.
Зробіть копію перевіреного JSON та видаліть усі пробіли та нові рядки. Інсталятор Chrome не може обробляти нові рядки; включаючи нові рядки, це призведе до пошкодженої установки, яку потрібно видалити за допомогою операції реєстру та ручного видалення файлів. Видалення пробілів може не знадобитися, але воно відповідає тому, що зробили автори установки з JSON за замовчуванням. Шахта показана нижче.
{"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}}
Запустіть новий JSON без пробілів через JSLint, щоб переконатися, що ви не ввели жодних помилок.
Скопіюйте перевірений JSON без пробілів чи нових рядків у кодер URL. Я використовував Інтернет- кодування / декодування в Інтернеті . Збережіть закодований JSON для використання в інсталяторі та для подальшого використання. Мій закодований JSON показаний нижче.
%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
Написати трансформацію інсталятора Windows
- Почніть Orca.
- Відкрийте завантажений файл Chrome for Business MSI як лише для читання. (Я припускаю, що ви можете редагувати фактичний файл, але мені подобається використовувати перетворення, тому я завжди маю файл постачальника як базовий рівень, якщо щось піде не так.) Я завантажив Chrome for Business 38 64-розрядний файл, а ім'я файлу було
googlechromestandaloneenterprise64.msi
.
- У меню « Трансформація » виберіть « Нова трансформація» . Тепер усі таблиці баз даних Windows Installer можна редагувати, оскільки ви редагуєте новий файл перетворення.
- Виберіть таблицю властивостей.
- Клацніть правою кнопкою миші в стовпці "Властивість" і натисніть "Додати рядок". Встановіть для Властивості значення
MASTER_PREFERENCES
та встановіть значення для JSON, кодованого URL-адресою. Цей код буде застосовано під час розгортання та збережеться як master_preferences
файл інсталятора.
- Виберіть таблицю CustomAction та знайдіть дію BuildInstallCommand.
- Двічі клацніть клітинку «Ціль» для дії BuildInstallCommand, щоб зробити її редагованою.
- У кінці тексту видаліть наявний закодований JSON наступний
installerdata=
і замініть його новим іменем властивості в дужках. Не забудьте зберегти кінцеву лапку. Це повинно виглядати так: installerdata=[MASTER_PREFERENCES]"
- Натисніть Enter, щоб закінчити редагування комірки.
- У меню « Трансформація » натисніть « Створити трансформувати…» та збережіть новий MST-файл. Я врятував як
E:\Chrome for Business 38 (64-bit)\MasterPreferences.mst
.
- Вихід з Орки.
Примітка. Необхідно скористатися властивістю, а не вставляти JSON безпосередньо у спеціальну дію, оскільки поле цільової дії у власність становить лише 255 символів . Схему цієї таблиці неможливо змінити, і більшість призначених для користувача JSON приймають загальну довжину цього поля за ліміт. Використання властивості дозволяє уникнути обмеження довжини, оскільки немає практичного обмеження довжини значення властивості.
Встановіть Chrome із Трансформацією
- Відкрийте вікно командного рядка з правами адміністратора.
- Встановіть Google Chrome із перетворенням, встановивши
TRANSFORMS
властивість на його ім'я файлу. Увімкніть журнал, щоб допомогти вам знайти щось не так. Використовуючи папки мого прикладу та припускаючи, що ви ввійшли як адміністратор:
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"
- Якщо Chrome встановлюється без помилок, спробуйте запустити його як іншого, не адміністративного користувача, щоб переконатися, що налаштування правильно розповсюджуються.
- Нарешті, налаштуйте систему розгортання за допомогою програми встановлення та перетворення. Я використовую System Center Configuration Manager 2012 R2 . Мій командний рядок для цієї програми аналогічний наступному:
msiexec /package "googlechromestandaloneenterprise64.msi" /quiet TRANSFORMS="MasterPreferences.mst" /l*v "%TEMP%\ChromeInstallationLog.txt"
Це дає моїм користувачам досвід, схожий на магазин із додатком Configuration Manager Software Center Center, залишає керування значками робочого столу та панелі завдань виключно з користувачем та уникає дратівливого досвіду першого запуску . Це вподобаний досвід користувачів, але це особливо корисно для публічних комп'ютерів, наприклад, у комп'ютерній лабораторії, де зміни кожного жорсткого диска втрачаються при кожному перезапуску, і тому кожен вхід - це "перший" вхід.
Примітки
Дивіться також документацію Google щодо файлу master_preferences , який охоплює підмножину доступних налаштувань, але не говорить про те, як отримати налаштування на апарат під час встановлення.
Дякуємо grt@chromium.org за вказівку на можливість налаштування MSI . Моєю метою тут було розширити цю інформацію, щоб забезпечити всебічне пояснення та приклад рішення. Я сподіваюся, що це корисно.