> ## 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.

## What to expect

* The app installs per user or for all users on a device, and updates itself through Windows.
* You can turn **automatic updates off with a registry value, Group Policy or Intune**.
* Users who move from the `.exe` installer keep their data and stay signed in.

## 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.

| 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 |
| [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 |
| Microsoft Store Install Service (InstallService) | Not Disabled (Manual is the default) | Double-click install with [App Installer](https://learn.microsoft.com/en-us/windows/msix/app-installer/app-installer-root) |
| [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.

## Deploy the app

Choose one method. 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.

**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.

```powershell theme={null}
Add-AppxPackage -Path "<path>\requestly-api-client-2610.15.1-win-x64.msix"
```

**Double-click (one user)**

The user opens the `.msix` file, and [App Installer](https://learn.microsoft.com/en-us/windows/msix/app-installer/app-installer-root) installs it.

The Microsoft Store Install Service must not be Disabled. If it is, run this as admin:

```powershell theme={null}
Set-Service InstallService -StartupType Manual
```

**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\)).

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
```

**Group Policy logon task**

**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"
}
```

**Microsoft Intune**

**1. Add the app**

Go to **Apps → Windows → Add → [Windows MSIX line-of-business app](https://learn.microsoft.com/en-us/intune/app-management/deployment/add-lob-windows)**, and upload the `.msix` file.

**2. Assign it**

Assign the app as **Required** to a device group, with **Install context** set to **Device**.

**3. Verify the install**

After the next device sync, run this as admin on a device:

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

## 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.

**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
```

**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**.

**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) |

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

## Good to know

* An app installed for all users (DISM, or Intune with Device context) reads only HKLM. A User Configuration policy has no effect on it.
* After a self-update, Intune can show the app as "Failed" (`0x87D1041C`), because Intune looks for the exact version it deployed. The app is not affected.
* To move from the `.exe` installer: remove its assignment, uninstall it for each user, then install the MSIX.

## FAQ

> **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.

> **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.

> **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.

> **We use AppLocker or App Control. Why does the app not install or start?**
>
> 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.

> **How do I check which version is installed?**
>
> Run this in PowerShell:
>
> ```powershell theme={null}
> Get-AppxPackage com.requestly.api-client | Select-Object Name, Version
> ```
>
> Add `-AllUsers` and run it as admin to see every user on the device.


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