Manage Software for Windows Devices with Chocolatey

You can use Chocolatey to install software apps on Windows devices. Using Chocolatey via JumpCloud Software Management allows you to control the installation, updating, and removal of software on your JumpCloud-managed Windows fleet.


Did you know that JumpCloud has a private repository for deploying third-party, private, or custom (macOS and Windows) apps? See Manage Software with JumpCloud Private Repository.


  • Review supported Windows versions at JumpCloud Agent Compatibility, System Requirements, and Impacts.
  • The community public repository hosted at and any installation scripts and packages from that repository aren’t components of the JumpCloud service. You’re responsible for testing the scripts and packages for any third-party software you download or install using this functionality.
  • If ChocolateyGet is not present on the device, the JumpCloud agent installs the latest version of it.
    • ChocolateyGet requires Windows Powershell 7 and above.
  • The JumpCloud agent will install a specific tested version of Chocolatey regardless of Chocolatey being already installed. If ChocolateyGet is already present on the device, JumpCloud will automatically update it to the latest version. If you update Chocolatey outside the scope of JumpCloud’s Software Management, the agent will upgrade or downgrade it with a specific tested version of Chocolatey.
  • JumpCloud checks to see if the application already exists. If the application is present and was installed without ChocolateyGet, there will be an attempt to install the latest version. If the application is present and was installed with Chocolatey, JumpCloud won’t attempt to re-install it unless you have selected Keep software package up to date and there is a newer version.

What is a Chocolatey Repository?

Chocolatey software packages are stored in Chocolatey repositories. JumpCloud supports two types of Chocolatey repositories:

  • Public – Repository hosted by Chocolatey. Chocolatey hosts and manages the software packages on its own servers, as well as imposes its own rate limitsClick here to view the Chocolatey repository.
  • Internal – Internal repositories are hosted by the organization itself, rather than Chocolatey. This has some advantages, such as no rate limits (if the organization doesn’t set any) and more freedom in terms of what packages can be hosted. You can create custom software packages for your org, host them, and download them to your devices directly. There are two types of repositories:
    • Proxy Repository – Automatically downloads and caches a copy of the software packages from another repository and sends the cached packages when package install requests are made. The advantage of this is eliminating Chocolatey rate limits.
    • Custom Package Repository – Hosts custom software packages that your organization creates.

For more information, see Prevent Chocolatey Rate Limiting in JumpCloud.

JumpCloud recommends organizations use internal repositories and custom software packages. This provides the organization greater security and control of the package, scripts, and binaries. Internal repositories are also recommended if the organization is experiencing rate limiting using Chocolatey’s Community repository.

Installing Software Packages Using Chocolatey

When you add an app to a device: 

  • If ChocolateyGet is already present on the device, JumpCloud upgrades it. If ChocolateyGet is not present on the device, it is installed.
  • After the app is installed on the device, ChocolateyGet remains.
  • Apps you create and save are listed on the Software Management page in JumpCloud.

The process to install a software package varies depending on whether it’s a package from the Chocolatey community repository or an internal repository. See below:

Creating Managed Software Using the Chocolatey Community Repository

To create managed software from the Chocolatey community repository:

  1. Go to the Chocolatey community public repository.
  2. Search the repository for the package you want to use.
  3. Copy only the package ID. The package ID is the text after >choco install
  4. Log in to the JumpCloud Admin Portal.
  5. Go to DEVICE MANAGEMENT > Software Management.
  6. Select the Windows tab, then click (+) and Chocolatey App.
  7. Enter a unique display name in the Software Name field.
  8. Paste the package name you copied from into the Package ID field.
  9. Under Installation Settings, select the Install this software option.
  10. (Optional) Select Keep software package up to date to automatically update this app as updates become available. For more information, see Auto-Update below.
    • (Optional) Select Keep software package up to date to keep the application patched to the latest version available in Chocolatey.
    • (Optional) Allow end users to delay updates for up to one week to avoid updates during a busy time. 
  11. To deploy the app immediately to devices or device groups:
    • Select the Devices tab, then select the devices where you want to deploy the app.
    • Select the Device Groups tab, then select the groups that you want to deploy the app to.
  12. Click save.

To deploy your community app to your devices, see Deploying Windows Apps to Your Devices below. 

Creating Managed Software from an Internal Repository

To create managed software from an internal repository:

  1. Build or host a custom Chocolatey package:
  2. Log in to the JumpCloud Admin Portal.
  3. Go to DEVICE MANAGEMENT > Software Management.
  4. Select the Windows tab, then click (+) and Chocolatey App.
  5. On the Details tab, enter a unique display name in the Software Name field.
  6. Add the Package ID of the custom Chocolatey package. This package ID should be unique. 
  7. Select Create a custom package
  8. Enter your custom package’s Repository URL in the following format:
  9. Click save.

Auto-Updating Apps

You can configure software packages to automatically update with the latest package in the configured repository. The JumpCloud Agent checks for updates periodically and automatically installs them when available. When configuring the managed software, make sure to select Keep software package up to date.

Viewing the Status of an App

After an app is installed on a device, you can view the Status tab of the managed software page to see more information and troubleshoot errors.

To check the status of an app:

  1. Log in to the JumpCloud Admin Portal.
  2. Go to DEVICE MANAGEMENT > Software Management.
  3. Select the application from the software list.
  4. Select the Status tab.
  5. The install status for each bound device appears in the Status column.

Click the Details button of a specific device to see the following information:

  • Device Name – Name of the device. 
  • Status – Report from the JumpCloud Agent about the state of the app installation. 
  • Details – Additional information about the status of the app is displayed when you click view:
    • Status – Installation state: SUCCESS, FAILED, or PENDING.
    • Status Code – Chocolatey exit code number.
    • Version – Last version installed. See Reconcile Version Numbers for more information. 
    • Timestamp – Date and time when the status was reported by the agent.

Reconciling Version Numbers

The Status tab lists the version that was originally installed. However, the version number in the Admin Portal may vary from the actual version on the device in the following cases: 

  • If an app is set to auto-update outside of JumpCloud.
  • If a user manually updates an app with a method other than Chocolatey.

Using the Status Tab to Troubleshoot

When you create, update, or remove a new software app and deploy it to a device or device group, the JumpCloud Agent reports one of the following states:

INSTALL SUCCESSApp was successfully installed or updated.
INSTALL PENDINGApp is queued for installation.
INSTALL FAILEDApp was not successfully installed.
UNINSTALL SUCCESSApp was successfully removed.
UNINSTALL PENDINGApp is queued for removal.
UNINSTALL FAILEDApp was not successfully removed.
UPDATE PENDINGApp is queued for updates.
UPDATE FAILEDApp was not successfully updated.

If the Agent can’t send a status due to connection issues, the status remains unchanged until the Agent can send an update.

Only devices that are bound to software apps are listed on the Status tab. Devices that aren’t listed in the Status tab might be affected by one of these issues: 

  • Agent hasn’t reported a status.
  • Agent is out of date.
  • Device has been deleted from JumpCloud.
  • Device has been unbound from an app. 

Reviewing Error Messages

The following error messages might appear when installing or deploying apps:

  • Duplicate Names – Appears when you attempt to enter a display name that already exists. Display names must be unique.
  • Empty Fields – Appears when the package name or package ID field is blank. Both of these fields must be filled in. 
  • Invalid Package ID – IDs aren’t verified until the Agent tries to install the app. Because of this, one of the following behaviors may occur:
    • If the ID is invalid or wasn’t found, an error is raised and the Agent tries to complete the installation until it is successful. You should delete the app instance and begin again with a valid package ID. 
    • If you use the JumpCloud API and the ID contains spaces, the installation fails.
  • Interrupted Installation – If the installation is interrupted, such as by the device shutting down, the package will be saved and the agent will try to install it when the device restarts. 
  • Installing on a Device Not Running Windows – If you try to deploy a software app to a device that isn’t running Windows, the local device Agent will ignore the request and will not return a status. 

Removing an App

If you no longer want your users to have access to certain apps, or if you don’t want to manage an app through JumpCloud, you can remove it. There are two methods to remove Windows apps. You can choose the method that best suits the needs of your organization.

Deleting a Software App

If you don’t want to manage an app through JumpCloud, but want it to remain on users’ machines, you can delete it. After the app is deleted, it is removed from the list of installed apps in the Admin Portal on the Software Management page. If you want the app to be removed from the local device, see Uninstalling a Software App


Deleting an app from your JumpCloud organization does not uninstall it from your managed devices. Deleting an app allows the local user to manage the app directly.

To delete an existing software app:

  1. Log in to the JumpCloud Admin Portal.
  2. Go to DEVICE MANAGEMENT > Software Management.
  3. Select the Windows tab and select the app you want to delete.
  4. At the top right of the page, click delete.
  5. Click delete.

Uninstalling a Software App

You can uninstall a software app to fully remove it from locally managed devices, if the app was installed and managed by JumpCloud.

To uninstall an existing software app:

  1. Log in to the JumpCloud Admin Portal.​​​​
  2. Go to DEVICE MANAGEMENT > Software Management.
  3. Select the Windows tab, then select the app you want to uninstall. 
  4. On the Details tab, select Uninstall this software
  5. Click OK to permanently remove this app, its data, and its associations from the device. The software is still managed by JumpCloud.
  6. On the Details tab, click save.
  7. View the status of your request by selecting the Status tab. See Viewing the Status of an App


Users can uninstall software apps if they have administrator rights on the local device. If the user uninstalls the app with Chocolatey, the JumpCloud Agent checks for the local version and reinstalls the app.

Back to Top

Still Have Questions?

If you cannot find an answer to your question in our FAQ, you can always contact us.

Submit a Case