Configuring the In-House App Library Item

By Katelyn Husvar

What are In-House Apps?

In-House apps are proprietary applications designed for internal use within an organization. They are particularly useful when you need to keep your custom apps private and avoid the Apple App Store's review process. These apps are typically distributed directly to devices within your organization, bypassing public distribution channels. For more information about in-house apps, please see Apple's documentation.

How do In-House Apps Work?

In-house apps allow organizations to deploy custom applications across their fleet of Apple devices. Using Kandji, you can create an In-House App Library Item to manage these deployments. When you upload your app's .ipa file to Kandji, the file is processed, parsing details like the app icon, bundle ID, and version information. Kandji then uses those details to automatically generate the required manifest file and deploy the app.

Requirements

  • The uploaded file must be in .ipa format
  • The .ipa file size must not exceed 4GB
  • The uploaded file bundle version must be a semantic, integer-based version
  • When updating an in-house app, the newly uploaded file bundle ID must match the existing bundle ID
  • When updating an in-house app the newly uploaded file bundle version must be higher than the previous version

Add and Configure an In-House App Library Item

  1. Navigate to Library in the left-hand navigation bar.
  2. Click Add New on the top-right, and choose In-House App.
  3. Click Add & Configure.
  4. Give the new In-House App Library Item a Name
  5. Assign to your desired Assignment Maps or Classic Blueprints.
  6. Under Install Details, upload your in-house app's .ipa file.
  7. Once your app is uploaded, it will be checked for file type, version, and bundle ID validity.

Updating In-House Apps

When you're ready to deploy a newer version of an in-house app, there are two recommended approaches:

Update the Existing In-House App in the Library

  • Upload the new version to the current In-House App Library Item. This will replace the old file and automatically send new installation commands to all devices assigned to that Library Item.
  • The new version must have the same Bundle ID as the previous one, and the version number should be higher than the current version.

Create a New Library Item for the New Version

  • If you’d prefer to roll out the new version to a specific group of devices while keeping others on the current version, you can create a new In-House App Library Item.
  • Using Assignment Maps is recommended for this option. 
    • Keep in mind that Blueprints or Assignment Map nodes can only include one in-house app per Bundle ID (the unique identifier Apple requires for each app). However, you can use the same Bundle ID across different Assignment Map nodes. Remember, the rightmost node always takes priority.
  • To keep things organized, name the Library Item with the app’s version number so you can easily distinguish between different versions of the same app.

App Icon Parsing Considerations

  • When uploading an .ipa file to an In-House App Library Item, Kandji parses the metadata from the Info.plist file generated by Xcode. This file includes crucial info like metadata and icon images. The way Xcode builds these apps can vary based on your developer’s configuration.
  • To ensure Kandji can extract the correct app icon for display in either the In-House Apps Library or the Home Screen Layout Library Item, the icon image files must be .png files, and their filenames must be directly referenced in the Info.plist file.

For example, in the Accuhive.ipa test app, the Info.plist file might look something like this under the CFBundleIcons key:

<key>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>AppIcon60x60</string>
</array>
<key>CFBundleIconName</key>
<string>AppIcon</string>
</dict>
</dict>

In this case, Kandji uses the CFBundleIconFiles key to locate and extract the app icon for display within the Library Item.

If the Info.plist file doesn’t reference an icon file, Kandji won’t be able to display an icon in the Library Item. However, this only impacts Kandji’s display. When the app is installed on a device, it will use the icon built into the app itself.

Other Considerations

  • In-House Apps can be managed using the Kandji API. For more information, see our API documentation.
  • Acceptable .ipa app version formats include integer-based X.Y.Z or X.Y. Other formats, such as X or those containing letters or symbols, are not permitted.
  • Once saved, your app will appear with its version and bundle ID information, making it easy to identify which app and version are ready for deployment. The details at the top of the Library Item will update to reflect this information.
  • Blueprints or Assignment Map Nodes can only include one In-House App per Bundle ID (the unique identifier Apple requires for each app on a device). However, you can use the same In-House App bundle ID across different nodes. As with all Assignment Map nodes, the rightmost nodes take precedence.