Managing app versions effectively is crucial for maintaining system stability and user productivity. In this blog post, we’ll explore how the versioning works in Workspace ONE App deployment.
Adding New Versions
When you upload a new .msi
file for an existing application (with the same GUID), Workspace ONE automatically recognizes it as a new version under the same application hierarchy. However, for .exe
applications, you have the flexibility to add them either as a new application or as a new version of an existing application.
Assignment Behavior
Effective deployments are determined based on assignment groups. The highest active version takes priority if it has an assignment. If it doesn’t, the next active version with an assignment becomes effective. If both versions are active and the assignment of the higher version is removed, the assignment of the lower version becomes effective.
Adding a New Version with Active Assignments
When you add a new version with an active assignment, the assignment for the previous version becomes inactive, and the new version’s assignment becomes effective. The assignment count for the old version will drop to zero, but the install count might take time to adjust since devices still have the old version installed.
Example Scenario:
- Old Version: Assignment → Device A
- New Version (Added): Assignment → Device B
If Device A already has the old version installed and Device B gets the new version through an assignment, Device A will remain unaffected, while Device B will receive the new version. If you retire the new version, it won’t impact Device A (since it was never assigned the higher version), but Device B will have the higher version removed.
If a device has no version installed and the lower version is assigned, the lower version will be installed.
Tip:
To maintain old versions on specific devices when adding a new version, create a new assignment that excludes those devices—no need to use exclusion groups.
Retiring Versions
When you retire a version, the next highest version becomes active and resulting in two different scenarios:
- If the next-lower version has an assignment, the current version will be removed, and the lower version will be installed.
- If there is no assignment for the next-lower version, or only one version exists, the software will be uninstalled.
Retired versions will still be visible in the UEM console.
Use Case:
If a new version introduces bugs and hinders productivity, you can retire it and push the previous, stable version back to devices.
Thing to note about the removal of unmanaged application
If both an unmanaged and a managed version of the same application are deployed on a device (even if they are different versions), the unmanaged app will not be removed when the managed app is uninstalled—unless the uninstaller command for the managed app is satisfied to remove the unmanaged app as well. So, to keep the application installed on devices while removing it from the UEM console, you need to modify the uninstaller command and remove the assignment or retire the version. For .msi
files, this can be done by replacing the default uninstallation routine with a custom script or command.
Unretiring Versions
Unretiring a version restores it to an active state. If multiple versions under the same application hierarchy are active, the highest version will be deployed to devices, assuming assignments are present.
Deactivating Versions
Deactivating a version makes all versions of the app inactive, including active and retired versions. The app will be uninstalled from devices, but it remains visible in the UEM console when filtered by ‘inactive.’
Use Case:
If your organization shifts strategies and no longer requires certain applications, deactivating them can help reduce clutter without permanently removing them from your UEM console.
Deleting Versions
Deleting an app version has different outcomes depending on its state:
- Active state: The version is moved to ‘retired,’ and the software is uninstalled from devices.
- Retired state: The version is permanently deleted.
You can delete specific versions of an application from the console, depending on your needs.
Activating Versions
Activating a version from an inactive state makes it active and deploys it to devices based on assignments. If there are multiple active versions, the highest version is deployed.
Note:
If you deactivate one version of an app when multiple inactive versions exist, the deactivated version becomes active, and the others enter a retired state. If you unretire another version, the highest version among the active ones will be installed.
Excluding Devices
Excluding a device from a specific version removes the software if the device is part of an assignment for any active version. If the uninstaller command is configured to remove the application, it will uninstall all versions. To avoid this, modify the uninstaller command to an invalid one to prevent the software from being removed (make sure to disable user notifications to avoid ‘uninstallation failed’ alerts).
Example Scenarios with Exclusions
Scenario 1 with two versions.
- Lower Version: Assignment → Device A
- Higher Version: Assignment → Device A
- Exclude High Version -> Device A -> Uninstall High Version
Assume the device is already installed with lower version. Adding a new version will deploy it on device A. And then Exclusion of device A will cause the higher version uninstalled. But lower version (which is now active) won’t install until the higher version is retired.
Scenario 2:
- Lower Version: Assignment → Device A
- New Version (Added): Assignment → Device A (Excluded)
- Result -> Lower Version uninstalled (Device A)
In this case, Device A has the lower version installed. When a new version is added with the Device A being excluded (at the same time), the lower version is uninstalled. The removal may not show in the ‘effective action’ panel but will be executed through the older version’s uninstaller command.
Note:
Excluding a device from a high version’s assignment without adding or unretiring the version has no effect but isn’t recommended due to its temporary nature.
You can find details of the WS1 Application Lifecycle Management below as well.