Skip to main content

Managing VPP App Updates for macOS / iOS / tvOS devices

Description

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

By default, with no defined customisation, FileWave will trigger automatic updates of VPP Apps installed 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.

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