iOS9: "Unable to Download App"
Asked Answered
M

7

16

We are developing an internal iOS app for our company. We create a local distribution link of the form

itms-services://?action=download-manifest&url=https://INTERNAL-PATH/manifest.plist

It worked fine for a long time, including iOS8 and all betas of iOS9.

However now for every device updated to the official iOS9, when trying to install from the above link, we are getting this dialog:

dialog of error

I have captured the log from pressing "install" until getting this error. it is shown here. From the very beginning there is a suspicious "ios8fix" which we do not put, and one of the failure outputs is claiming BundleValidator: Failed bundleIdentifier: MY_APP_ID.ios8fix does not match expected bundleIdentifier: MY_APP_ID

Please note that "create a new provisioning profile" is not a good solution, because I'm trying to distribute an update over an existing app.

I have already burned a fool day (ok. full day) trying to solve this, and would appreciate any clue here!

itunesstored[123] <W>: LoadExternalDownloadManifestOperation: Canceling failed manifest download for replace: MY_APP_ID.ios8fix
itunesstored[123] <W>: [Download]: Adding download(s): -4949958484440492382
itunesstored[123] <W>: LaunchServices: installing placeholder for <LSApplicationProxy: 0x148840860> MY_APP_ID.ios8fix <(null) *Not found in database*>
installd[47] <N>: 0x16e087000 -[MIClientConnection installPath:withOptions:completion:]: Install of "/var/mobile/Library/Caches/com.apple.itunesstored/AppPlaceholders/-4949958484440492382.app" type Placeholder requested by itunesstored (pid 123)
installd[47] <N>: 0x16e12f000 -[MIInstaller performInstallationWithError:]: Installing <MIInstallableBundle ID=MY_APP_ID.ios8fix; Version=8.38.5, ShortVersion=(null)>
installd[47] <N>: 0x16e12f000 -[MIContainer makeContainerLiveReplacingContainer:reason:withError:]: Made container live for MY_APP_ID.ios8fix at /private/var/mobile/Containers/Data/Application/A64E6947-B7E7-46A9-B517-4887AB890E97
installd[47] <N>: 0x16e12f000 -[MIContainer makeContainerLiveReplacingContainer:reason:withError:]: Made container live for MY_APP_ID.ios8fix at /private/var/mobile/Containers/Bundle/Application/A1ED6552-6C73-4DDE-8CE7-ED10F1BB0553
itunesstored[123] <W>: [Download]: Starting task: 4 with priority: 300 for download: -4949958484440492382 bundleIdentifier: MY_APP_ID.ios8fix in session: com.apple.itunesstored.default
installd[47] <N>: 0x16e12f000 -[MIInstaller performInstallationWithError:]: Install Successful; Staging: 0.00s; Waiting: 0.00s; Preflight/Patch: 0.00s, Verifying: 0.00s; Overall: 0.12s
itunesstored[123] <W>: LaunchServices: Creating installProgressForApplication:<LSApplicationProxy: 0x148ac35f0> MY_APP_ID.ios8fix (Placeholder) <file:///private/var/mobile/Containers/Bundle/Application/A1ED6552-6C73-4DDE-8CE7-ED10F1BB0553/-4949958484440492382.app> withPhase:3
itunesstored[123] <W>: LaunchServices: installPhaseFinishedForProgress: MY_APP_ID.ios8fix.InstallingPlaceholder - <NSProgress: 0x148a7a8c0> : Parent: 0x0 / Fraction completed: 0.0000 / Completed: 0 of 100   called, removing progress from cache
lsd[175] <W>: LaunchServices: Updating installPhase for parent <NSProgress: 0x127d3a430> : Parent: 0x0 / Fraction completed: 0.6000 / Completed: 60 of 100   to 3
ondemandd[192] <E>: Application with ID: MY_APP_ID.ios8fix was installed, but it doesn't appear to have a bundle URL, we are taking no action on this.
itunesstored[123] <W>: LaunchServices: updating placeholder for <LSApplicationProxy: 0x146eb9100> MY_APP_ID.ios8fix (Placeholder) <file:///private/var/mobile/Containers/Bundle/Application/A1ED6552-6C73-4DDE-8CE7-ED10F1BB0553/-4949958484440492382.app> with icons
installd[47] <N>: 0x16e12f000 -[MIClientConnection installPath:withOptions:completion:]: Install of "/var/mobile/Library/Caches/com.apple.itunesstored/AppPlaceholders/-4949958484440492382.app" type Placeholder requested by itunesstored (pid 123)
installd[47] <N>: 0x16e2d3000 -[MIInstaller performInstallationWithError:]: Installing <MIInstallableBundle ID=MY_APP_ID.ios8fix; Version=8.38.5, ShortVersion=(null)>
installd[47] <N>: 0x16e2d3000 -[MIInstallableBundle _refreshUUIDForContainer:withError:]: Data container for MY_APP_ID.ios8fix is now at /private/var/mobile/Containers/Data/Application/20871483-6F78-424D-8ED1-BA18BD2959BA
installd[47] <N>: 0x16e2d3000 -[MIContainer makeContainerLiveReplacingContainer:reason:withError:]: Made container live for MY_APP_ID.ios8fix at /private/var/mobile/Containers/Bundle/Application/D1ABD072-5949-452A-A20E-50F5C10310AA
installd[47] <N>: 0x16e2d3000 -[MIInstaller performInstallationWithError:]: Install Successful; Staging: 0.00s; Waiting: 0.00s; Preflight/Patch: 0.00s, Verifying: 0.00s; Overall: 0.06s
ondemandd[192] <E>: Application with ID: MY_APP_ID.ios8fix was installed, but it doesn't appear to have a bundle URL, we are taking no action on this.
SpringBoard[54] <W>: FBApplicationPlaceholder We received a nil BSCFBundle back, which means _CFBundleCreateUnique. Here's what -[NSFileManager attributesOfItemAtPath:error:] is giving us: (null)
        here's the error we got back (if any): Error Domain=NSCocoaErrorDomain Code=260 "The file “-4949958484440492382.app” couldn’t be opened because there is no such file." UserInfo={NSFilePath=/private/var/mobile/Containers/Bundle/Application/A1ED6552-6C73-4DDE-8CE7-ED10F1BB0553/-4949958484440492382.app, NSUnderlyingError=0x12a552020 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
SpringBoard[54] <W>: -[FBBundleInfo _initWithBundleURL:] ERROR: Unable to create bundle at path: /private/var/mobile/Containers/Bundle/Application/A1ED6552-6C73-4DDE-8CE7-ED10F1BB0553/-4949958484440492382.app
ondemandd[192] <E>: An object with ID [0x12de8a220 <x-coredata:///AssetDownloads/tAC876614-AA9B-432E-9691-02EE36693D1013>] has already registered.
itunesstored[123] <W>: LaunchServices: Creating installProgressForApplication:<LSApplicationProxy: 0x148a553a0> MY_APP_ID.ios8fix (Placeholder) <file:///private/var/mobile/Containers/Bundle/Application/D1ABD072-5949-452A-A20E-50F5C10310AA/-4949958484440492382.app> withPhase:0
lsd[175] <W>: LaunchServices: Updating installPhase for parent <NSProgress: 0x127d3a430> : Parent: 0x0 / Fraction completed: 0.6000 / Completed: 60 of 100   to 0
<-- 19 seconds gap -->
itunesstored[123] <W>: [Download]: Download task did finish: 4 for download: -4949958484440492382
itunesstored[123] <W>: [ApplicationWorkspace] Installing download: -4949958484440492382 with step(s): Install
itunesstored[123] <W>: [ApplicationWorkspace]: Installing software package with bundleID: MY_APP_ID.ios8fix: bundleVersion: 8.38.5 path: /var/mobile/Media/Downloads/-4949958484440492382/-5671360055536325805
itunesstored[123] <W>: BundleValidator: Failed bundleIdentifier: MY_APP_ID.ios8fix does not match expected bundleIdentifier: MY_APP_ID
itunesstored[123] <W>: [ApplicationWorkspace]: Bundle validated for bundleIdentifier: MY_APP_ID.ios8fix success: 0
itunesstored[123] <W>: LaunchServices: Uninstalling placeholder for app <LSApplicationProxy: 0x14884ffc0> MY_APP_ID.ios8fix (Placeholder) <file:///private/var/mobile/Containers/Bundle/Application/D1ABD072-5949-452A-A20E-50F5C10310AA/-4949958484440492382.app>
itunesstored[123] <W>: LaunchServices: Uninstalling app <LSApplicationProxy: 0x14884ffc0> MY_APP_ID.ios8fix (Placeholder) <file:///private/var/mobile/Containers/Bundle/Application/D1ABD072-5949-452A-A20E-50F5C10310AA/-4949958484440492382.app>
installd[47] <N>: 0x16e087000 -[MIClientConnection uninstallIdentifiers:withOptions:completion:]: Uninstall requested by itunesstored (pid 123) with options: {
    }
installd[47] <N>: 0x16e087000 -[MIUninstaller _uninstallBundleWithIdentifier:error:]: Uninstalling identifier MY_APP_ID.ios8fix
installd[47] <N>: 0x16e087000 -[MIUninstallNotifier performRemovalWithCompletionBlock:]: Destroying container with identifier MY_APP_ID.ios8fix at /private/var/mobile/Containers/Bundle/Application/D1ABD072-5949-452A-A20E-50F5C10310AA
installd[47] <N>: 0x16e087000 -[MIUninstallNotifier performRemovalWithCompletionBlock:]: Destroying container with identifier MY_APP_ID.ios8fix at /private/var/mobile/Containers/Data/Application/20871483-6F78-424D-8ED1-BA18BD2959BA
itunesstored[123] <W>: LaunchServies: No app bundle to remove for MY_APP_ID.ios8fix
lsd[175] <W>: LaunchServices: Updating identifier store
itunesstored[123] <W>: LaunchServices: clearing created progress for MY_APP_ID.ios8fix
itunesstored[123] <W>: [ApplicationWorkspace]: Uninstalling application placeholder for bundleIdentifier: MY_APP_ID.ios8fix; success: 1
itunesstored[123] <W>: [ApplicationWorkspace]: Failed to install application: MY_APP_ID.ios8fix; /var/mobile/Media/Downloads/-4949958484440492382/-5671360055536325805; Error Domain=SSErrorDomain Code=143 "(null)"
itunesstored[123] <W>: [ApplicationWorkspace] Install complete for download: -4949958484440492382 result: Failed
itunesstored[123] <W>: [Download]: Fail download: -4949958484440492382 after error: Error Domain=SSErrorDomain Code=143 "(null)"
Moldavia answered 20/9, 2015 at 10:23 Comment(2)
Hi, I have same issue as you. Could you help me how do you get log file when click install ?Hearse
In Xcode you open window > devices > your device. If you don't see the log then you need to click on the small triangle at the bottom.Moldavia
P
12
MY_APP_ID.ios8fix

Your bundle identifier must be correct now.

This was done as a fix, for an old problem in 8.2. I had some of these 'ios8fix' extensions on my apps too, which broke OTA for 9.0 GM. Yes, it worked through all the betas.

So check your manifest.plist to make sure it really matches your actual app id...correct that plist entry.

By the way, you can update that plist easily with any text editor.

my itms entry points to a plist I also serve at my company, here is the entire old plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>items</key>
    <array>
        <dict>
            <key>assets</key>
            <array>
                <dict>
                    <key>kind</key>
                    <string>software-package</string>
                    <key>url</key>
                    <string>http://removed.cachefly.net/noname.ipa</string>
                </dict>
            </array>
            <key>metadata</key>
            <dict>
                <key>bundle-identifier</key>
                <string>dupuy.robert.APPNAME.ios82fix</string>
                <key>bundle-version</key>
                <string>1.0.7</string>
                <key>kind</key>
                <string>software</string>
                <key>title</key>
                <string>Appname 1.0.7</string>
            </dict>
        </dict>
    </array>
</dict>
</plist>

See the bundle identifier? dupuy.robert.APPNAME.ios82fix is bogus! That was added as a fix for an earlier apple problem.

But as of GM 9.0 - that bundle identifier must be strictly correct.

So either correct your plist, or point to a new correct plist. These plists are just simple files....should be an easy fix! In my case "dupuy.robert.APPNAME.ios82fix" just was changed to "dupuy.robert.APPNAME" and the plist was resaved. Although if your webserver caches plists, that's another headache if it continues to serve up the old one, if you can rename the file, all the better.

Polypoid answered 20/9, 2015 at 10:26 Comment(2)
You are correct. I have learned the same myself from meta.stackexchange.com/questions/266528/cannot-update-app . Bad for me, the guy which was implementing this fix has left the company so I had nobody to ask :(Moldavia
Yep, this fixed my problem too.. I had to change the bundle id after each update because of an iOS 8 bug.Pneumococcus
G
3

This seems to be a bug in iOS9, where it caches any previous OTA errors.

I got my installs to work again by using a combination of deleting the app on the device, changing the manifest.plist and then rebooting the device. This seemed to clear out the cache and the app was installed.

Glori answered 21/9, 2015 at 11:35 Comment(1)
Michael, in my case, closing the Safari browser and opening the app enterprise app store page was sufficient and I did not need to reboot the device. Possibly it has also cleared a few things from my cache. Reloading the page however did not work.Familiarize
P
3

Check out your manifest.plist.

I've met the same problem and fixed it through the three days struggle. For iOS8 devices, you have to use old plist. For iOS9 devides, you have to use new(Xcode7 made) plist. This is the standard. ipa file is the same (Xcode7 Archive build) .

New plist requires two install images. 57x57.jpg and 512x512.jpg. You have to arrange them too. Bundle Identifier must be correct (same as Xcode7 > TARGETS > General > Bundle Identifier).

I tested 4 devices.

iPad Air (iOS9.0.1) -> OK (by iOS9 plist)

iPad 3 (iOS8.4.1) -> OK (by iOS8 plist)

iPad 2 (iOS9.0) -> OK (by iOS9 plist)

iPad mini (iOS9.0) -> OK (by iOS8 plist)

OTA install process makes your device confusing. In this situation rebooting is helpful. hope it helps.

Paquette answered 24/9, 2015 at 8:58 Comment(3)
How do you get those plist files? They aren't created by XCode anymore. I found one on the web and adjusted it and it works perfectly on an iPad Air with 8.4.1 and an iPad 4, but I can't install on an iPad 2 with 8.4.? nor with 9.0.1 and the same foes for an iPhone 6 with 9.1.0 :(Magically
With Xcode7 you can create a new manifest.plist file in the Archive building process. OTA install failure sometimes depends on the code and data of the app. So, delete installing icon and reboot and try ... and again... good luck.Paquette
Finally found the checkmark that would create that ***** plist file in XCode! Thanks for the hint! It's called "Include Manifest for over-the-air installation" and is on the bottom of one of the pages you cycle through when exporting the Archive from XCode 7.Magically
W
1

Same problem, with a reboot of the device was solved.

The steps:

  1. Delete the OLD APP

  2. Reboot the device

  3. Install the new APP

Warlock answered 16/9, 2016 at 18:58 Comment(0)
S
0

Previously i have changed ipa name and Bundle identifier to get downloaded in ios 8.2. Now in ios 9 just used the original ipa name and previous bundle identifier name. It works.

Scarito answered 7/10, 2015 at 16:35 Comment(0)
P
0

I had the same issue but in my case the App name had a space and by removing the space it was all good.

Pleo answered 21/10, 2015 at 3:32 Comment(0)
I
0

My problem was fixed after adding the new image properties display-image and full-size-image to the .plist file:

                <dict>
                    <key>kind</key>
                    <string>software-package</string>
                    <key>url</key>
                    <string>linktoyouripa</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>display-image</string>
                    <key>url</key>
                    <string>someimage.png</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>full-size-image</string>
                    <key>url</key>
                    <string>someimage.png</string>
                </dict>
Illusionary answered 9/2, 2017 at 22:27 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.