Skip to main content

VPP App Updates for macOS / iOS / tvOS devices

Description

As standard, VPP Apps on devices should update automatically, regardless of how they were installed, e.g. Kiosk or Standard Deployment.  They may also be occasion to block VPP Updates, without locking the entire device.

Information

By default, with no defined customisation, FileWave will trigger automatic updates of VPP Apps installed on devices.  

At certain times, FileWave Server requests the list of installed applications.  MDM commands to devices may be observed in the 'Command History' tab of a device's information:

image.png

At minimum, this will occur every Automatic Verify (usually 24hrs), assuming devices are online, but other actions should also trigger these events.  For example:

  • Manual Verify
  • Model Update
  • Smart Group changes
  • Opening Client Info for a device

If an installed App has an update, that App will be flagged.

Where an App has an update Flag, a new command to instal the application is queued with the device.  This should be true for all Apps that have an update, one entry per App.  On receipt of the request, the device communicates with the App Store and acknowledges the request to update back to the FileWave Server.

image.png

FileWave does not specify the version when a device honours a request to update an App, it will update to the latest, compatible version currently on the App Store.

Included in FileWave Anywhere, is the option to determine timings of when VPP App upgrades may take place.  Please view the following KB on this topic:

https://kb.filewave.com/books/apple-school-business-manager/page/vpp-application-upgrade-timing

Managing Updates

There have been instances where disabling auto updates of VPP Apps has been required; due to unexpected behaviour from the App Store.  In such cases, it can be desirable to either block updates completely or block updates per App.

Information

Beyond

Bythe default,above withmentioned nomethod definedto customisation,manage VPP App upgrade timings, it may be desirable to block certain versions of an App.  FileWave willhas triggersome automaticadditional updatesoptions offor VPP AppsApp installedmanagement.

on devices.  

Overriding this behaviour may be done by adding options within the custom settings:

# macOS/Linux

/usr/local/filewave/django/filewave/settings_custom.py

Options available are:

Key

Description

SELF_HEAL_APPS_BY_VERSION

Enables/disables all VPP App updates

IGNORE_PREINSTALLED_APPS_SELF_HEAL

Block all update attempts for a defined App by Bundle ID (Unmanaged Apps only)

IGNORE_ITUNES_VERSION

Block updates, not only by a defined App Bundle ID, but only blocks defined version numbers

Directions

Each example below involves editing: settings_custom.py.  Any changes require apache to be restarted.  Where the App Bundle ID or version is required, this may be observed in a device's Installed App list.

SELF_HEAL_APPS_BY_VERSION

Add the following line will block all updates of all Apps:

SELF_HEAL_APPS_BY_VERSION = False

To revert this behaviour, either set this as True or remove the entire line.

IGNORE_PREINSTALLED_APPS_SELF_HEAL

This option will only prevent erroneous attempts to update unmanaged Apps, where the device reports an incorrect Bundle ID.  As an unmanaged App, it may not be updated by MDM anyway, but installation errors would be seen in the Command History.

Obtain the Bundle ID of the App, then add the following option. For example, to block iMovie, Pages and Keynote:

settings.IGNORE_PREINSTALLED_APPS_SELF_HEAL = ("com.apple.iMovie", "com.apple.Pages", "com.apple.Keynote")

This is a comma separated list. Add each Bundle ID per App to be blocked for updates.

To revert this behaviour, either remove the Bundle ID no longer required for blocking or remove the entire line.

IGNORE_ITUNES_VERSION

Obtain the Bundle ID and version of the App to be blocked. The settings are set out as:

'Bundle ID': [(version to block, version currently installed)]'Bundle ID': [(version to block, version currently installed)]

'Bundle ID': [(version to block, version currently installed)]

The below example will:

  • Keynote - Block version 3.0 from the iTunes Store if device has version 2.7 installed
  • iMovie - Block version 10.1.14 from the iTunes Store if device has version 10.1.13 installed
  • Pages - Block version 8.2 from the iTunes Store if device has version 8.2 installed
settings.IGNORE_ITUNES_VERSION = {
'com.apple.keynotes': [('3.0', '2.7'),],
'com.apple.iMovie': [('10.1.14', '10.1.13'),],
'com.apple.Pages': [('8.2', '8.2'),],
}

The Pages example prevents an App from continually attempting to update, where the version on the iTunes Store matches that on the device, yet the device is still reporting an update is required. Add or remove entries per item to be blocked.

Taking this one step forward, consider the above Keynote example.  Device has 2.7 installed, but version 3.0 is set to be ignored.  If version 3.1 were to be released, the device would upgrade to this version, if it were the next latest version available on the App Store, after receiving a new InstallApplication command.

To revert the behaviour, either remove the Bundle ID and versions no longer required for blocking or remove this entire code entry.

White Space
Note, there should be no 'white space' before the added key: spaces, tabs, etc. Doing so will result in the server becoming non-responsive.

Apache should then be restarted:

# macOS/Linux

/usr/local/filewave/apache/bin/apachectl graceful