Wie kann ich die Standardeinstellungen beim Bereitstellen von Google Chrome for Business anpassen?

13

Ich möchte Google Chrome for Business in meinem Unternehmen bereitstellen können, ohne dass zusätzliche Verknüpfungen erstellt werden und ohne dass Sie zum ersten Mal dazu aufgefordert werden. Das Chrome for Business-Installationsprogramm ist eine Windows Installer-Datei (MSI), jedoch nur ein Wrapper für ein ausführbares Installationsprogramm. Es verfügt nicht über Eigenschaften wie CreateDesktopShortcut, die in der msiexec-Befehlszeile festgelegt werden könnten, wie dies bei vielen MSI-Installationsprogrammen der Fall ist. Wie kann ich meine Installation anpassen? Ich würde es vorziehen, kein Installationsskript zu schreiben und zu pflegen.

Jay Michaud
quelle

Antworten:

23

Google Chrome speichert die Standardbenutzereinstellungen in einer master_preferences- Datei . Dies ist eine Textdatei im JSON- Format und enthält ein distributionObjekt mit Einstellungen, die während der Installation gelesen werden. Das Bearbeiten dieser Datei in einer vorhandenen Chrome-Installation löst das Problem nicht, da die Installation offensichtlich bereits zu diesem Zeitpunkt stattgefunden hat. Die Lösung besteht darin , eine angepasste master_preferences-Datei mithilfe einer Transformationsdatei in den Windows Installer-Installationsprozess zu integrieren . Führen Sie dazu die folgenden Schritte aus.

Sammeln Sie die erforderlichen Installationsprogramme und Tools

  1. Google Chrome for Business-Installationsprogramm .
    Ich werde die 64-Bit-Version auf herunterladen E:\Chrome for Business 38 (64-bit).
  2. Microsoft Windows Software Development Kit (SDK) für Windows 8.1 .
    Ich lade das hier runter E:\WindowsSDK8.1.
  3. Installieren Sie das Windows SDK: E:\WindowsSDK8.1.\sdksetup.exe.
  4. Installieren Sie Orca (die Windows Installer - Datenbank - Editor):
    msiexec /package "C:\Program Files (x86)\Windows Kits\8.1\bin\x86\Orca-x86_en-us.msi".

Schreiben Sie eine angepasste master_preferences-Datei

  1. Überprüfen Sie die verfügbaren Verteilungseinstellungen. Dies sind Eigenschaften eines distributionObjekts, das im anonymen Objekt in der Datei master_preferences enthalten ist. Die folgende Liste von Einstellungen wurde zusammengestellt, indem zwei Chromium-Quelldateien kombiniert wurden: master_preferences_constants.h und master_preferences_constants.cc in / trunk / src / chrome / installer / util / . Beachten Sie, dass das Folgende kein gültiges JSON ist, da für die Eigenschaften keine Werte enthalten sind. Ein Beispiel wird weiter unten gezeigt.
{
  "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. Überprüfen Sie die verfügbaren Einstellungen für Nichtverteilung. Diese Einstellungen gehen außerhalb des distributionObjekts in JSON. Sie werden auf das Benutzerprofil angewendet, wenn ein Benutzer zum ersten Mal Chrome ausführt. Die vollständige Liste der Einstellungen finden Sie in den Chromium-Quelldateien pref_names.h und pref_names.cc in / trunk / src / chrome / common / . Die Liste ist ziemlich lang, daher wird hier nur eine Teilmenge angezeigt.
{
// *************** 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. Wählen Sie die gewünschten Einstellungen und schreiben Sie Ihre eigene benutzerdefinierte master_preferences-Textdatei. Hier ist der Code, der in die Windows Installer-Datei integriert ist (aus Gründen der Lesbarkeit auf mehrere Zeilen erweitert):
{
  "distribution" : 
  {
    "msi" : true,
    "system_level" : true,
    "verbose_logging" : true
  }
}

Sie müssen alle diese Eigenschaften wie in der Datei master_preferences angegeben angeben, damit das Installationsprogramm ordnungsgemäß funktioniert. Beginnen Sie daher damit und ergänzen Sie es. Meine Datei wird unten angezeigt. Die einzige Möglichkeit, Chrome daran zu hindern, den Nutzer zum Konfigurieren eines Google-Kontos aufzufordern, bestand darin, eine first_run_tabsEigenschaft festzulegen.

{
  "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. Navigieren Sie zu http://jslint.com/ , kopieren Sie Ihren JSON in das Feld Quelle und klicken Sie auf die Schaltfläche JSLint. Hiermit wird überprüft, ob Sie über eine gute JSON-Version verfügen. Dies ist wichtig, da das Einspeisen von fehlerhaftem JSON in das Installationsprogramm zu unerwarteten und / oder unerwünschten Ergebnissen führt. Speichern Sie die überprüfte Datei zum späteren Nachschlagen.

  2. Erstellen Sie eine Kopie Ihres verifizierten JSON und entfernen Sie alle Leerzeichen und neuen Zeilen. Das Chrome-Installationsprogramm kann keine Zeilenumbrüche verarbeiten. Das Einfügen von Zeilenumbrüchen führt zu einer beschädigten Installation, die durch einen Registrierungsvorgang und manuelles Löschen von Dateien entfernt werden muss. Das Entfernen von Leerzeichen ist möglicherweise nicht erforderlich, entspricht jedoch dem, was die Setup-Autoren mit dem Standard-JSON-Code vorgenommen haben. Meins ist unten abgebildet.

{"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. Führen Sie den neuen JSON ohne Leerzeichen über JSLint aus, um sicherzustellen, dass Sie keine Fehler verursacht haben.

  2. Kopieren Sie den verifizierten JSON ohne Leerzeichen oder Zeilenumbrüche in einen URL-Encoder. Ich habe URL Encode / Decode Online verwendet . Speichern Sie den codierten JSON-Code zur Verwendung im Installationsprogramm und zum späteren Nachschlagen. Mein verschlüsseltes JSON wird unten gezeigt.

%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

Schreiben Sie eine Windows Installer-Umwandlung

  1. Starten Sie Orca.
  2. Öffnen Sie die heruntergeladene Chrome for Business-MSI-Datei schreibgeschützt. (Ich nehme an, Sie könnten die eigentliche Datei bearbeiten, aber ich verwende gerne Transformationen, sodass ich immer die vom Hersteller bereitgestellte Datei als Grundlage habe, wenn die Dinge schief gehen.) Ich habe Chrome for Business 38 64-Bit heruntergeladen und der Dateiname war googlechromestandaloneenterprise64.msi.
  3. Auf dem Transform- Menü wählen Sie Neu - Transformation . Jetzt können alle Windows Installer-Datenbanktabellen bearbeitet werden, da Sie eine neue Transformationsdatei bearbeiten.
  4. Wählen Sie die Eigenschaftstabelle aus.
  5. Klicken Sie mit der rechten Maustaste in die Eigenschaftsspalte und klicken Sie auf "Zeile hinzufügen". Setzen Sie die Eigenschaft auf MASTER_PREFERENCESund den Wert auf Ihre URL-codierte JSON. Dieser Code wird während der Bereitstellung angewendet und vom Installationsprogramm als Installationsdatei master_preferencesgespeichert.
  6. Wählen Sie die CustomAction-Tabelle aus, und suchen Sie die BuildInstallCommand-Aktion.
  7. Doppelklicken Sie auf die Zielzelle für die BuildInstallCommand-Aktion, um sie bearbeitbar zu machen.
  8. Löschen Sie gegen Ende des Texts die vorhandenen codierten JSON-Folgen installerdata=und ersetzen Sie sie durch den neuen Eigenschaftsnamen in Klammern. Achten Sie darauf, das schließende Anführungszeichen beizubehalten. Es sollte so aussehen: installerdata=[MASTER_PREFERENCES]"
  9. Drücken Sie die Eingabetaste, um die Bearbeitung der Zelle abzuschließen.
  10. Klicken Sie im Menü Transformieren auf Transformieren generieren und speichern Sie die neue MST-Datei. Ich habe meine als gerettet E:\Chrome for Business 38 (64-bit)\MasterPreferences.mst.
  11. Ausfahrt Orca.

Hinweis: Es ist erforderlich, eine Eigenschaft zu verwenden, anstatt den JSON-Code direkt in die benutzerdefinierte Aktion einzufügen, da das Zielfeld der benutzerdefinierten Aktion nur 255 Zeichen lang ist . Das Schema dieser Tabelle kann nicht geändert werden, und bei den meisten benutzerdefinierten JSON-Versionen würde die Gesamtlänge dieses Felds den Grenzwert überschreiten. Durch die Verwendung einer Eigenschaft wird die Längenbeschränkung vermieden, da die Länge eines Eigenschaftswerts praktisch nicht begrenzt ist.

Installieren Sie Chrome mit Ihrer Transformation

  1. Öffnen Sie ein Eingabeaufforderungsfenster mit Administratorrechten.
  2. Installieren Sie Google Chrome mit Ihrer Umwandlung, indem Sie die TRANSFORMSEigenschaft auf den Dateinamen setzen. Aktivieren Sie die Protokollierung, um Fehler zu finden. Verwenden Sie meine Beispielordner und setzen Sie voraus, dass Sie als Administrator angemeldet sind: 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. Wenn Chrome fehlerfrei installiert wird, versuchen Sie, es als anderer Benutzer ohne Administratorrechte auszuführen, um sicherzustellen, dass die Einstellungen ordnungsgemäß übertragen werden.
  4. Zuletzt konfigurieren Sie Ihr Deployment-System mit dem Installationsprogramm und der Transformationsdatei. Ich verwende System Center Configuration Manager 2012 R2 . Meine Befehlszeile für diese Anwendung ähnelt der folgenden: Auf msiexec /package "googlechromestandaloneenterprise64.msi" /quiet TRANSFORMS="MasterPreferences.mst" /l*v "%TEMP%\ChromeInstallationLog.txt" diese Weise erhalten meine Benutzer eine App Store-ähnliche Erfahrung mit der Configuration Manager-Softwarecenter-Anwendung, die Kontrolle über die Desktop- und Taskleistensymbole bleibt ausschließlich dem Benutzer überlassen, und es wird vermieden, dass beim ersten Ausführen störende Erfahrungen auftreten . Dies ist im Allgemeinen meine bevorzugte Benutzererfahrung, sie ist jedoch besonders nützlich für öffentlich zugängliche Computer, z. B. in einem Computerraum, in dem bei jedem Neustart Änderungen an der Festplatte verloren gehen und daher jede Anmeldung die "erste" Anmeldung ist.

Anmerkungen

Weitere Informationen finden Sie in der Dokumentation zu Google in der Datei master_preferences , die eine Teilmenge der verfügbaren Einstellungen abdeckt. Sie erfahren jedoch nicht, wie Sie die Einstellungen während der Installation auf den Computer übertragen können.

Vielen Dank an [email protected] für den Hinweis auf die Möglichkeit der MSI-Anpassung . Mein Ziel hier war es, diese Informationen zu erweitern, um eine umfassende Erklärung und eine beispielhafte Lösung bereitzustellen. Ich hoffe es ist hilfreich.

Jay Michaud
quelle
Dies ist eine ausgezeichnete Anleitung. Du bist ein Held. :-)
Benutzername
Immer noch der Fall? Soemone bei Google muss dafür abgefeuert werden. Die Registrierung sollte "it" sein - möglicherweise so einfach wie ein Registrierungseintrag, der auf einen Dateinamen und einen Speicherort verweist, der als trivialer 5-Minuten-Job in Wix bereitgestellt werden kann.
TomTom
0

Ich habe nicht genug Repräsentanten, um einen Kommentar zu schreiben. Ich habe Jays Handbuch verwendet, um bei einem Problem zu helfen, einen heruntergeladenen Dateityp automatisch auszuführen. Und dies scheint im Moment der einzige Weg zu sein:

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

-Dieser Link bezieht sich auf einen Fehler, den AFAIK nicht behoben hat. Der Reporter möchte in der Lage sein, bestimmte Dateitypen so einzustellen, dass sie automatisch über ein Gruppenrichtlinienobjekt auf d / l ausgeführt werden. Der Anwendungsfall hierfür ist aufgrund der Auswirkungen auf die Sicherheit begrenzt, aber manchmal in Unternehmensbereitstellungen erforderlich. Dies kann mit Jay's Technik in einer .mst mit master_preferences erreicht werden. (Bearbeiten als Antwort auf Chicks Kommentar)

Ich stimme dir zu, Tomtom, es sollte einen einfacheren Weg geben. Zum größten Teil ist die .admx-Datei von Google ausreichend.

Benutzername
quelle
Unabhängig davon, wie viele Mitarbeiter Sie haben: Eine Antwort nur mit Link wird wahrscheinlich gelöscht. Können Sie dies als eigenständige Antwort sinnvoll machen und nur auf den Link für diejenigen verweisen, die überprüfen möchten, was Sie sagen, oder sich vertiefen möchten? serverfault.com/help/how-to-answer
chicks