Google Chrome , varsayılan kullanıcı tercihlerini bir ana_preferences dosyasında saklar . Bu, JSON biçimindeki bir metin dosyasıdır ve distribution
yükleme sırasında okunacak ayarları içeren bir nesne içerir . Mevcut bir Chrome kurulumunda bu dosyayı düzenlemek sorunu çözmez çünkü kurulum zaten bu noktada gerçekleşmiştir. Çözüm, özelleştirilmiş bir master_preferences dosyasını bir dönüştürme dosyası kullanarak Windows Installer yükleme işlemine entegre etmektir . Bunu yapmak için aşağıdaki adımları uygulayın.
Gerekli Yükleyicileri ve Araçları Toplayın
- Google Chrome for Business yükleyici .
64 bit sürümünü indireceğim E:\Chrome for Business 38 (64-bit)
.
- Windows 8.1 için Microsoft Windows Yazılım Geliştirme Kiti (SDK) .
Bunu indireceğim E:\WindowsSDK8.1
.
- Windows SDK yükleyin:
E:\WindowsSDK8.1.\sdksetup.exe
.
- Orca (Windows Installer veritabanı editörü) yükleyin:
msiexec /package "C:\Program Files (x86)\Windows Kits\8.1\bin\x86\Orca-x86_en-us.msi"
.
Özel bir master_preferences dosyası yazma
- Kullanılabilir dağıtım ayarlarını gözden geçirin. Bunlar
distribution
, master_preferences dosyasındaki anonim nesnede bulunan bir nesnenin özellikleridir . Aşağıdaki ayarlar listesi iki Chromium kaynak dosyası birleştirilerek derlenmiştir: master_preferences_constants.h ve / trunk / src / chrome / installer / util / içindeki master_preferences_constants.cc . Özellikler için değer eklenmediğinden aşağıdakilerin geçerli JSON olmadığını unutmayın. Aşağıda bir örnek daha gösterilmektedir.
{
"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"
}
}
- Kullanılabilir dağıtım dışı ayarları gözden geçirin. Bu ayarlar gitmek dışında bir
distribution
JSON nesne. Bir kullanıcı Chrome'u ilk kez çalıştırdığında kullanıcı profiline uygulanır. Ayarların tam listesi / trunk / src / chrome / common / içindeki pref_names.h ve pref_names.cc Chromium kaynak dosyalarında bulunur . Liste oldukça uzundur, bu nedenle burada yalnızca bir alt küme gösterilir.
{
// *************** 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.
- İstediğiniz ayarları seçin ve kendi özel master_preferences metin dosyanızı yazın. Windows Installer dosyasında yerleşik olarak bulunan dosya (okunabilirlik için birden çok satıra genişletilmiştir):
{
"distribution" :
{
"msi" : true,
"system_level" : true,
"verbose_logging" : true
}
}
Yükleyicinin düzgün çalışması için bu özelliklerin tümünü master_preferences dosyanızda gösterildiği gibi eklemeniz gerekir. Bu nedenle, bununla başlamalı ve buna eklemelisiniz. Dosyam aşağıda gösteriliyor. Chrome'un kullanıcıdan bir Google hesabı yapılandırmasını istemesini engellememin tek yolu first_run_tabs
mülk ayarlamaktı .
{
"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
}
}
İçin Gözat http://jslint.com/ , Kaynak kutuya JSON kopyalamak ve JSLint butonuna tıklayın. Bu, iyi bir JSON'a sahip olduğunuzu doğrular. Bu önemlidir, çünkü hatalı biçimlendirilmiş JSON'u yükleyiciye beslemek beklenmedik ve / veya istenmeyen sonuçlar verecektir. Doğrulanmış dosyayı ileride başvurmak üzere saklayın.
Doğrulanmış JSON'unuzun bir kopyasını oluşturun ve tüm boşlukları ve yeni satırları kaldırın. Chrome yükleyicisi yeni satırları işleyemez; yeni satırlar dahil etmek, kayıt defteri ameliyatı ve dosyaların manuel olarak silinmesi yoluyla kaldırılması gereken bozuk bir kurulumla sonuçlanır. Boşlukları kaldırmak gerekli olmayabilir, ancak kurulum yazarlarının yaptığı varsayılan JSON ile eşleşir. Maden aşağıda gösterilmiştir.
{"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}}
Herhangi bir hata yapmadığınızdan emin olmak için JSLint aracılığıyla boşluk olmadan yeni JSON'u çalıştırın.
Doğrulanmış JSON'u boşluk veya yeni satır olmadan bir URL kodlayıcıya kopyalayın. Ben kullanılan URL Kodlama / Kod Çözme Çevrimiçi . Kodlayıcı JSON'u yükleyicide kullanmak ve ileride başvurmak üzere saklayın. Kodlanmış JSON'um aşağıda gösterilmiştir.
%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 Installer Dönüşümü yazma
- Orca'yı başlatın.
- İndirilen Chrome İşletme Sürümü MSI dosyasını salt okunur olarak açın. (Sanırım gerçek dosyayı düzenleyebilirsiniz, ancak dönüşümleri kullanmayı seviyorum, bu yüzden işler ters giderse her zaman satıcı tarafından sağlanan dosyayı temel olarak alıyorum.) Chrome for Business 38 64 bit'i indirdim ve dosya adı da oldu
googlechromestandaloneenterprise64.msi
.
- Açık Transform menüsünden seçmek Yeni Transform . Artık yeni bir dönüştürme dosyasını düzenlediğiniz için tüm Windows Installer veritabanı tabloları düzenlenebilir.
- Özellik tablosunu seçin.
- Özellik sütununu sağ tıklayın ve "Satır Ekle" yi tıklayın. Özelliği olarak ayarlayın ve
MASTER_PREFERENCES
URL ile kodlanmış JSON değerine ayarlayın. Bu kod dağıtım sırasında uygulanacak master_preferences
ve yükleyici tarafından kurulumun dosyası olarak kaydedilecektir .
- CustomAction tablosunu seçin ve BuildInstallCommand eylemini bulun.
- Düzenlenebilir hale getirmek için BuildInstallCommand eyleminin Hedef hücresini çift tıklatın.
- Metnin sonuna doğru, aşağıdaki kodlanmış mevcut JSON'u silin ve
installerdata=
köşeli parantez içindeki yeni özellik adıyla değiştirin. Kapanış tırnak işaretini koruduğunuzdan emin olun. Şöyle görünmelidir: installerdata=[MASTER_PREFERENCES]"
- Hücreyi düzenlemeyi tamamlamak için Enter tuşuna basın.
- Açık Transform menüsünden tıklayın Transform üret ... ve yeni MST dosyayı kaydedin. Benimkileri olarak kurtardım
E:\Chrome for Business 38 (64-bit)\MasterPreferences.mst
.
- Orca'dan çıkın.
Not: Özel eylem Hedef alanı yalnızca 255 karakter uzunluğunda olduğundan , JSON'u doğrudan özel eyleme eklemek yerine bir özellik kullanmak gerekir . Bu tablonun şeması değiştirilemez ve çoğu özel JSON, bu alanın toplam uzunluğunu sınırın üzerine çıkarır. Bir özellik kullanmak, bir özellik değerinin uzunluğu için pratik bir sınır olmadığından uzunluk sınırlamasını önler.
Dönüşümünüzle Chrome'u yükleyin
- Yönetici ayrıcalıklarına sahip bir Komut İstemi penceresi açın.
TRANSFORMS
Mülkü dosya adına ayarlayarak dönüşümünüzle Google Chrome'u yükleyin . Yanlış bir şey bulmanıza yardımcı olması için günlük kaydını açın. Örnek klasörlerimi kullanarak ve Yönetici olarak oturum açtığınızı varsayarak:
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 hatasız bir şekilde yüklenirse, ayarların doğru şekilde yayıldığından emin olmak için farklı, yönetici olmayan bir kullanıcı olarak çalıştırmayı deneyin.
- Son olarak, dağıtım sisteminizi yükleyici ve dönüşüm dosyasıyla yapılandırın. Kullandığım System Center Configuration Manager 2012 R2 . Bu Uygulama için komut satırım aşağıdakine benzer:
msiexec /package "googlechromestandaloneenterprise64.msi" /quiet TRANSFORMS="MasterPreferences.mst" /l*v "%TEMP%\ChromeInstallationLog.txt"
Bu, kullanıcılarıma Configuration Manager'ın Yazılım Merkezi uygulamasıyla uygulama mağazası benzeri bir deneyim sağlar, masaüstü ve görev çubuğu simgelerinin kontrolünü yalnızca kullanıcıyla bırakır ve can sıkıcı ilk çalıştırma deneyimlerini önler . Bu benim genel olarak tercih ettiğim kullanıcı deneyimim, ancak özellikle her yeniden başlatmada sabit sürücü değişikliklerinin kaybolduğu ve her oturum açma işleminin "ilk" oturum açma olduğu bir bilgisayar laboratuarında olduğu gibi halka açık bilgisayarlar için kullanışlıdır.
notlar
Ayrıca , mevcut ayarların bir alt kümesini kapsayan ancak yükleme sırasında ayarların makineye nasıl alınacağını söylemeyen master_preferences dosyasındaki Google belgelerine de bakın .
MSI özelleştirme olasılığını işaret ettiği için grt@chromium.org'a teşekkürler . Buradaki amacım, kapsamlı bir açıklama ve örnek çözüm sağlamak için bu bilgileri genişletmekti. Umarım faydalıdır.