Skip to main content
Solved

Force Install Chrome Extensions

  • April 21, 2022
  • 15 replies
  • 539 views

Forum|alt.badge.img+10

I need to force install a Chrome Extension.

I have looked in Jamf Nation for solution but latest ones were in 2017 and they currently do not work (from my testing).

Has anyone got them to work with Monterey?

Best answer by sdagley

@sgiesbrecht You need a Configuration Profile with an Application & Custom Settings payload for the com.google.Chrome preference domain and a PLIST in the form:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>ExtensionInstallForcelist</key> <array> <string>EXTENSION IDENTIFIER GOES HERE</string> </array> </dict> </plist>

15 replies

sdagley
Forum|alt.badge.img+25
  • Jamf Heroes
  • 3567 replies
  • Answer
  • April 21, 2022

@sgiesbrecht You need a Configuration Profile with an Application & Custom Settings payload for the com.google.Chrome preference domain and a PLIST in the form:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>ExtensionInstallForcelist</key> <array> <string>EXTENSION IDENTIFIER GOES HERE</string> </array> </dict> </plist>

Forum|alt.badge.img+10
  • Author
  • Valued Contributor
  • 134 replies
  • April 21, 2022

@sgiesbrecht You need a Configuration Profile with an Application & Custom Settings payload for the com.google.Chrome preference domain and a PLIST in the form:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>ExtensionInstallForcelist</key> <array> <string>EXTENSION IDENTIFIER GOES HERE</string> </array> </dict> </plist>

I found my problem, I was naming the Preference Domain com.google.Chrome.<Extension name> not com.google.Chrome.

Now working,

Thx @sdagley 


Forum|alt.badge.img+8
  • Valued Contributor
  • 107 replies
  • April 22, 2022

As this is something I have to do monthly I highly recommenced using the Chrome JSON file to save time


Forum|alt.badge.img+10
  • Valued Contributor
  • 230 replies
  • April 26, 2022

Or... if you're a Google Workspace shop, enroll your Chrome browser and manage all its settings there.

Caveat being that I can more easily mass edit the XML or JSON of a group of extensions to be installed / allowed / denied in the Jamf Pro config profile editor than in Google Workspace... but that's usually a set once, occasionally modify one or two items type thing so you're still probably better off generally doing it through Workspace Admin.


Forum|alt.badge.img+10
  • Author
  • Valued Contributor
  • 134 replies
  • April 26, 2022

@efil4xiN not familiar with JSON,  can you send an example if possible and Steps to deploy

Client doesn't want to use Google Workspace @gabester so I'm stuck with the JSON 

Note, the above solution does work but will not install automatically, only through SS


Forum|alt.badge.img+8
  • Valued Contributor
  • 107 replies
  • April 29, 2022

Here is the link to JAMF JSON  files


Forum|alt.badge.img
  • New Contributor
  • 1 reply
  • October 18, 2023

@sgiesbrecht You need a Configuration Profile with an Application & Custom Settings payload for the com.google.Chrome preference domain and a PLIST in the form:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>ExtensionInstallForcelist</key> <array> <string>EXTENSION IDENTIFIER GOES HERE</string> </array> </dict> </plist>

I'm trying to create a list of multiple forced extensions. I got it to the point that the plist includes multiple extensions by adding additional extension IDs to the Extension Install Forcelist in the form editor, but only end up with one of the extensions forcibly installed. At some point I realized that it seems to only accept the first ID in the list.

I could not, however, figure out how to configure the JSON to accept multiple extension IDs, which may be the problem?

eg, the json:

{ "title": "Google Chrome Extensions (com.google.Chrome)", "description": "Install extensions in Google Chrome", "properties": { "ExtensionInstallForcelist": { "title": "Extension Install Forcelist", "description": "Add extension IDs. Paste the extension ID in front of the default text.", "property_order": 5, "type": "array", "items": { "title": "Extension ID", "default": "extension id here", "type": "string" } } } }


and the plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>ExtensionInstallForcelist</key>
    <array>
      <string>1st extension id here</string>
      <string>2nd extension id here</string>
    </array>
  </dict>
</plist 

 


Forum|alt.badge.img+3
  • New Contributor
  • 2 replies
  • February 13, 2024

I have a further question for this. 

Installation has worked fine and it has been forced on all users. Question is, we have some internal sites that use Chrome, where the Extension is hindering the work. Is it possible to be able to turn off the extensions. With the current setting, the extension is always on. 


Forum|alt.badge.img
  • New Contributor
  • 1 reply
  • April 10, 2024

I'm trying to create a list of multiple forced extensions. I got it to the point that the plist includes multiple extensions by adding additional extension IDs to the Extension Install Forcelist in the form editor, but only end up with one of the extensions forcibly installed. At some point I realized that it seems to only accept the first ID in the list.

I could not, however, figure out how to configure the JSON to accept multiple extension IDs, which may be the problem?

eg, the json:

{ "title": "Google Chrome Extensions (com.google.Chrome)", "description": "Install extensions in Google Chrome", "properties": { "ExtensionInstallForcelist": { "title": "Extension Install Forcelist", "description": "Add extension IDs. Paste the extension ID in front of the default text.", "property_order": 5, "type": "array", "items": { "title": "Extension ID", "default": "extension id here", "type": "string" } } } }


and the plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>ExtensionInstallForcelist</key>
    <array>
      <string>1st extension id here</string>
      <string>2nd extension id here</string>
    </array>
  </dict>
</plist 

 


@araleon Did you find any solution to it? I'm also facing the same issue. I'm trying to install two managed extensions. However the two extensions got installed but after the device reboot it only accept one extension. 


mm2270
Forum|alt.badge.img+24
  • Legendary Contributor
  • 7886 replies
  • September 26, 2024

@araleon Did you find any solution to it? I'm also facing the same issue. I'm trying to install two managed extensions. However the two extensions got installed but after the device reboot it only accept one extension. 


@diteshmeher  or @araleon Did either of you ever figure this out? I'm at a point where I need to force more than one extension for Chrome and can't get it to work. I have a hard time believing the ExtensionInstallForceList can only accept one extension. If so, then it's a very poorly named config profile key. It makes it seem like you can add several in, but it doesn't seem to work that way.

Looking for some kind of solution.


usblars
Forum|alt.badge.img+3
  • New Contributor
  • 4 replies
  • September 26, 2024

@diteshmeher  or @araleon Did either of you ever figure this out? I'm at a point where I need to force more than one extension for Chrome and can't get it to work. I have a hard time believing the ExtensionInstallForceList can only accept one extension. If so, then it's a very poorly named config profile key. It makes it seem like you can add several in, but it doesn't seem to work that way.

Looking for some kind of solution.


hey Mike,

 

what extensions? are you uisng the JSON. I have deployed over 200 extensions


Forum|alt.badge.img
  • New Contributor
  • 1 reply
  • July 23, 2025

@usblars I’m seeing what Mike (​@mm2270) and others are seeing where specifying multiple Chrome extensions does not appear to work for specified items. I’ve been using xml (vs json), so not sure if Chrome handles json more consistently or not?

Per the Chrome Enterprise Help re: Set Chrome app and extension policies (Mac), they state…

Set Chrome app and extension policies (Mac)

Applies to Mac users who sign in to a managed account on Chrome browser.

As an administrator, you can automatically install Chrome apps and extensions on users' computers. You can also control which apps or extensions users can install. You set the default policies for all apps and extensions. Then, if you want to customize policies for specific apps or extensions, you can override your defaults.

 

We have never explicitly set the ExtensionSettings key on our Mac; only specific custom keys per app per config profile like…

  • ExtensionInstallForcelist

  • ExtensionInstallBlocklist

I don’t any mention from Google support docs stating that multiple (“duplicate”) payloads can/not write to same com.google.Chrome domain like Apple’s Device management payload list for Mac computers does (which mentions payloads that allow “duplicates”).

 

Anyone else having success or suggestions to resolve this issue?


usblars
Forum|alt.badge.img+3
  • New Contributor
  • 4 replies
  • July 25, 2025

@jeremy.dybash,

we are still using the same JSON that we have been using for the past couple of years and it is working

 

<key>ExtensionInstallForcelist</key>    <array>      <string>ppnbnpeolgkicgegkbkbjmhlideopiji</string>      <string>miinajhilmmkpdoaimnoncdiliaejpdk</string>    </array>

 

which force installs Nexthink and Microsoft SSO.Outside of the Jamf Install profile, this is the only profile we use. I have seen issues where there were multiple  profiles, so we unified them all into the JSON and have been fine for a few years now. We manage 256 and counting extensions

 

 

 


usblars
Forum|alt.badge.img+3
  • New Contributor
  • 4 replies
  • July 25, 2025

 


Forum|alt.badge.img
  • New Contributor
  • 2 replies
  • August 12, 2025

I am still having issues with forcing extensions could some one that has it working add some screenshots of the entire flow from start to finish on how to force install the extensions.  I have followed all the steps above and I am not getting anywhere with this process.  I am using the .json from here:https://github.com/Jamf-Custom-Profile-Schemas/ProfileManifestsMirror/blob/main/manifests/ManagedPreferencesApplications/com.google.Chrome.json. It was last updated 10 months ago. I created a stand alone plist file and removed the json and the browser worked as expected and force installed the extensions.  The extensions in question are Acrobat, Docusign and Grammarly.  When I add the json back to the config profile the extensions are now blocked.  i have added screen shots of what I have configured.  Let em know if you need further information to help me with this issue.  Thanks