iOS 8上的企业应用程序更新分发


111

我有一个要通过itmsURL 分发的企业应用程序:

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

在iOS 7上,下载和更新都可以正常工作。但是,在iOS 8上,我收到错误消息:

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

在我的清单中,我有

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

在iOS 8上的应用程序上,我正在运行0.2.1版


1
您正在运行哪个版本的iOS8。我听说过有与贝塔5.喜欢这个问题的人
阿尼尔Natha

7
完全一样的问题。iOS 8 GM。这些应用只是拒绝立即下载。
卡尔·舒格林

3
我正在运行现在正式发布的ios8.0,并且安装不会开始。我看了看领事,有一条消息说:“ <警告>:LoadExternalDownloadManifestOperation:忽略清单下载,已经有bundleID:MYBUNDLENAME”……还原设备或更改捆绑包ID将达到目的
user2387149


1
@pcperini我认为其他帖子中的答案有更多信息。无意冒犯。
克里斯托弗·约翰逊

Answers:


91

我在我们的应用分发版中也遇到了这个问题。我们可以通过伪造.plist中用于下载分发的包标识符来解决此问题,并保持我们的ipa包标识符不变。

例如,在您的plist中:

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

com.mycom.MyApp更改为 com.mycom.MyApp.ios8fix

该应用程序将使用新的应用程序图标安装,安装后该图标将消失。

如果您已经安装了该应用程序,则在安装过程中甚至还会看到一个新的应用程序图标。安装后,该图标消失,但是您现有的应用版本将被更新。全新安装后,安装图标将消失,并且已安装的应用程序图标将出现在适当的位置。

看来iOS 8正在缓存捆绑包标识符,并将请求的安装与这些缓存的安装包进行比较。在大多数情况下,您只会看到一个弹出窗口要求安装,但没有任何反应。

正如肖恩已经注意到的那样,这与xCode 6 GM和iOS 8官方版本一起出现。以前从未安装过您的应用程序的设备将不会有任何问题。


3
它可以在某些设备上运行,但是其他一些可以使syslog仍然显示以前的捆绑软件ID,即使我更改了plist文件也是如此。
寺庙

实际提供图像是正确的解决方案-检查此答案stackoverflow.com/a/26283611/276656
mspasov 2014年

3
就我而言,更改捆绑标识符在某些设备上有效-并非全部。更改plist本身的路径后,为我解决了该问题。
pawi 2015年

1
如果要从Xcode Server下载应用程序,.plist在哪里进行编辑?
Collin

1
这个答案stackoverflow.com/a/28727958/108040对我们来说效果更好,因为您不必更改.plist
Robin Robin

24

这对我来说效果更好,无需触摸您的清单或其他技巧(对于plist自动生成的Xcode Server来说是完美的):

  1. 下载iExplorer(http://www.macroplant.com/iexplorer/
  2. 插入设备
  3. 删除“媒体>下载”中的所有文件
  4. 重启设备

这将重置设备缓存,现在您可以照常安装应用了。


3
谢谢,您是救生员。我使用的是iMacrowse(ibrowseapp.com),该软件可从Macroplant免费获得-Min
Soe

2
这对我们很有用...在删除媒体内容后,不要忘记重启设备->下载
Robin

感谢工作!但是仍然认为这样做需要在每个用户的电话上完成!
阿马尔·穆耶布

“清除所有内容和设置”(在“设置”应用程序下)是否起作用?
onmyway133 2015年

Downloads文件夹的内容是什么?
HamzaGhazouani

16

我有同样的问题。我通过以下方式复制了它:

1)从iOS 7升级到iOS 8 GM时安装我的应用程序

2)在iOS 8中将其删除

3)尝试通过itms-services安装:具有相同的捆绑包名称

当我尝试更改服务器plist(而不是应用程序Info.plist)中的bundle-identifier时,它起作用了(下载了应用程序后,没有“影子”图标)。但它看起来像是个苹果虫。


1
但是您还必须在应用程序中更改捆绑包名称,不是吗?我尝试仅更改服务器plist,结果是:9月18日09:59:20 XXX-iPhone filecoordinationd [123] <警告>:沙箱拒绝订阅com.mo2o.XXX类(捆绑ID com.apple.iaptransportd ,037BE63A-8737-4A4B-9C9D-B8FAF8DC0D40)9月18日09:59:20 XXX-iPhone filecoordinationd [123] <警告>:沙箱拒绝订阅com.mo2o.XXX类别(包ID(空),0B9D3B2A- 2B5D-4882-8771-61784326E507)和应用未安装
Eva Madrazo

嗯,我不对,它会记录警告,但也会安装该应用程序。
伊娃·马达拉佐

这很好用,但是有一个小缺点。在安装过程中,设备不知道您要更新哪个应用程序,因此在安装过程中会看到另一个应用程序图标。安装后,此问题会自动纠正。
伊沃·扬施

4
值得一提的是,在该bulldozer.io文章中它说:“似乎已安装开发者证书的设备似乎没有受到影响”。尚不清楚“开发者证书”的含义(我猜是一个开发配置文件,它“覆盖”了相关应用程序),但这可以解释在不同设备上重现该问题的问题。
astletron

11

可接受的解决方案不再适用于iOS9。

我的理解是,Apple通过阻止即席二进制文件替换库存应用程序或从App Store下载的应用程序,填补了一个严重的iOS安全漏洞。参见本文了解背景信息(CVE-2015-3722 / 3725和CVE-2015-3725):

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

考虑到安全性,我希望这种行为在将来的IOS版本中不会改变。替代选项似乎是:

  • 在安装即席安装之前删除App Store版本
  • 通过更改应用程序和分发列表中的捆绑包ID,将即席分发为“新”应用程序
  • 使用TestFlight

看起来你是对的。在全新安装或更新该应用程序的先前特定版本时,它可以正常工作,但从App Store安装已安装的版本时,该功能不起作用。
查尔斯

这是苹果为何做出更改的另一个提示:loopinsight.com/2015/10/05/…–
弗朗斯

虽然我了解关闭安全性的必要性,但这使我们处于一个有趣的场景,在这种场景中,如果不使用TestFlight,就​​无法在已部署的版本上测试从一个版本到另一个版本的升级。似乎具有相同开发人员的临时配置文件和证书签名的应用程序应该可以升级。
lidsinker

@charles,“它可以在全新安装或更新该应用程序的以前特定版本时正常工作,”您测试过吗?因为我们在IOS9中遇到了这个临时更新临时问题.....
flypig

@flypig当时我已经在iOS 9上尝试过了,而且确实起作用。抱歉,我没有尝试过。
查尔斯

9

Gil所说的似乎是正确的,但更具体地说,我发现我还需要增加server.plist中的bundle-version字符串:

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

这至少允许您完成OTA安装。

(对不起...本来可以添加到评论中的,但是我太多了。)


9

看一下这个答案这个答案

您可以毫无问题地解决此问题,对于iOS8,您必须assets在清单.plist文件的密钥中包含display-imagefull-size-image密钥中密钥。当为企业和临时部署保存存档时,它们在Xcode 5中可用,但不是必需的。

我已经在github上使用install-manifet.plist文件的模板创建了一个要点。


7
包括两个键在内,我实际上遇到了这个问题。
肖恩·丹泽塞

是的,我更改了捆绑包标识符,它起作用了。不为之兴奋。
肖恩·丹泽塞

大!我还将所有内容移至子文件夹,仅调整了ipa文件的MD5。
Felipe FMMobile

3

此错误最早在iOS8 Beta5中发现。苹果仍未在GM种子和iOS8.0官方版本中修复此问题。在这里可以找到更多讨论区

我正在测试当前的解决方法:

  • 如果您不关心设备中的内容,请执行以下操作:在设备的DFU模式下进行干净还原
  • 如果你想把东西还回来
    1. 还原之前,请先在iTunes中备份您的iOS设备(无Ad-Hoc /企业应用程序)
    2. 干净地还原设备后,安装Ad-Hoc / enterprise应用
    3. 从iTunes还原您的备份
    4. 现在,您可以自由删除那些临时/企业应用程序并重新安装它们。

1
仍未在8.1中修复
凯文

2
仍未在8.2中修复。......也许我们全世界只有15个人在制作企业应用程序。
卡尔·海因茨·布雷默雷东多

3

通过更改plist中的包标识符解决了问题。

通常,点击itms链接后,它将显示桌面,其中显示图标安装。但是,对于我的iOS 8.0设备,点击itms链接后,它不会更改为安装页面,但安装已经可以进行。


2

这是极端的情况,但是如果您不能更改捆绑包标识符(我不能这样做),则可以通过iTunes将iPhone还原到最新的iOS 8并从备份还原来解决此问题。


您不应该还原iPhone-
Sergey Kopanev 2015年

1

iOS 10 beta 1上存在相同的问题。

12月31日19:01:32 iphone-6s itunesstored [98]:LoadExternalDownloadManifestOperation:忽略清单下载,已经具有bundleID:com。***************。ios,其阶段:SSDownloadPhaseWaiting

我在这里不明白的一件事是XCode设备日志中的日期是12月31日,但是,设备配置了正确的日期和时间。

更新: HockeyApp的家伙在WWDC期间通知了苹果有关此问题的信息,并且应该在下一个种子中进行修复。


1
iOS 10上的相同问题
Crossle Song

0

如果您使用构建脚本来构建iOS应用,并且以前使用带有--sign标志的PackageApplication,则可能会导致问题。当在10.10上构建并删除它时,--sign标志不再起作用,再次安装了我们所有的iOS应用程序。

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


这正在解决一个不同的问题,并且与OP所要求的与构建而不是安装有关。
wottle

我不同意。b5中引入了一个行为更改,该更改导致签名IPA无法加载。假设OP的清单文件中没有错误,则实际上可以保证签名的IPA不能完全按照他们提供的错误安装。由于他们没有提及如何构建IPA,所以我不能肯定地说为什么会失败。另一方面,从我们的IPA中删除信号会重新安装它们。
詹姆斯·摩尔

可能是正确的,但是如果您查看原始问题中指定的错误:“忽略清单下载,已经具有bundleID:”,则显然与现在广泛讨论的企业应用程序上的iOS8错误以及无法安装应用程序有关在升级到iOS8之前已安装的版本,然后在升级到iOS8之后进行卸载。您可能正在解决问题,但这不是OP所遇到的问题。
wottle 2014年

0

确保您具有完整的互联网访问权限。

我在OTA安装和IOS8上遇到了同样的问题。因为我在公司代理后面,所以直到我设置手动代理设置(IOS7中不需要)才能解决该问题,以上解决方案才起作用。


0

我刚在运行8.1的设备上遇到此问题,将该设备升级到8.3已解决了该问题。因此,该错误不再存在于8.3 ....中,或者无论如何升级操作都会清除缓存的数据。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.