IT Mass Deployment (Non-Store)
Audience: IT and endpoint administrators deploying Pyze to all client machines when the extension is not installed from the Chrome Web Store or Edge Add-ons. Pyze supplies a signed package; you host it internally and force-install it by policy.
The native host is a small local helper that reads the signed-in OS username and hands the extension a hashed identifier (see Privacy note).
Two components go to every machine:
| Component | Deployed how |
|---|---|
| Native host (binary + preconfigured manifest) | Copy to a fixed path and register (Step 1) |
Extension (signed .crx + update.xml) |
Hosted on your HTTPS server, force-installed by policy (Steps 2 and 3) |
If your environment can install from the store, the store guide is simpler.
Step 1: Install the Native Host (Machine-Wide)
Use the package for the target OS: pyze-native-host-<customer>-windows.zip or pyze-native-host-<customer>-macos.zip. Run as Administrator or system (Intune, SCCM, Jamf).
Copy pyze-native-host-win-x64.exe and com.pyze.host.json to C:\Program Files\Pyze\, then register the manifest for both browsers:
reg add "HKLM\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.pyze.host" /ve /t REG_SZ /d "C:\Program Files\Pyze\com.pyze.host.json" /f
reg add "HKLM\SOFTWARE\Microsoft\Edge\NativeMessagingHosts\com.pyze.host" /ve /t REG_SZ /d "C:\Program Files\Pyze\com.pyze.host.json" /f
# Create the folders; none of them exist on a fresh Mac
mkdir -p "/Library/Application Support/Pyze" \
"/Library/Google/Chrome/NativeMessagingHosts" \
"/Library/Microsoft/Edge/NativeMessagingHosts"
install -m 755 pyze-native-host-macos-arm64 "/Library/Application Support/Pyze/pyze-native-host"
xattr -d com.apple.quarantine "/Library/Application Support/Pyze/pyze-native-host" 2>/dev/null || true
# Register the manifest for both browsers
cp com.pyze.host.json "/Library/Google/Chrome/NativeMessagingHosts/"
cp com.pyze.host.json "/Library/Microsoft/Edge/NativeMessagingHosts/"
Use pyze-native-host-macos-x64 on Intel Macs.
Step 2: Host the Extension Package
Pyze ships pyze-<customer>-<version>.crx and update.xml, and gives you the extension ID with the package. The package is signed with a fixed key, so the ID never changes between versions, and the native host from Step 1 already trusts it.
Put both files on an internal HTTPS server that every endpoint can reach (office, VPN, Citrix):
- The certificate must be trusted by the endpoints. Allow anonymous GET with no sign-in redirect. SharePoint, OneDrive, and Teams links do not work.
- Serve
.crxasapplication/x-chrome-extension. Do not usefile://or UNC paths. - Edit the one URL in
update.xmlto point at your location:
<updatecheck codebase="https://<host>/pyze/pyze-<customer>-<version>.crx" version="<version>" />
Step 3: Force-Install by Policy
Set the force-install policy with this value (extension ID, semicolon, update.xml URL):
<extension-id>;https://<host>/pyze/update.xml
| Browser | Policy |
|---|---|
| Chrome | ExtensionInstallForcelist. GPO: Google Chrome › Extensions › Configure the list of force-installed apps and extensions. Registry: HKLM\SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist, value 1 |
| Edge | ExtensionInstallForcelist. GPO: Microsoft Edge › Extensions › Control which extensions are installed silently. Registry: HKLM\SOFTWARE\Policies\Microsoft\Edge\ExtensionInstallForcelist, value 1 |
| macOS | MDM profile key ExtensionInstallForcelist (array) in com.google.Chrome and com.microsoft.Edge |
Managed devices only
A non-store force-install is honoured only on managed devices (domain-joined, MDM-enrolled, or in Chrome Browser Cloud Management). Elsewhere the entry is ignored.Verify on a client
- Open
chrome://policyand click Reload policies. The entry should be listed without error. - Open
chrome://extensions. Pyze <Customer> should appear with the ID above and the label Installed by your organization. - If the extension is missing, open the
update.xmlURL in the browser on that machine. It must load with no redirect or certificate warning.
Updates and Uninstall
Extension: Pyze sends a new .crx and update.xml. Upload the .crx, edit the codebase URL in the new update.xml to your location exactly as in Step 2, then replace the old update.xml. Browsers update silently within a few hours, with no policy change. Never re-zip or modify the .crx.
Native host: replace the binary at the install path.
Uninstall extension: delete the force-install entry. The browser removes the extension at the next policy refresh.
Uninstall native host (Windows): run the following, then delete C:\Program Files\Pyze\:
reg delete "HKLM\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.pyze.host" /f
reg delete "HKLM\SOFTWARE\Microsoft\Edge\NativeMessagingHosts\com.pyze.host" /f
Uninstall native host (macOS): delete the two com.pyze.host.json files and /Library/Application Support/Pyze/.
Privacy Note
The native host reads the OS username and sends only a SHA-256 hash of it. The username itself is never sent. The hash is a stable pseudonymous identifier, so the same user gets the same ID on every machine.