Enterprise App Update Distribution on iOS 8
Asked Answered
P

13

111

I have an enterprise app that I'm distributing via an itms URL:

itms-services://?action=download-manifest&url=itms-services://?action=download-manifest&url=https://$MY_PLIST_URL.plist

On iOS 7, both downloads and updates work fine. On iOS 8, however, I get the error:

LoadExternalDownloadManifestOperation: Ignore manifest download, already have bundleID: com.mycom.MyApp

In my plist, I have

<key>bundle-identifier</key>
<string>com.mycom.MyApp</string>
<key>bundle-version</key>
<string>0.2.2</string>

and on my app on iOS 8, I'm running version 0.2.1

Perissodactyl answered 10/9, 2014 at 18:36 Comment(8)
Which version of iOS8 are you running. I've heard of people having issues like this with Beta 5.Westerfield
Exact same problem. iOS 8 GM. These apps just refuse to download now.Jeanelle
I'm running the now official released ios8.0 and the installation won't start. I took a look at the consule and there's a message sayin: "<Warning>: LoadExternalDownloadManifestOperation: Ignore manifest download, already have bundleID: MYBUNDLENAME" ... restoring the device or changing the bundle id will do the trickMirisola
possible duplicate of iOS 8 - Can't Install Enterprise AppScrofulous
@KristopherJohnson My post was 9 days earlier, has more views, and more votes. Genuinely curious: is there a meta reason the other post isn't the duplicate?Perissodactyl
@pcperini I think the answers in the other post have more information. No offense intended.Scrofulous
@KristopherJohnson None taken! I hadn't even considered the subjective quality of answer, haha.Perissodactyl
I faced same issue. wrote the solution in here : teratotech.com/blog/…Pyrogenic
A
92

I've also encountered this problem with our app distribution. We were able to fix this issue by 'faking' the bundle identifier inside the .plist using for download distribution, keeping our ipa bundle identifier the same.

For example, in your plist:

<key>bundle-identifier</key>
<string>com.mycom.MyApp</string>
<key>bundle-version</key>
<string>0.2.2</string>

change com.mycom.MyApp to com.mycom.MyApp.ios8fix

The app will be installed using a new app icon, which will disappear after install.

If you already have an install of the app, you will even see a new app icon during install. After the installation this icon disappears, but your already existing version of the app will be updated. With a clean install the installation icon will disappear and the installed application icon will appear in place.

It looks like iOS 8 is caching the bundle identifiers and compares the requested installs with these cached ones. Most of the times you'll only see an popup asking for install, but nothing happens.

As Sean already noticed, this appears with xCode 6 GM and the official iOS 8 version. Devices which never installed your application before will have no problems to install the app.

Adiaphorism answered 20/9, 2014 at 12:37 Comment(8)
It works on some devices, but some other deveice the syslog still showing the previous bundle id, even I changed the plist file.Sandiesandifer
Actually providing images is the correct solution - check this answer https://mcmap.net/q/194628/-enterprise-app-update-distribution-on-ios-8Boynton
In my case changing the bundle-identifier worked on some devices - not all. After changing the path to the plist itself solved it for me.Elinaelinor
Same problem a while ago. I provided solution in here : teratotech.com/blog/…Pyrogenic
Where is the .plist to edit if you are downloading the app from Xcode Server?Ivoryivorywhite
This answer https://mcmap.net/q/194628/-enterprise-app-update-distribution-on-ios-8 worked better for us since you don't have to change the .plistOakleil
This seems to be no longer working on iOS9 and apparently for good reason. See fireeye.com/blog/threat-research/2015/06/….Pulverulent
@Pulverulent @ SOreadytohelp This is not working in iOS 9 any updates ?Armory
I
24

This worked better for me, no need to touch your manifest or other trickery (perfect for Xcode Server where the plist is auto-generated):

  1. Download iExplorer (http://www.macroplant.com/iexplorer/)
  2. Plug your device
  3. Delete all the files in "Media > Downloads"
  4. Restart device

This resets the device caches, now you can install your app as usual.

Inflate answered 25/2, 2015 at 19:31 Comment(5)
Thanks, you are a life saver. I use iBrowse(ibrowseapp.com) which is free from MacroplantEcchymosis
This worked great for us... don't forget to restart the device after deleting the contents of Media -> DownloadsOakleil
thanks did the Job! But still thinking that does it need to be done on each user's phone !Southpaw
Does "Erase All Content and Settings" (under Settings app) work ?Changchun
What is the content of the Downloads folder ?Aubrette
O
16

I am having the same problem. I reproduced it by:

1) Having my application installed while upgrading from iOS 7 to iOS 8 GM

2) Removing it in iOS 8

3) Trying to install it via itms-services: with the same bundle name

When I tried to change the bundle-identifier in the server plist (not in the applications Info.plist), it worked (application was downloaded an no "shadow" icon remained). But it looks like an apple bug.

Overscrupulous answered 11/9, 2014 at 11:53 Comment(4)
But you have to also change the bundle name in app, isn't it? I have tried only changing the server plist and result is: Sep 18 09:59:20 XXX-iPhone filecoordinationd[123] <Warning>: sandboxing denied subscription to progress on category com.mo2o.XXX (bundle id com.apple.iaptransportd, 037BE63A-8737-4A4B-9C9D-B8FAF8DC0D40) Sep 18 09:59:20 XXX-iPhone filecoordinationd[123] <Warning>: sandboxing denied subscription to progress on category com.mo2o.XXX (bundle id (null), 0B9D3B2A-2B5D-4882-8771-61784326E507) and app does not installEryn
mmm I am not right, it does log the warning but also it installs the app.Eryn
This works fine, there is however a minor drawback. During installation the device doesn't know which app you are updating, so you'll see a second app icon during installation. After install this is automatically corrected though.Heliochrome
Worth noting that in that bulldozer.io article it says "it seems that devices that have a developer certificate installed are not affected". Not clear what is meant by 'developer certificate' (I guess a development provisioning profile that 'covers' the app in question), but this could explain problems reproducing the issue on different devices.Wilkison
P
11

The accepted solution no longer works on iOS9.

My understanding is that Apple has closed a serious iOS security hole by preventing adhoc binaries from replacing stock apps or apps downloaded from the App Store. See this article for background (CVE-2015-3722/3725 and CVE-2015-3725):

https://www.fireeye.com/blog/threat-research/2015/06/three_new_masqueatt.html

Taken the security implications, I wouldn't expect this behaviour to change in future IOS versions. Alternative options seem to be:

  • delete the App Store version before installing the adhoc
  • distribute the adhoc as 'new' app by changing the bundle id in both the app and the distribution plist
  • use TestFlight
Pulverulent answered 22/9, 2015 at 12:1 Comment(5)
Looks like you're right. It works fine on fresh installs or updating a previous adhoc version of the app, but it does not work when the installed version was installed from the App Store.Nonviolence
Here's another hint why Apple made the change: loopinsight.com/2015/10/05/…Pulverulent
While I understand the need to close the security, this puts us in an interesting scenario where we can't test upgrades from one version to another on the deployed version without going to TestFlight. It seems that an app signed by an ad-hoc profile and certificate for the same developer should be able to be upgraded.Venetis
@charles,"It works fine on fresh installs or updating a previous adhoc version of the app", have you test it? because we encounter this adhock update adhoc issue in IOS9.....Salford
@Salford I had tried it on iOS 9 at the time, and it did work. I have not tried since, sorry.Nonviolence
B
9

What Gil said seems to be correct, but more specifically, I found that I also needed to increment the bundle-version string in the server.plist:

    <key>bundle-version</key>
    <string>3.2.2</string>

This at least allows you to accomplish an OTA install.

(Sorry... Would've added to comments, but I'm too much a n00b.)

Bissell answered 25/9, 2014 at 20:10 Comment(0)
R
9

Take a look over this answer and this answer.

You can fix this issue without any hacks, for iOS8 you have to include in the assets key of the manifest .plist file the display-image and full-size-image keys. They were available in Xcode 5 when saving an archive for enterprise and add-hoc deployment, but were not required.

I have created a gist on github with the template for the install-manifet.plist file.

Rasping answered 9/10, 2014 at 16:36 Comment(3)
I was actually experiencing this problem with both of those keys included.Afloat
ya i changed the bundle identifier and it worked. Not thrilled about it.Afloat
Great! I'm also moved everything to a subfolder and adjust only the MD5 of ipa file.Irresponsible
N
3

This a bug first found in iOS8 Beta5. And it was still not fixed by Apple in GM seed and official iOS8.0 version. More discussons could be found here

The current workaround being tested by myself:

  • If you don't care the contents in your device: do a clean restore in DFU mode of the device
  • If you want your things back
    1. Backup your iOS Device in iTunes before restore (without Ad-Hoc/enterprise app)
    2. After restored your device cleanly, install your Ad-Hoc/enterprise app
    3. Restore your backup from iTunes
    4. Now you are free to delete those Ad-Hoc/enterprise apps and reinstall them.
Nonappearance answered 18/9, 2014 at 12:59 Comment(2)
Still not fixed in 8.1 eitherPuritanical
Still not fixed in 8.2....... Maybe just we 15 persons in the world make enterprise apps.Ironbark
T
3

Problem solved by changing the bundle identifier in plist.

Normally, after tapping the itms link, it will shows the desktop which shows the icon installation. However, for my iOS 8.0 device, after tapping the itms link, it will not change to the installation page but installation is already working behind.

Tisdale answered 4/11, 2014 at 3:25 Comment(0)
B
2

This is extreme but if you can't change your bundle identifier, which I couldn't, restoring your iPhone through iTunes to the latest iOS 8 and restoring from a backup fixes the problem.

Boxing answered 11/10, 2014 at 23:4 Comment(1)
You shouldnt restore iPhone — just few steps updraft.beekeeper.io/post/2046721Gassing
F
1

Same problem exists on iOS 10 beta 1.

Dec 31 19:01:32 iphone-6s itunesstored[98] : LoadExternalDownloadManifestOperation: Ignore manifest download, already have bundleID: com.***************.ios with phase: SSDownloadPhaseWaiting

One thing that I do not understand here is that the date is December 31st in the XCode device log, however, device has correct date and time configured.

Update: Guys from HockeyApp notified Apple about this problem during WWDC and fix should come in the next seed.

Farfamed answered 15/6, 2016 at 17:16 Comment(1)
same problem on iOS 10Diglot
S
0

If you build your iOS apps with a build script and you were previously using PackageApplication with the --sign flag then that may be causing problems. The --sign flag doesn't work any longer when building on 10.10 and removing it got all of our iOS apps installing again.

see: https://devforums.apple.com/thread/251624?tstart=0

Shantishantung answered 22/10, 2014 at 22:9 Comment(3)
That is addressing a different issue and is related to building, and not installing, as the OP is asking.Burkhalter
I disagree. There was a behavior change introduced in b5 that causes signed IPAs to fail to load. Assuming the OP has no errors in their manifest file then a signed IPA is virtually guaranteed to fail to install with exactly the error they provided. Since they don't mention how they built their IPA I can't say for sure why it's failing. On the other hand removing sigs from our IPAs got them all installing again.Shantishantung
That may be true, but if you looke at the error specified in the original question: "Ignore manifest download, already have bundleID:", it is obviously related to the now widely discussed iOS8 bug on enterprise apps and the inability to install an app that was installed prior to upgrading to iOS8, then uninstalling after upgrading to iOS8. You may be addressing a problem, but it is not the problem the OP is having.Burkhalter
S
0

Make sure you have a full internet access.

I was facing the same problem with OTA installation and IOS8. Because i'm behind a corporate proxy, the solutions above didn't work until I set manual proxy settings (not needed in IOS7) to solve that problem.

Sparling answered 25/11, 2014 at 15:52 Comment(0)
D
0

I have just encountered this issue on a device running 8.1, upgrading the device to 8.3 has resolved the issue. So either the bug is no longer present in 8.3.... or the act of upgrading cleared the cached data anyway.

Darryldarryn answered 9/6, 2015 at 13:28 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.