> ## Documentation Index
> Fetch the complete documentation index at: https://docs.requestly.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Deploy on Windows

> Deploy the Requestly API Client to Windows devices as an MSIX package, and control its automatic updates with a policy.

As an IT administrator, you can deploy the Requestly API Client to Windows devices as an MSIX package, and control its automatic updates with a policy.

> [!NOTE]
>
> This guide covers Windows only. An enterprise build for macOS and Linux is coming soon.

## Download

MSIX gives reliable installs and automatic updates in enterprise environments. The Requestly API Client MSIX installs with PowerShell, DISM or an MDM. See Microsoft's documentation for an [overview of MSIX packages](https://learn.microsoft.com/en-us/windows/msix/overview#key-features).

> [card]
>
> [Requestly API Client MSIX (x64)](https://get.requestly.com/win-msix-x64)

## Before you start

### System requirements

* Windows 10 version 21H2 (build 19044) or later, or Windows 11. See [MSIX supported platforms](https://learn.microsoft.com/en-us/windows/msix/supported-platforms).
* x64.

### Device settings

Check these settings on each device before you deploy. To read the current values on a device, see [Check the install policies on a device](#check-the-install-policies-on-a-device).

| Setting | Required state | Needed for |
| - | - | - |
| [Allow all trusted apps to install](https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-applicationmanagement#allowalltrustedapps) (`HKLM\SOFTWARE\Policies\Microsoft\Windows\Appx\AllowAllTrustedApps`) | Not `0` (not Disabled) | Install |
| [Prevent non-admin users from installing packaged Windows apps](https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-applicationmanagement#blocknonadminuserinstall) (`HKLM\SOFTWARE\Policies\Microsoft\Windows\Appx\BlockNonAdminUserInstall`) | Not `1` (not Enabled), or install for all users with DISM or an [MDM](#deploy-via-mdm) | Install by a standard user |
| [Delivery Optimization](https://learn.microsoft.com/en-us/windows/deployment/do/waas-delivery-optimization) service (DoSvc) | Present on the device (any startup type or download mode) | Updates |
| `assets.requestly.com` | Reachable for users and SYSTEM, with HTTP Range requests | Updates |
| [AppLocker](https://learn.microsoft.com/en-us/windows/security/application-security/application-control/app-control-for-business/applocker/packaged-apps-and-packaged-app-installer-rules-in-applocker) or [App Control](https://learn.microsoft.com/en-us/windows/security/application-security/application-control/app-control-for-business/design/select-types-of-rules-to-create#app-control-for-business-file-rule-levels) | Allow publisher BrowserStack, Inc. with no upper version | Install, start, updates |
| [Run only specified Windows applications](https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-admx-shellcommandpromptregedittools#restrictapps) | `Requestly API Client.exe` on the list | Start |
| [Archive infrequently used apps](https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-applicationmanagement#allowautomaticapparchiving) (`HKLM\SOFTWARE\Policies\Microsoft\Windows\Appx\AllowAutomaticAppArchiving`) | `0` (Disabled), recommended on Windows 11 | Keeping the app installed |

> [!NOTE]
>
> The app is not in the Microsoft Store. If Windows archives it, Windows cannot restore it. Set **Archive infrequently used apps** to Disabled to keep the app installed.

## Choose a deployment method

| Method | Installs for | Admin rights | Locked-down devices\* | Use it when |
| - | - | - | - | - |
| [PowerShell](#deploy-the-app) | One user | Not needed | No | You test on one device, or a user installs the app |
| [DISM](#deploy-the-app) | All users on the device | Needed | Yes | You install on each device, or from a startup script |
| [Group Policy logon task](#deploy-the-app) | Each user, at sign-in | Not needed | No | You use Group Policy, and users can install apps |
| [MDM](#deploy-via-mdm), with device context | All users on the device | Done by the MDM | Yes | You manage devices with Microsoft Intune or another MDM |

\* Devices that block installs by standard users. If you do not know whether your devices do this, see [Check the install policies on a device](#check-the-install-policies-on-a-device).

## Deploy the app

In each command, replace `<path>`, `<server>` and `<share>` with your own values. The commands use `requestly-api-client-2610.15.1-win-x64.msix` as an example. Replace it with the file name of the version you downloaded.

> [tab] PowerShell (one user)
>
> Run [Add-AppxPackage](https://learn.microsoft.com/en-us/powershell/module/appx/add-appxpackage) as the user. You do not need admin rights, unless the device blocks installs by standard users. In that case, use DISM or an [MDM](#deploy-via-mdm).
>
> ```powershell theme={null}
> Add-AppxPackage -Path "<path>\requestly-api-client-2610.15.1-win-x64.msix"
> ```

> [tab] DISM (all users)
>
> This provisions the app for current and future users on the device, with [Add-AppxProvisionedPackage](https://learn.microsoft.com/en-us/powershell/module/dism/add-appxprovisionedpackage) or [DISM](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/dism-app-package--appx-or-appxbundle--servicing-command-line-options). Run it as admin, or from a [Group Policy startup script](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/dn789196\(v=ws.11\)). This method also works on devices that block installs by standard users.
>
> In PowerShell:
>
> ```powershell theme={null}
> Add-AppxProvisionedPackage -Online -PackagePath "<path>\requestly-api-client-2610.15.1-win-x64.msix" -SkipLicense
> ```
>
> Without PowerShell, for example in a `.cmd` startup script:
>
> ```cmd theme={null}
> DISM /Online /Add-ProvisionedAppxPackage /PackagePath:"<path>\requestly-api-client-2610.15.1-win-x64.msix" /SkipLicense
> ```

> [tab] Group Policy logon task
>
> The task installs the app as the signed-in user. On devices that block installs by standard users, it fails with `0x80070005`. On these devices, use DISM or an [MDM](#deploy-via-mdm).
>
> **1. Create the task**
>
> Go to **User Configuration → Preferences → Control Panel Settings → Scheduled Tasks**.
>
> **2. Set the trigger and context**
>
> Set the trigger to **At log on**, and select **Run in logged-on user's security context**.
>
> **3. Set the action**
>
> The action runs a script from a share. The script installs the app only when it is not there yet.
>
> ```cmd theme={null}
> powershell.exe -ExecutionPolicy Bypass -NoProfile -File "\\<server>\<share>\install.ps1"
> ```
>
> Save this as `install.ps1` on the share:
>
> ```powershell theme={null}
> if (-not (Get-AppxPackage com.requestly.api-client)) {
>   Add-AppxPackage -Path "\\<server>\<share>\requestly-api-client-2610.15.1-win-x64.msix"
> }
> ```

After you deploy, [verify the install](#verify-the-install).

## Deploy via MDM

> [!WARNING]
>
> **Important:** Deploy the app to the device, not to each user. An MDM install in user context installs the app as each user. On devices that block installs by standard users, this install fails for standard users. An install for the device installs the app for all users, and it works on these devices.

You can deploy the app with your enterprise software distribution tools. Choose the method that matches your tools:

* [Microsoft Intune](https://learn.microsoft.com/en-us/intune/app-management/deployment/add-lob-windows)
* [Microsoft Configuration Manager (SCCM)](https://learn.microsoft.com/en-us/intune/configmgr/apps/get-started/create-and-deploy-an-application)
* [Group Policy](#deploy-the-app)
* [Deployment Image Servicing and Management (DISM.exe)](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/dism-app-package--appx-or-appxbundle--servicing-command-line-options)
* [PowerShell scripts](https://learn.microsoft.com/en-us/powershell/module/dism/add-appxprovisionedpackage)

## Verify the install

Run this in PowerShell as admin:

```powershell theme={null}
Get-AppxPackage -AllUsers com.requestly.api-client | Select-Object Name, Version
```

The output shows `com.requestly.api-client` and the installed version. To check only the current user, run the command without `-AllUsers` and without admin rights.

After an install for all users (DISM, or an MDM with device context), Windows registers the app for each user at their next sign-in. Until then, the command above can show no user. To check that the app is provisioned on the device, run this as admin:

```powershell theme={null}
Get-AppxProvisionedPackage -Online | Where-Object DisplayName -eq 'com.requestly.api-client' | Select-Object DisplayName, Version
```

If both commands show nothing, the app is not installed: see [Troubleshooting](#troubleshooting).

## Install location and user data

The app installs to this folder, for version `X.Y.Z.0` on an x64 device:

```text theme={null}
C:\Program Files\WindowsApps\com.requestly.api-client_X.Y.Z.0_x64__kmhnz6pyr4q72
```

User data and logs stay in the same folder as with the `.exe` installer, so users keep their data when they move to the MSIX:

```text theme={null}
%APPDATA%\Requestly API Client
```

The app log is `%APPDATA%\Requestly API Client\logs\main.log`.

## Configure automatic updates

Set the policy in Computer Configuration (HKLM), before the app first starts.

> [tab] Registry
>
> The policy lives in this key:
>
> ```text theme={null}
> HKEY_LOCAL_MACHINE\SOFTWARE\Policies\BrowserStack\Requestly API Client
> ```
>
> Set the value with [reg add](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/reg-add) or your management tool. This command turns automatic updates off:
>
> ```cmd theme={null}
> reg add "HKLM\SOFTWARE\Policies\BrowserStack\Requestly API Client" /v AutoUpdate /t REG_DWORD /d 0 /f
> ```
>
> This command puts the app on your company's own update schedule. Use the value that support gives you:
>
> ```cmd theme={null}
> reg add "HKLM\SOFTWARE\Policies\BrowserStack\Requestly API Client" /v ReleaseChannel /t REG_SZ /d "<value from support>" /f
> ```

> [tab] Group Policy
>
> **1. Get the template**
>
> Download the [ADMX template](https://assets.requestly.com/assets/desktop/policy-templates/requestly-api-client-policy-templates.zip).
>
> **2. Add it to your policy store**
>
> Add `RequestlyAPIClient.admx` and `en-US\RequestlyAPIClient.adml` to your [policy store](https://learn.microsoft.com/en-us/troubleshoot/windows-client/group-policy/create-and-manage-central-store).
>
> **3. Set the policy**
>
> Go to **Computer Configuration → Administrative Templates → BrowserStack → Requestly API Client → Automatic updates** (**Automatic updates** and **Release channel** are in this folder).

> [tab] Intune
>
> **1. Import the template**
>
> Go to **Devices → Configuration → [Import ADMX](https://learn.microsoft.com/en-us/intune/device-configuration/settings-catalog/import-custom-admx-templates)**, and import the same two files from the [ADMX template](https://assets.requestly.com/assets/desktop/policy-templates/requestly-api-client-policy-templates.zip).
>
> **2. Create a profile**
>
> Create an **Imported ADMX** profile with the Computer Configuration setting.
>
> **3. Assign it**
>
> Assign the profile to a device group.

### Supported settings

| Setting | Value |
| - | - |
| **AutoUpdate** Enables or disables automatic updates of the desktop app. | `REG_DWORD` `1`\* (enabled) `0` (disabled) |
| **ReleaseChannel** Puts the desktop app on your company's own update schedule. | `REG_SZ` Provided by support Not set, empty or `default`: standard release schedule |

\* Default. When the value is not set, or has any other type or value, updates stay on.

### Update on your own schedule

By default, the app gets each new version on the standard release schedule. If you need updates at your own pace, contact support.

Support gives you a `ReleaseChannel` value. Set it in the same policy key as `AutoUpdate`:

```cmd theme={null}
reg add "HKLM\SOFTWARE\Policies\BrowserStack\Requestly API Client" /v ReleaseChannel /t REG_SZ /d "<value from support>" /f
```

With Group Policy or Intune, set **Release channel** from the [ADMX template](#configure-automatic-updates). If you imported the template into Intune before it had this setting, use the registry instead.

* `AutoUpdate` set to `0` turns all updates off, also when `ReleaseChannel` is set.
* If devices on your channel stop getting updates, contact support.
* If your company's update schedule is not available or not valid, the app uses the standard release schedule until the next app start. In that time it can install a newer standard version. It does not go back to an older version later.
* To go back to the standard schedule, delete the value or set it to `default`.
* Older versions of the app ignore `ReleaseChannel`.

### Know when a new version is out

Each release is listed in the [Changelogs](https://docs.requestly.com/changelogs.md). To get notified, subscribe to the [RSS feed](https://docs.requestly.com/changelogs/rss.xml).

## Good to know

* An app installed for all users (DISM, or an MDM with device context) reads only HKLM. A User Configuration policy has no effect on it.
* To move from the `.exe` installer: remove its assignment, uninstall it for each user, then install the MSIX.

## Troubleshooting

For an error that is not listed here, refer to the [MSIX troubleshooting guide](https://learn.microsoft.com/windows/msix/msix-troubleshooting-guide). If you are still blocked, contact support.

### Check the install policies on a device

Windows keeps a policy in a different place for each source. Run these in PowerShell:

```powershell theme={null}
# Set by Group Policy or the registry
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Appx

# Set by an MDM, such as Microsoft Intune
reg query HKLM\SOFTWARE\Microsoft\PolicyManager\current\device\ApplicationManagement
```

Check `BlockNonAdminUserInstall` and `AllowAllTrustedApps` in both results. If a value is not there, no policy sets it, and the Windows default applies.

## FAQs & Errors

> [accordion] Deployment operation failed (0x80070005)
>
> The device blocks installs of packaged apps by standard users (`BlockNonAdminUserInstall` is `1`). The PowerShell (one user) and Group Policy logon task methods install as the user, so they fail.
>
> Do one of these:
>
> * Install the app for all users with [DISM](#deploy-the-app), or with your [MDM](#deploy-via-mdm) for the device.
> * Set **Prevent non-admin users from installing packaged Windows apps** to Disabled or Not Configured. See [Device settings](#device-settings).
>
> After an install for all users, automatic updates still work for each user.
>
> If `BlockNonAdminUserInstall` is not `1` on the device, refer to the [MSIX troubleshooting guide](https://learn.microsoft.com/windows/msix/msix-troubleshooting-guide) for the other causes of this error.

> [accordion] You need either a Windows developer license or a sideloading-enabled system (0x80073CFF)
>
> The device does not allow apps from outside the Microsoft Store. [Check the install policies](#check-the-install-policies-on-a-device): if `AllowAllTrustedApps` is `0`, set **Allow all trusted apps to install** to a value other than Disabled, then install again. See [Device settings](#device-settings).
>
> If `AllowAllTrustedApps` is not `0`, refer to the [MSIX troubleshooting guide](https://learn.microsoft.com/windows/msix/msix-troubleshooting-guide) for the other causes of this error.

> [accordion] The app does not install or start with AppLocker or App Control
>
> These policies block packaged apps that they do not allow. Allow the publisher **BrowserStack, Inc.** with no upper version limit, so that the rule also covers future updates. Do not allow the app by its file path, because the path changes with each version.

> [accordion] Intune shows the app as Failed (0x87D1041C) after an update
>
> Intune looks for the exact version that it deployed. After the app updates itself, Intune does not find that version and shows **Failed**.
>
> First, [verify the install](#verify-the-install) on the device:
>
> * If a newer version is installed, the app is not affected. To clear the status, upload the version that the devices run as new content for the app in Intune.
> * If the app is not installed, for example because a user removed it, deploy it again.

> [accordion] Can automatic updates be turned off?
>
> Yes. Set `AutoUpdate` to `0` with a registry value, Group Policy or Intune. See [Configure automatic updates](#configure-automatic-updates). When updates are off, the app shows no update prompt, and **Check for Updates** is disabled.

> [accordion] Can we control when updates reach our devices?
>
> Yes. Contact support. Support gives you a `ReleaseChannel` value that puts your devices on your company's own update schedule. See [Update on your own schedule](#update-on-your-own-schedule).

> [accordion] Does an update close the app while a user works?
>
> No. When you deploy a new version while the app is open, the app keeps running. The user gets the new version the next time they start the app.

> [accordion] Can a later deployment downgrade an app that updated itself?
>
> No. If the app has already updated itself to a newer version, a later DISM or Intune deployment of an older version does not downgrade it.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.