You can enforce the installation of specific Google Chrome extensions across your managed macOS devices by deploying a custom configuration profile through Addigy. This method installs extensions silently without requiring any action from the end user.
Prerequisites
- Google Chrome must already be installed on the target devices before the profile is deployed.
- The profile will be deployed as a Device-scoped custom profile via the Addigy Catalog.
Step 1: Find Your Extension ID
Each Chrome extension has a unique ID that you'll need to include in the profile. To find it, open the extension's listing in the Chrome Web Store and copy the ID from the end of the URL.
For example, in the URL below, the extension ID is the string of characters at the end:
chrome.google.com/webstore/detail/extension-name/cfhdojbkjhnklbpkdaibdccddilifddb
Step 2: Customize the Profile Template
Copy the XML template below into a text editor and make the following substitutions before saving:
- Replace
YOUR COMPANY(in thePayloadOrganizationfield) with your organization's name. - Replace
CONFIGURATION NAME(in thePayloadDisplayNamefield) with the name you'd like to appear in Addigy. - Replace
PLACE EXTENSION IDENTIFIER HERE(in theExtensionInstallForcelistarray) with your extension's ID, keeping the update URL that follows the semicolon unchanged.
<?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>PayloadIdentifier</key>
<string>com.company.profile.chrome</string>
<key>PayloadRemovalDisallowed</key>
<true/>
<key>PayloadScope</key>
<string>System</string>
<key>PayloadType</key>
<string>Configuration</string>
<key>PayloadUUID</key>
<string>2016-09-12-07-13</string>
<key>PayloadOrganization</key>
<string>YOUR COMPANY</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadDisplayName</key>
<string>CONFIGURATION NAME</string>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadType</key>
<string>com.apple.ManagedClient.preferences</string>
<key>PayloadVersion</key>
<integer>1</integer>
<key>PayloadIdentifier</key>
<string>com.normandale</string>
<key>PayloadUUID</key>
<string>121-qasd</string>
<key>PayloadEnabled</key>
<true/>
<key>PayloadDisplayName</key>
<string>Custom: (com.google.Chrome)</string>
<key>PayloadContent</key>
<dict>
<key>com.google.Chrome</key>
<dict>
<key>Forced</key>
<array>
<dict>
<key>mcx_preference_settings</key>
<dict>
<key>ExtensionInstallForcelist</key>
<array>
<string>PLACE EXTENSION IDENTIFIER HERE;https://clients2.google.com/service/update2/crx</string>
</array>
</dict>
</dict>
</array>
</dict>
</dict>
</dict>
</array>
</dict>
</plist>Adding Multiple Extensions
To enforce more than one extension, add a new <string> entry inside the ExtensionInstallForcelist array for each additional extension. Each entry follows the same format — extension ID followed by the update URL, separated by a semicolon:
<key>ExtensionInstallForcelist</key> <array> <string>EXTENSION_ID_ONE;https://clients2.google.com/service/update2/crx</string> <string>EXTENSION_ID_TWO;https://clients2.google.com/service/update2/crx</string> </array>
Note: Each
<string>entry must be on its own line within the array. Do not separate entries with blank lines.
Step 3: Save the File
Once you've made your changes, save the file with a .mobileconfig extension — for example, ChromeExtensions.mobileconfig.
Step 4: Upload to Addigy
- In Addigy, navigate to Catalog > Device Settings.
- Click New > Custom Profile.
- Click the Select .mobileconfig file button and upload your
.mobileconfigfile.
Step 5: Assign the Profile to a Policy
- In the Catalog, locate the profile you just uploaded.
- Click Actions ... Assignments.
- Select the policies you want to receive the profile.
The extension will be silently installed on all devices in the assigned policies the next time they check in.
Troubleshooting
Error: "Error Storing Payload: Duplicate Entity"
This error occurs when the same profile is uploaded to the Addigy Catalog more than once. Each profile uploaded to the Catalog must have a unique PayloadUUID. To resolve this, generate a new UUID at uuidgenerator.net and replace the value in the PayloadUUID field before uploading again.