iOS enterprise OTA distribution problems

折月煮酒 提交于 2019-12-05 00:13:04


I'm trying to deploy an app that I built OTA. These are the steps I went through to create the ipa:

  • Generate Certificate Signing Request
  • Create distribution .mobileprovision
  • Xcode > Product > Archive > Save For Enterprise Deployment
  • Specified the right title, URL (fully qualified domain), large / small app icons
  • Host the .mobileprovision, .ipa, .plist (xcode generated) on an IIS. Configured IIS MIME TYPES to application/octet-stream for .mobilerpovision, .ipa and text/xml for .plist.
  • Tested this out on a laptop and verified all the URLs are valid.
  • Installed Provisioning Profile OTA on the iPad.
  • Clicking on the download link with the right format (itms-services://?action=download-manifest&url=$URL).
  • iPad returns a generic "Could not connect" error.

I've tried to install the same app manually on the iPad via iTunes and it works fine. So at this point, I don't even know what else I can try. I've tried and removed entitlements.plist after realizing that Xcode does this automatically.

Any help is much appreicated!



I had the same problem trying to deploy enterprise deployment signed OTA Apps with IIS 7.5. The following solution worked for me:

Change the mime types:

.plist : application/xml
.ipa : application/x-plist

Set IIS Anonymous Authentication Credentials to the Application Pool Identity.


I hosted my ios 6 app in iis 7.5 and I didn't add any mime types and it installs for me.

anyhow from what I have read in Internet use following mime types.

.mobileprovision and .ipa





It is a binary file.A generic http byte streaming.Typically it will be an application or document which must be opened in application.

URL escaping problem Clicking on the download link with the right format (itms-services://?action=download-manifest&url=$URL)

make sure the URL is escaped otherwise it may not install.

Network configuration requirements

Apple requires two of its server must be reachable in order to install successfully.

Access one server confirms that it's authorised to install and another one checks maximum app size limit for ota.

Read the apple document regarding the server address and make sure those are not locked inside the closed intranet.


My guess is that even though the files all work, that one of them is misspelt in itms-services:// url or inside the download manifest file.

The best way to check the whole process (in 30 seconds) is to install a web proxy and trace the requests.


  1. Install Charles Proxy (Mac/Windows)
  2. Run it (it will listen on port 8888 for external requests)
  3. Go to your iPhone/iPad current Wifi settings and press (i) and set Http proxy to manual. Enter the IP address of your PC/Mac and port 8888.
  4. Go to safari and click on your itms-services link.
  5. Watch for where the failure is and what URL was the one caused the failure.


try "application/x-plist" as MIME type for the plist


Also what drove me mad was trying to find out the mime type for .mobileprovision files and it wasn't clear to me then but application/octet-stream is used for .mobileprovision files.


To troubleshoot your website, these are the steps I use:

  1. Open the Chrome browser on my PC and navigate to my folder containing your itms-services links
  2. Either click on the itms-services link or copy the link
  3. Rewrite the address to point to the plist file and follow the rewritten link
  4. Review the return XML that it's correct, specifically the URL of the IPA
  5. Navigate to the address of the IPA shown
  6. It should start downloading the IPA in your browser

If there's an error in any of the above steps, fix your website and repeat the the test on your PC.

From Apple, you can find under iPhone in Business - Deployment the iOS Deployment Technical Reference in PDF. On page 42, you can find the following text regarding configuring your web server on both OS X and IIS's mime types:

Setting server MIME types

You may need to configure your web server so the manifest file and app file are transmitted correctly.

For OS X Server, add the following MIME types to the web service’s MIME Types settings:

  • application/octet-stream ipa
  • text/xml plist

For IIS, use IIS Manager to add the MIME type in the Properties page of the server:

  • .ipa application/octet-stream
  • .plist text/xml


Simply add two MIME types for .plist and .ipa extensions.

I added following on IIS 7 and things started working:

.ipa: application/octet-stream
.plist: application/xml

I did not have to deploy the .mobileprovision file. I guess it's not needed, at least not anymore.