我希望能够在我的组织中部署Google Chrome for Business,而无需创build任何额外的快捷方式,也无需任何首次运行提示。 Chrome for Business安装程序是Windows安装程序文件(MSI),但它只是可执行安装程序的包装。 它没有像MSI安装程序那样可以在msiexec命令行中设置的诸如CreateDesktopShortcut之类的属性。 我如何定制我的安装? 我不想编写和维护安装脚本。
Google Chrome 将默认用户首选项存储在master_preferences文件中 。 这是一个JSON格式的文本文件,它包含一个distribution对象,其中包含将在安装过程中读取的设置。 在现有的Chrome安装中编辑此文件并不能解决问题,因为安装显然已经发生在这一点上。 解决scheme是使用转换文件将定制的master_preferences文件集成到Windows Installer安装过程中 。 采取以下步骤来完成这一点。
E:\Chrome for Business 38 (64-bit) 。 E:\WindowsSDK8.1 。 E:\WindowsSDK8.1.\sdksetup.exe 。 msiexec /package "C:\Program Files (x86)\Windows Kits\8.1\bin\x86\Orca-x86_en-us.msi" 。 distribution对象的属性,它包含在master_preferences文件中的匿名对象中。 以下设置列表是通过组合两个Chromium源文件进行编译的: master_preferences_constants.h和/ trunk / src / chrome / installer / util /中的 master_preferences_constants.cc 。 请注意,以下内容不是有效的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对象之外 。 当用户第一次运行Chrome时,它们将应用于用户configuration文件。 在/ trunk / src / chrome / common /中的Chromium源文件pref_names.h和pref_names.cc中提供了完整的设置列表。 该列表相当长,所以这里只显示一个子集。 { // *************** 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.
{ "distribution" : { "msi" : true, "system_level" : true, "verbose_logging" : true } }
您必须包含master_preferences文件中显示的所有这些属性,以便安装程序正常工作。 因此,你应该从这个开始,并添加到它。 我的文件如下所示。 我发现阻止Chrome询问用户configurationGoogle帐户的唯一方法是设置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复制到源框中,然后单击JSLintbutton。 这将validation你有良好的JSON。 这很重要,因为向安装程序馈送格式错误的JSON会产生意想不到的结果。 保存已validation的文件以供将来参考。
制作已validation的JSON的副本,并删除所有的空格和新行。 Chrome安装程序无法处理换行符; 包括换行符将导致安装损坏,必须通过registry手动和手动删除文件来删除。 删除空格可能不是必要的,但它与安装程序作者用默认的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}}
通过JSLint运行不带空格的新JSON,以确保您没有引入任何错误。
将不带空格或换行符的已validationJSON复制到URL编码器中。 我使用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
googlechromestandaloneenterprise64.msi 。 MASTER_PREFERENCES ,并将该值设置为您的URL编码的JSON。 此代码将在部署过程中应用,并由安装程序保存为安装的master_preferences文件。 installerdata=之后的现有编码JSON,并将其replace为括号中的新属性名称。 请务必保留收盘引号。 它应该看起来像这样: installerdata=[MASTER_PREFERENCES]" E:\Chrome for Business 38 (64-bit)\MasterPreferences.mst 。 注:有必要使用属性,而不是直接将JSON插入到自定义操作中,因为自定义操作“目标”字段仅为255个字符 。 该表的架构不能改变,大多数自定义的JSON会占用该字段的总长度超过限制。 使用属性避免了长度限制,因为对属性值的长度没有实际的限制。
TRANSFORMS属性设置为文件名来安装Google Chrome。 打开日志logging以帮助您find任何错误。 使用示例文件夹并假设您以pipe理员身份login: 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" msiexec /package "googlechromestandaloneenterprise64.msi" /quiet TRANSFORMS="MasterPreferences.mst" /l*v "%TEMP%\ChromeInstallationLog.txt"这给我的用户一个应用程序商店使用configurationpipe理器的软件中心应用程序的经验,将桌面和任务栏图标的控制权仅留给用户,避免了令人讨厌的首次运行体验。 这是我的首选用户体验,但对于面向公众的计算机尤其有用,例如在计算机实验室中,每次重新启动时硬盘驱动器的更改都会丢失,因此每次login都是“第一次”login。 另请参阅Google 关于master_preferences文件的文档 ,其中介绍了可用设置的子集,但并未告诉您如何在安装期间将设置置于计算机上。
感谢[email protected]指出MSI定制的可能性 。 我的目标是扩展这些信息,提供全面的解释和解决scheme。 我希望这是有帮助的。
我没有足够的代表发表评论。 我正在使用杰伊的指导来帮助一个问题得到一个下载的文件types自动运行。 而这似乎是目前唯一的方法:
https://bugs.chromium.org/p/chromium/issues/detail?id=476668
这个链接指的是AFAIK没有修复的bug。 记者希望能够通过GPO设置特定的文件types以d / l自动运行。 这个用例在安全性方面是有限的,但在企业部署中有时是必需的。 这可以通过在master.preferences中使用Jay的技术来实现。 (编辑回应小鸡的评论)
我赞同你Tomtom,应该有一个更简单的方法。 在大多数情况下,Google的.admx就足够了。