답변:
Chrome 은 기본 사용자 환경 설정을 master_preferences 파일에 저장합니다 . 이것은 JSON 형식 의 텍스트 파일이며 distribution
설치 중에 읽을 설정이 포함 된 객체를 포함합니다. 기존 Chrome 설치에서이 파일을 편집해도 설치가 이미 그 시점에서 이미 발생했기 때문에 문제를 해결하지 못합니다. 해결책은 변환 파일을 사용하여 사용자 정의 된 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 파일의 익명 객체 안에 포함 된 객체의 속성입니다 . 다음 설정 목록은 / trunk / src / chrome / installer / util /의 두 개의 Chromium 소스 파일 master_preferences_constants.h 및 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을 실행할 때 사용자 프로필에 적용됩니다. 전체 설정 목록은 Chromium 소스 파일 pref_names.h 및 pref_names.cc 의 / 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.
{
"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
}
}
에 대한 검색 http://jslint.com/는 , 소스 상자에 JSON을 복사하고 JSLint 버튼을 클릭합니다. JSON이 양호한 지 확인합니다. 잘못된 JSON을 설치 프로그램에 제공하면 예기치 않은 결과 및 / 또는 원하지 않는 결과가 생성되므로 중요합니다. 나중에 참조 할 수 있도록 확인 된 파일을 저장하십시오.
확인 된 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}}
JSLint를 통해 공백없이 새 JSON을 실행하여 오류가 발생하지 않도록하십시오.
공백이나 줄 바꿈없이 확인 된 JSON을 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=
괄호 안의 새 속성 이름으로 바꿉니다. 닫는 인용 부호를 유지하십시오. 다음과 같아야합니다. installerdata=[MASTER_PREFERENCES]"
E:\Chrome for Business 38 (64-bit)\MasterPreferences.mst
.참고 : 사용자 정의 조치 대상 필드의 길이는 255 자 이므로 JSON을 사용자 정의 조치에 직접 삽입하는 대신 특성을 사용해야합니다 . 해당 테이블의 스키마는 변경할 수 없으며 대부분의 사용자 정의 JSON은 해당 필드의 전체 길이를 한도를 초과합니다. 속성 값의 길이에는 실질적인 제한이 없으므로 속성을 사용하면 길이 제한이 방지됩니다.
TRANSFORMS
속성을 파일 이름 으로 설정하여 변형 된 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"
msiexec /package "googlechromestandaloneenterprise64.msi" /quiet TRANSFORMS="MasterPreferences.mst" /l*v "%TEMP%\ChromeInstallationLog.txt"
이 기능을 사용하면 Configuration Manager의 Software Center 응용 프로그램에 대한 앱 저장소와 같은 환경을 제공하고 사용자 만 데스크톱 및 작업 표시 줄 아이콘을 제어 할 수 있으며 첫 번 째 실행 환경을 피할 수 있습니다. . 이것은 내가 선호하는 사용자 경험이지만 일반적으로 컴퓨터 실과 같이 컴퓨터를 다시 시작할 때마다 하드 드라이브 변경 사항이 손실되는 모든 공용 컴퓨터에 특히 유용합니다. 따라서 모든 로그온은 "첫 번째"로그온입니다.master_preferences 파일에 대한 Google 문서를 참조하십시오.이 파일 에는 사용 가능한 설정의 하위 세트가 포함되어 있지만 설치 중에 시스템으로 설정을 가져 오는 방법은 나와 있지 않습니다.
MSI 사용자 정의 가능성 을 지적한 grt@chromium.org 에게 감사합니다 . 여기서 목표는 정보를 확장하여 포괄적 인 설명과 예제 솔루션을 제공하는 것이 었습니다. 도움이 되길 바랍니다.
의견을 게시 할 담당자가 충분하지 않습니다. Jay의 가이드를 사용하여 다운로드 한 파일 형식을 자동으로 실행하는 데 문제가 발생했습니다. 그리고 이것은 현재 그것을 할 수있는 유일한 방법으로 보입니다.
https://bugs.chromium.org/p/chromium/issues/detail?id=476668
-이 링크는 AFAIK가 수정되지 않은 버그를 나타냅니다. 기자는 GPO를 통해 d / l에서 자동으로 실행되도록 특정 파일 형식을 설정할 수 있기를 원합니다. 보안상의 영향으로 인해 유스 케이스가 제한적이지만 엔터프라이즈 배치에서는 때때로 필요합니다. master_preferences와 함께 .mst에서 Jay의 기술을 사용하여 얻을 수 있습니다. (Chick의 의견에 따라 편집)
Tomtom에 동의합니다. 더 쉬운 방법이 있어야합니다. 대부분의 경우 Google의 .admx이면 충분합니다.