Come posso personalizzare le impostazioni predefinite durante la distribuzione di Google Chrome for Business?


14

Voglio essere in grado di distribuire Google Chrome for Business nella mia organizzazione senza creare scorciatoie extra e senza richieste di prima visione. Il programma di installazione di Chrome for Business è un file di Windows Installer (MSI), ma è solo un wrapper attorno a un programma di installazione eseguibile. Non ha proprietà come CreateDesktopShortcut che potrebbero essere impostate sulla riga di comando msiexec come fanno molti installer MSI. Come posso personalizzare la mia installazione? Preferirei non scrivere e mantenere uno script di installazione.

Risposte:


24

Google Chrome memorizza le preferenze utente predefinite in un file master_preferences . Questo è un file di testo in formato JSON e include un distributionoggetto contenente impostazioni che verranno lette durante l'installazione. La modifica di questo file in un'installazione Chrome esistente non risolve il problema perché l'installazione è ovviamente già avvenuta a quel punto. La soluzione è integrare un file master_preferences personalizzato nel processo di installazione di Windows Installer utilizzando un file di trasformazione. Procedere come segue per ottenere questo risultato.

Raccogliere i programmi di installazione e gli strumenti richiesti

  1. Programma di installazione di Google Chrome for Business .
    Scarica la versione a 64 bit in E:\Chrome for Business 38 (64-bit).
  2. Microsoft Windows Software Development Kit (SDK) per Windows 8.1 .
    Lo scaricherò su E:\WindowsSDK8.1.
  3. Installare l'SDK di Windows: E:\WindowsSDK8.1.\sdksetup.exe.
  4. Installare Orca (l'editor di database di Windows Installer):
    msiexec /package "C:\Program Files (x86)\Windows Kits\8.1\bin\x86\Orca-x86_en-us.msi".

Scrivi un file master_preferences personalizzato

  1. Rivedere le impostazioni di distribuzione disponibili. Queste sono le proprietà di un distributionoggetto, contenuto nell'oggetto anonimo nel file master_preferences. Il seguente elenco di impostazioni è stato compilato combinando due file sorgente di Chromium: master_preferences_constants.h e master_preferences_constants.cc in / trunk / src / chrome / installer / util / . Si noti che quanto segue non è JSON valido perché non sono inclusi valori per le proprietà. Un esempio è mostrato più avanti.
{
  "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"
  }
}
  1. Rivedere le impostazioni di non distribuzione disponibili. Queste impostazioni vanno al di fuoridistribution dell'oggetto in JSON. Vengono applicati al profilo utente quando un utente esegue Chrome per la prima volta. L'elenco completo delle impostazioni è disponibile nei file sorgente Chromium pref_names.h e pref_names.cc in / trunk / src / chrome / common / . L'elenco è piuttosto lungo, quindi qui viene mostrato solo un sottoinsieme.
{
// *************** 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.
  1. Scegli le impostazioni che desideri e scrivi il tuo file di testo master_preferences personalizzato. Ecco quello che è integrato nel file di Windows Installer (espanso su più righe per leggibilità):
{
  "distribution" : 
  {
    "msi" : true,
    "system_level" : true,
    "verbose_logging" : true
  }
}

È necessario includere tutte queste proprietà come mostrato nel file master_preferences affinché il programma di installazione funzioni correttamente. Pertanto, dovresti iniziare con questo e aggiungerlo ad esso. Il mio file è mostrato di seguito. L'unico modo in cui ho trovato per impedire a Chrome di chiedere all'utente di configurare un account Google era impostare la first_run_tabsproprietà.

{
  "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
  }
}
  1. Passare a http://jslint.com/ , copiare JSON nella casella Origine e fare clic sul pulsante JSLint. Ciò verificherà che hai un buon JSON. Questo è importante, poiché l'invio dell'installer JSON non valido all'installer produrrà risultati imprevisti e / o indesiderati. Salvare il file verificato per riferimento futuro.

  2. Crea una copia del tuo JSON verificato e rimuovi tutti gli spazi e le nuove linee. Il programma di installazione di Chrome non è in grado di gestire newline; tra cui le nuove righe si tradurrà in un'installazione danneggiata che deve essere rimossa tramite la chirurgia del registro e la cancellazione manuale dei file. La rimozione di spazi potrebbe non essere necessaria, ma corrisponde a ciò che hanno fatto gli autori dell'installazione con il JSON predefinito. Il mio è mostrato di seguito.

{"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}}
  1. Esegui il nuovo JSON senza spazi tramite JSLint per assicurarti di non aver introdotto errori.

  2. Copia il JSON verificato senza spazi o newline in un codificatore URL. Ho usato URL Encode / Decode Online . Salvare il codice JSON codificato per l'uso nell'installer e per riferimento futuro. Il mio JSON codificato è mostrato di seguito.

%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

Scrivi una trasformazione di Windows Installer

  1. Inizia Orca.
  2. Apri il file MSI di Chrome for Business scaricato come sola lettura. (Suppongo che potresti modificare il file effettivo, ma mi piace usare le trasformazioni, quindi ho sempre il file fornito dal fornitore come base se le cose vanno male.) Ho scaricato Chrome for Business 38 a 64 bit e il nome del file era googlechromestandaloneenterprise64.msi.
  3. Nel menu Trasforma , selezionare Nuova trasformazione . Ora tutte le tabelle del database di Windows Installer sono modificabili perché si sta modificando un nuovo file di trasformazione.
  4. Seleziona la tabella Proprietà.
  5. Fare clic con il tasto destro nella colonna Proprietà e fare clic su "Aggiungi riga". Impostare la proprietà su MASTER_PREFERENCESe impostare il valore su JSON con codifica URL. Questo codice verrà applicato durante la distribuzione e salvato dall'installer come master_preferencesfile di installazione.
  6. Selezionare la tabella CustomAction e individuare l'azione BuildInstallCommand.
  7. Fare doppio clic sulla cella Target per l'azione BuildInstallCommand per renderla modificabile.
  8. Verso la fine del testo, eliminare il seguente JSON codificato esistente installerdata=e sostituirlo con il nome della nuova proprietà tra parentesi. Assicurati di conservare le virgolette di chiusura. Dovrebbe sembrare come questo: installerdata=[MASTER_PREFERENCES]"
  9. Premi Invio per terminare la modifica della cella.
  10. Nel menu Trasforma , fai clic su Genera Trasforma ... e salva il nuovo file MST. Ho salvato il mio come E:\Chrome for Business 38 (64-bit)\MasterPreferences.mst.
  11. Uscita Orca.

Nota: è necessario utilizzare una proprietà anziché inserire JSON direttamente nell'azione personalizzata poiché il campo Destinazione dell'azione personalizzata è lungo solo 255 caratteri . Lo schema di quella tabella non può essere modificato e la maggior parte dei JSON personalizzati occuperebbe la lunghezza totale di quel campo oltre il limite. L'uso di una proprietà evita la limitazione della lunghezza, in quanto non esiste un limite pratico alla lunghezza di un valore di proprietà.

Installa Chrome con la tua trasformazione

  1. Aprire una finestra del prompt dei comandi con privilegi di amministratore.
  2. Installa Google Chrome con la tua trasformazione impostando la TRANSFORMSproprietà sul suo nome file. Attiva la registrazione per aiutarti a trovare qualcosa di sbagliato. Usando le mie cartelle di esempio e supponendo che tu abbia effettuato l'accesso come amministratore: 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"
  3. Se Chrome si installa senza errori, prova a eseguirlo come un altro utente non amministrativo per assicurarti che le impostazioni si stiano propagando correttamente.
  4. Infine, configura il tuo sistema di distribuzione con il file di installazione e trasformazione. Uso System Center Configuration Manager 2012 R2 . La mia riga di comando per questa applicazione è simile alla seguente: msiexec /package "googlechromestandaloneenterprise64.msi" /quiet TRANSFORMS="MasterPreferences.mst" /l*v "%TEMP%\ChromeInstallationLog.txt" Questo offre ai miei utenti un'esperienza simile ad un negozio con l'applicazione Software Center di Configuration Manager, lascia il controllo delle icone del desktop e della barra delle applicazioni esclusivamente all'utente ed evita fastidiose esperienze di prima esecuzione . Questa è la mia esperienza utente preferita in generale, ma è particolarmente utile per i computer pubblici, come in un laboratorio informatico, in cui le modifiche del disco rigido vengono perse ad ogni riavvio e quindi ogni accesso è il "primo" accesso.

Appunti

Vedi anche la documentazione di Google sul file master_preferences , che copre un sottoinsieme delle impostazioni disponibili, ma non ti dice come ottenere le impostazioni sulla macchina durante l'installazione.

Grazie a grt@chromium.org per aver segnalato la possibilità di personalizzazione dell'MSI . Il mio obiettivo qui era di espandere quelle informazioni per fornire una spiegazione completa e una soluzione di esempio. Spero sia utile


Questa è una guida eccellente Sei un eroe. :-)
username dell'utenteus

Ancora il caso? Soemone su Google deve essere licenziato per questo. Il registro dovrebbe essere "esso" - probabilmente semplice come una voce del registro che punta a un nome file e posizione che può essere implementato come un banale lavoro di 5 minuti in Wix.
TomTom,

0

Non ho abbastanza rappresentante per pubblicare un commento. Stavo usando la guida di Jay per aiutare con un problema a far funzionare automaticamente un tipo di file scaricato. E questo sembra l'unico modo per farlo al momento:

https://bugs.chromium.org/p/chromium/issues/detail?id=476668

-Questo link si riferisce a un bug che AFAIK non è stato corretto. Il giornalista vorrebbe essere in grado di impostare tipi di file specifici per l'esecuzione automatica su d / l tramite un oggetto Criteri di gruppo. Il caso d'uso per questo è limitato date le implicazioni di sicurezza, ma talvolta necessario nelle implementazioni aziendali. Può essere realizzato usando la tecnica di Jay in un .mst con master_preferences. (modifica in risposta al commento di Chick)

Sono d'accordo con te Tomtom, dovrebbe esserci un modo più semplice. Nella maggior parte dei casi, il .admx di Google è sufficiente.


Indipendentemente dalla quantità di rappresentante che hai: è probabile che una risposta solo link venga cancellata. Riesci a dare un senso a questa risposta da sola e fare semplicemente riferimento al link per coloro che vogliono verificare ciò che stai dicendo o scavare più a fondo. serverfault.com/help/how-to-answer
pulcini
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.