web-dev-qa-db-ja.com

Google Chrome for Businessを導入するときにデフォルトの設定をカスタマイズするにはどうすればよいですか?

Google Chrome for Businessを組織に導入し、追加のショートカットを作成したり、初回起動のプロンプトを表示したりする必要はありません。Chrome for BusinessインストーラーはWindowsインストーラーファイル(MSI)ですが、実行可能インストーラーのラッパーにすぎません。多くのMSIインストーラーが行うようにmsiexecコマンドラインで設定できるCreateDesktopShortcutなどのプロパティはありません。カスタマイズ方法私のインストール?私は、インストールスクリプトを作成および維持したくないと思います。

14
Jay Michaud

Google Chrome は、デフォルトのユーザー設定をmaster_preferencesファイルに保存します 。これは [〜#〜] json [〜 #〜] 形式で、インストール中に読み込まれる設定を含むdistributionオブジェクトが含まれています。このファイルを既存のChromeインストールで編集しても、インストールで問題が解決されません明らかにその時点ですでに発生しています。解決策は、変換ファイルを使用して カスタマイズされたmaster_preferencesファイルをWindowsインストーラーのインストールプロセスに統合する です。これを行うには、次の手順を実行します。

必要なインストーラーとツールを収集する

  1. Google Chrome for Businessインストーラー
    64ビットバージョンをE:\Chrome for Business 38 (64-bit)にダウンロードします。
  2. Windows 8.1用Microsoft Windowsソフトウェア開発キット(SDK)
    これをE:\WindowsSDK8.1にダウンロードします。
  3. Windows SDKをインストールします:E:\WindowsSDK8.1.\sdksetup.exe
  4. Orca(Windowsインストーラーデータベースエディター)をインストールします。
    msiexec /package "C:\Program Files (x86)\Windows Kits\8.1\bin\x86\Orca-x86_en-us.msi"

カスタマイズされたmaster_preferencesファイルを書き込む

  1. 利用可能な配布設定を確認します。これらは、master_preferencesファイルの匿名オブジェクト内に含まれるdistributionオブジェクトのプロパティです。次の設定リストは、2つのChromiumソースファイルを組み合わせてコンパイルしたものです: master_preferences_constants.h および master_preferences_constants.cc in / 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"
  }
}
  1. 利用可能な非配布設定を確認します。これらの設定は、JSONのdistributionオブジェクトのoutsideになります。これらは、ユーザーがChromeを初めて実行するときにユーザープロファイルに適用されます。設定の完全なリストは、Chromiumソースファイル pref_names.h および pref_names.cc in / 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.
  1. 必要な設定を選択し、独自のカスタム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
  }
}
  1. http://jslint.com/ を参照し、JSONを[ソース]ボックスにコピーして、[JSLint]ボタンをクリックします。これにより、JSONが適切であることを確認できます。これは、不正な形式のJSONをインストーラーにフィードすることになるため、重要です予期しない結果または望ましくない結果、あるいはその両方が生成されます。検証済みのファイルを保存して、後で参照してください。

  2. 検証済みの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}}
  1. JSLintを通じてスペースなしで新しいJSONを実行し、エラーが発生していないことを確認します。

  2. 検証済みのJSONをスペースや改行なしでURLエンコーダーにコピーします。私は RLエンコード/デコードオンライン を使用しました。エンコードされた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インストーラトランスフォーメーションを作成する

  1. Orcaを起動します。
  2. ダウンロードしたChrome for Business MSIファイルを読み取り専用で開きます。 (実際のファイルは編集できると思いますが、変換を使用するのが好きなので、うまく行かない場合は常にベンダー提供のファイルをベースラインとして使用します。)Business 38 64ビット用にChromeをダウンロードし、ファイル名はgooglechromestandaloneenterprise64.msiでした。
  3. Transformメニューで、New Transformを選択します。これで、新しい変換ファイルを編集しているため、すべてのWindowsインストーラーデータベーステーブルを編集できます。
  4. プロパティテーブルを選択します。
  5. [プロパティ]列を右クリックし、[行の追加]をクリックします。プロパティをMASTER_PREFERENCESに設定し、値をURLエンコードされたJSONに設定します。このコードは展開中に適用され、インストーラーによってインストールのmaster_preferencesファイルとして保存されます。
  6. CustomActionテーブルを選択し、BuildInstallCommandアクションを見つけます。
  7. BuildInstallCommandアクションの[ターゲット]セルをダブルクリックして、編集可能にします。
  8. テキストの終わり近くで、installerdata=に続く既存のエンコードされたJSONを削除し、角かっこで囲んだ新しいプロパティ名に置き換えます。必ず終了引用符を保持してください。次のようになります。installerdata=[MASTER_PREFERENCES]"
  9. Enterキーを押してセルの編集を終了します。
  10. Transformメニューで、Generate Transform…をクリックして、新しいMSTファイルを保存します。私はE:\Chrome for Business 38 (64-bit)\MasterPreferences.mstとして保存しました。
  11. Orcaを終了します。

注:カスタムアクションにJSONを直接挿入するのではなく、プロパティを使用する必要があります。これは、 カスタムアクションの[ターゲット]フィールドは255文字の長さ です。そのテーブルのスキーマは変更できず、ほとんどのカスタムJSONはプロパティ値の長さに実用的な制限がないため、プロパティを使用すると、長さの制限を回避できます。

変換でChromeをインストールします

  1. 管理者権限でコマンドプロンプトウィンドウを開きます。
  2. TRANSFORMSプロパティをファイル名に設定することにより、Google Chromeを変換でインストールします。ロギングをオンにして、問題を見つけやすくします。私のサンプルフォルダーを使用して、管理者としてログインしていると仮定します: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. Chromeがエラーなしでインストールされた場合は、別の非管理ユーザーとして実行して、設定が正しく反映されていることを確認してください。
  4. 最後に、インストーラーと変換ファイルを使用してデプロイメントシステムを構成します。私は System Center Configuration Manager 2012 R2 を使用しています。このアプリケーションのコマンドラインは次のようになります。msiexec /package "googlechromestandaloneenterprise64.msi" /quiet TRANSFORMS="MasterPreferences.mst" /l*v "%TEMP%\ChromeInstallationLog.txt"これにより、Configuration Managerのソフトウェアセンターアプリケーションを使用してアプリストアのようなエクスペリエンスが得られ、デスクトップの制御はそのままになります。タスクバーアイコンはユーザーのみで表示され、煩わしい初回実行エクスペリエンスを回避します。これは一般的に好ましいユーザーエクスペリエンスですが、コンピューターラボなど、再起動するたびにハードドライブの変更が失われる一般向けのコンピューターで特に役立ちます。なので、すべてのログオンは「最初の」ログオンです。

ノート

Googleの master_preferencesファイルのドキュメント も参照してください。これは、使用可能な設定のサブセットをカバーしていますが、インストール中にマシンに設定を取得する方法を示していません。

MSIカスタマイズの可能性 を指摘してくれた [email protected] )に感謝します。ここでの私の目標は、その情報を拡張して包括的な説明とソリューション例を提供することでした。役立つことを願っています。

24
Jay Michaud

コメントを投稿するのに十分な担当者がいません。 Jayのガイドを使用して、ダウンロードしたファイルタイプを自動的に実行する際の問題を解決しました。そして、これは現時点でそれを行う唯一の方法に見えます:

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

-このリンクは、AFAIKが修正されていないバグを参照しています。レポーターは、GPOを介してd/lで自動的に実行される特定のファイルタイプを設定できるようにしたいと考えています。この使用例は、セキュリティへの影響を考慮して制限されていますが、エンタープライズ展開では必要になる場合があります。それは、master_preferencesを持つ.mstでJayのテクニックを使用して実現できます。 (チックのコメントに応じて編集)

私はあなたとトムトムに同意します、もっと簡単な方法があるはずです。ほとんどの場合、Googleの.admxで十分です。

0
usershmusername