Phân phối bản cập nhật ứng dụng doanh nghiệp trên iOS 8


111

Tôi có một ứng dụng dành cho doanh nghiệp mà tôi đang phân phối qua itmsURL:

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

Trên iOS 7, cả tải xuống và cập nhật đều hoạt động tốt. Tuy nhiên, trên iOS 8, tôi gặp lỗi:

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

Trong plist của tôi, tôi có

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

và trên ứng dụng của tôi trên iOS 8, tôi đang chạy phiên bản 0.2.1


1
Bạn đang chạy phiên bản iOS8 nào. Tôi đã nghe nói về những người có vấn đề như thế này với Beta 5.
Anil Natha

7
Chính xác cùng một vấn đề. iOS 8 GM. Các ứng dụng này chỉ từ chối tải xuống ngay bây giờ.
Carl Sjogreen

3
Tôi đang chạy ios8.0 được phát hành chính thức và quá trình cài đặt sẽ không bắt đầu. Tôi đã xem xét gói và có một thông báo nói trong: "<Cảnh báo>: LoadExternalDownloadManifestOperation: Bỏ qua tải xuống tệp kê khai, đã có packID: MYBUNDLENAME" ... khôi phục thiết bị hoặc thay đổi id gói sẽ thực hiện thủ thuật
user2387149 23/09


1
@pcperini Tôi nghĩ câu trả lời trong bài đăng khác có nhiều thông tin hơn. Không có ý định phạm tội.
Kristopher Johnson

Câu trả lời:


91

Tôi cũng đã gặp sự cố này với việc phân phối ứng dụng của chúng tôi. Chúng tôi đã có thể khắc phục sự cố này bằng cách 'giả mạo' số nhận dạng gói bên trong .plist sử dụng để phân phối tải xuống, giữ nguyên số nhận dạng gói ipa của chúng tôi.

Ví dụ, trong danh sách của bạn:

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

thay đổi com.mycom.MyApp thành com.mycom.MyApp.ios8fix

Ứng dụng sẽ được cài đặt bằng biểu tượng ứng dụng mới, biểu tượng này sẽ biến mất sau khi cài đặt.

Nếu bạn đã cài đặt ứng dụng, bạn thậm chí sẽ thấy biểu tượng ứng dụng mới trong khi cài đặt. Sau khi cài đặt, biểu tượng này sẽ biến mất, nhưng phiên bản ứng dụng hiện có của bạn sẽ được cập nhật. Với một cài đặt sạch, biểu tượng cài đặt sẽ biến mất và biểu tượng ứng dụng đã cài đặt sẽ xuất hiện tại chỗ.

Có vẻ như iOS 8 đang lưu vào bộ nhớ đệm các số nhận dạng gói và so sánh các lượt cài đặt được yêu cầu với các lượt cài đặt được lưu trong bộ nhớ cache này. Hầu hết các lần bạn sẽ chỉ thấy một cửa sổ bật lên yêu cầu cài đặt, nhưng không có gì xảy ra.

Như Sean đã nhận thấy, điều này xuất hiện với xCode 6 GM và phiên bản iOS 8 chính thức. Các thiết bị chưa từng cài đặt ứng dụng của bạn trước đây sẽ không có vấn đề gì khi cài đặt ứng dụng.


3
Nó hoạt động trên một số thiết bị, nhưng một số thiết bị khác nghiên cứu kỹ nhật ký hệ thống vẫn hiển thị id gói trước đó, ngay cả khi tôi đã thay đổi tệp plist.
đền

Trên thực tế cung cấp hình ảnh được giải pháp đúng - kiểm tra câu trả lời này stackoverflow.com/a/26283611/276656
mspasov

3
Trong trường hợp của tôi, việc thay đổi mã nhận dạng gói hoạt động trên một số thiết bị - không phải tất cả. Sau khi thay đổi đường dẫn đến plist chính nó đã giải quyết nó cho tôi.
pawi

1
Danh sách .plist để chỉnh sửa ở đâu nếu bạn đang tải xuống ứng dụng từ Máy chủ Xcode?
Collin

1
Câu trả lời này stackoverflow.com/a/28727958/108040 hoạt động tốt hơn cho chúng tôi vì bạn không phải thay đổi .plist
Robin

24

Điều này hoạt động tốt hơn đối với tôi, không cần phải chạm vào tệp kê khai của bạn hoặc thủ thuật khác (hoàn hảo cho Máy chủ Xcode nơi tệp plistđược tạo tự động):

  1. Tải xuống iExplorer ( http://www.macroplant.com/iexplorer/ )
  2. Cắm thiết bị của bạn
  3. Xóa tất cả các tệp trong "Phương tiện> Tải xuống"
  4. Thiết bị khởi động lại

Thao tác này sẽ đặt lại bộ nhớ đệm của thiết bị, bây giờ bạn có thể cài đặt ứng dụng của mình như bình thường.


3
Cảm ơn, bạn là một người tiết kiệm cuộc sống. Tôi sử dụng iBrowse ( ibrowseapp.com ) đó là miễn phí từ Macroplant
Min Soe

2
Điều này rất hiệu quả đối với chúng tôi ... đừng quên khởi động lại thiết bị sau khi xóa nội dung của Media -> Tải xuống
Robin

cảm ơn đã làm việc! Nhưng vẫn nghĩ rằng nó có cần phải được thực hiện trên điện thoại của mỗi người dùng!
Ammar Mujeeb

"Xóa tất cả nội dung và cài đặt" (trong ứng dụng Cài đặt) có hoạt động không?
onmyway133

Nội dung của thư mục Tải xuống là gì?
HamzaGhazouani

16

Tôi đang gặp vấn đề tương tự. Tôi đã tái tạo nó bằng cách:

1) Đã cài đặt ứng dụng của tôi khi nâng cấp từ iOS 7 lên iOS 8 GM

2) Xóa nó trong iOS 8

3) Cố gắng cài đặt nó qua itms-services: với cùng một tên gói

Khi tôi cố gắng thay đổi số nhận dạng gói trong danh sách máy chủ (không phải trong ứng dụng Info.plist), nó đã hoạt động (ứng dụng được tải xuống không còn biểu tượng "bóng"). Nhưng nó trông giống như một con bọ táo.


1
Nhưng bạn cũng phải thay đổi tên gói trong ứng dụng, phải không? Tôi đã thử chỉ thay đổi danh sách máy chủ và kết quả là: 18 tháng 9 09:59:20 XXX-iPhone filecoordinationd [123] <Cảnh báo>: hộp cát bị từ chối đăng ký tiến trình trên danh mục com.mo2o.XXX (gói id com.apple.iaptransportd , 037BE63A-8737-4A4B-9C9D-B8FAF8DC0D40) Ngày 18 tháng 9 09:59:20 XXX-iPhone filecoordinationd [123] <Cảnh báo>: hộp cát bị từ chối đăng ký tiến trình trên danh mục com.mo2o.XXX (gói id (null), 0B9D3B2A- 2B5D-4882-8771-61784326E507) và ứng dụng không cài đặt
Eva Madrazo

mmm tôi không đúng, nó ghi cảnh báo nhưng nó cũng cài đặt ứng dụng.
Eva Madrazo,

Điều này hoạt động tốt, tuy nhiên có một nhược điểm nhỏ. Trong khi cài đặt, thiết bị không biết bạn đang cập nhật ứng dụng nào, vì vậy bạn sẽ thấy biểu tượng ứng dụng thứ hai trong khi cài đặt. Sau khi cài đặt, điều này sẽ tự động được sửa chữa.
Ivo Jansch

4
Đáng chú ý là trong bài báo bulldozer.io đó nói rằng "có vẻ như các thiết bị đã cài đặt chứng chỉ nhà phát triển không bị ảnh hưởng". Không rõ 'chứng chỉ nhà phát triển' có nghĩa là gì (tôi đoán là một hồ sơ cấp phép phát triển 'bao gồm' ứng dụng được đề cập), nhưng điều này có thể giải thích các vấn đề khi tái tạo sự cố trên các thiết bị khác nhau.
astletron

11

Giải pháp được chấp nhận không còn hoạt động trên iOS9.

Tôi hiểu rằng Apple đã đóng một lỗ hổng bảo mật nghiêm trọng của iOS bằng cách ngăn chặn các tệp nhị phân adhoc thay thế các ứng dụng gốc hoặc ứng dụng được tải xuống từ App Store. Xem bài viết này để biết thông tin cơ bản (CVE-2015-3722 / 3725 và CVE-2015-3725):

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

Xem xét các tác động bảo mật, tôi sẽ không mong đợi hành vi này sẽ thay đổi trong các phiên bản IOS trong tương lai. Các tùy chọn thay thế dường như là:

  • xóa phiên bản App Store trước khi cài đặt adhoc
  • phân phối adhoc dưới dạng ứng dụng 'mới' bằng cách thay đổi id gói trong cả ứng dụng và danh sách phân phối
  • sử dụng TestFlight

Có vẻ như bạn nói đúng. Nó hoạt động tốt khi cài đặt mới hoặc cập nhật phiên bản adhoc trước đó của ứng dụng, nhưng nó không hoạt động khi phiên bản đã cài đặt được cài đặt từ App Store.
charles

Đây là một gợi ý tại sao Apple thực hiện thay đổi: loopinsight.com/2015/10/05/...
Frans

Mặc dù tôi hiểu sự cần thiết phải đóng bảo mật, nhưng điều này đặt chúng tôi vào một tình huống thú vị, nơi chúng tôi không thể kiểm tra các nâng cấp từ phiên bản này sang phiên bản khác trên phiên bản đã triển khai mà không cần đến TestFlight. Có vẻ như một ứng dụng được ký bởi một hồ sơ đặc biệt và chứng chỉ cho cùng một nhà phát triển sẽ có thể được nâng cấp.
lidsinker

@charles , "Nó hoạt động tốt khi cài đặt mới hoặc cập nhật phiên bản adhoc trước đó của ứng dụng", bạn đã thử nghiệm chưa? bởi vì chúng tôi gặp phải sự cố cập nhật adhock này trong IOS9 .....
flypig

@flypig Tôi đã thử nó trên iOS 9 vào thời điểm đó và nó đã hoạt động. Tôi đã không cố gắng kể từ đó, xin lỗi.
charles

9

Những gì Gil nói có vẻ đúng, nhưng cụ thể hơn, tôi thấy rằng tôi cũng cần tăng chuỗi phiên bản gói trong server.plist:

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

Điều này ít nhất cho phép bạn hoàn thành cài đặt OTA.

(Xin lỗi ... Tôi đã thêm vào bình luận, nhưng tôi quá nhiều n00b.)


9

Hãy xem qua câu trả lời nàycâu trả lời này .

Bạn có thể khắc phục sự cố này mà không cần bất kỳ hack nào, đối với iOS8, bạn phải đưa vào assetskhóa của tệp kê khai .plistcác khóa display-imagefull-size-image. Chúng có sẵn trong Xcode 5 khi lưu kho lưu trữ cho doanh nghiệp và triển khai add-hoc, nhưng không bắt buộc.

Tôi đã tạo ý chính trên github với mẫu cho tệp install-Maniet.plist .


7
Tôi đã thực sự gặp sự cố này với cả hai khóa đó.
Sean Danzeiser

ya tôi đã thay đổi mã nhận dạng gói và nó hoạt động. Không vui về nó.
Sean Danzeiser

Tuyệt quá! Tôi cũng đã chuyển mọi thứ vào một thư mục con và chỉ điều chỉnh MD5 của tệp ipa.
Felipe FMMobile

3

Đây là lỗi lần đầu tiên được tìm thấy trong iOS8 Beta5. Và nó vẫn chưa được Apple khắc phục ở bản GM seed và iOS8.0 chính thức. Có thể tìm thấy nhiều thảo luận hơn ở đây

Cách giải quyết hiện tại đang được tôi thử nghiệm:

  • Nếu bạn không quan tâm đến nội dung trong thiết bị của mình: hãy khôi phục sạch sẽ ở chế độ DFU của thiết bị
  • Nếu bạn muốn mọi thứ của bạn trở lại
    1. Sao lưu Thiết bị iOS của bạn trong iTunes trước khi khôi phục (không có Ad-Hoc / ứng dụng doanh nghiệp)
    2. Sau khi khôi phục thiết bị của bạn một cách sạch sẽ, hãy cài đặt ứng dụng Ad-Hoc / Enterprise của bạn
    3. Khôi phục bản sao lưu của bạn từ iTunes
    4. Giờ đây, bạn có thể thoải mái xóa các ứng dụng Ad-Hoc / Enterprise đó và cài đặt lại chúng.

1
Vẫn chưa được sửa trong 8.1
Kevin

2
Vẫn chưa được sửa trong 8.2 ....... Có lẽ chỉ có 15 người trên thế giới chúng tôi tạo ra các ứng dụng doanh nghiệp.
Karl Heinz Brehme Arredondo,

3

Sự cố được giải quyết bằng cách thay đổi mã nhận dạng gói trong plist.

Thông thường, sau khi nhấn vào liên kết itms, nó sẽ hiển thị màn hình nền hiển thị cài đặt biểu tượng. Tuy nhiên, đối với thiết bị iOS 8.0 của tôi, sau khi nhấn vào liên kết itms, nó sẽ không chuyển sang trang cài đặt nhưng cài đặt đã hoạt động ở phía sau.


2

Điều này là cực kỳ nghiêm trọng nhưng nếu bạn không thể thay đổi số nhận dạng gói của mình, điều mà tôi không thể thực hiện được, việc khôi phục iPhone của bạn thông qua iTunes lên iOS 8 mới nhất và khôi phục từ bản sao lưu sẽ khắc phục được sự cố.


Bạn không nên khôi phục iPhone - chỉ cần vài bước updraft.beekeeper.io/post/2046721
Sergey Kopanev

1

Vấn đề tương tự cũng tồn tại trên iOS 10 beta 1.

Ngày 31 tháng 12 19:01:32 iphone-6s itunesstored [98]: LoadExternalDownloadManifestOperation: Bỏ qua tải xuống tệp kê khai, đã có packID: com. ***************. Ios với phase: SSDownloadPhaseWaiting

Một điều mà tôi không hiểu ở đây là ngày đó là ngày 31 tháng 12 trong nhật ký thiết bị XCode, tuy nhiên, thiết bị đã được định cấu hình đúng ngày và giờ.

Cập nhật: Các anh chàng từ HockeyApp đã thông báo cho Apple về sự cố này trong WWDC và bản sửa lỗi sẽ đến trong hạt tiếp theo.


1
cùng một vấn đề trên iOS 10
Crossle Song,

0

Nếu bạn xây dựng ứng dụng iOS của mình bằng tập lệnh xây dựng và trước đó bạn đang sử dụng PackageApplication với cờ --sign thì điều đó có thể gây ra sự cố. Cờ --sign không hoạt động nữa khi xây dựng trên 10.10 và việc gỡ bỏ nó sẽ khiến tất cả các ứng dụng iOS của chúng tôi cài đặt lại.

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


Đó là giải quyết một vấn đề khác và liên quan đến việc xây dựng chứ không phải cài đặt, như OP đang yêu cầu.
wottle

Tôi không đồng ý. Có một thay đổi hành vi được giới thiệu trong b5 khiến IPA đã ký không tải được. Giả sử OP không có lỗi trong tệp kê khai của họ thì IPA đã ký hầu như được đảm bảo không thể cài đặt với chính xác lỗi mà họ đã cung cấp. Vì họ không đề cập đến cách họ xây dựng IPA của mình nên tôi không thể nói chắc chắn tại sao nó không thành công. Mặt khác, việc xóa dấu hiệu khỏi IPA của chúng tôi đã giúp tất cả chúng được cài đặt lại.
James Moore,

Điều đó có thể đúng, nhưng nếu bạn phát hiện ra lỗi được chỉ định trong câu hỏi ban đầu: "Bỏ qua tải xuống tệp kê khai, đã có packID:", thì rõ ràng nó có liên quan đến lỗi iOS8 hiện được thảo luận rộng rãi trên các ứng dụng doanh nghiệp và không thể cài đặt ứng dụng đã được cài đặt trước khi nâng cấp lên iOS8, sau đó gỡ cài đặt sau khi nâng cấp lên iOS8. Bạn có thể đang giải quyết một vấn đề, nhưng đó không phải là vấn đề OP đang gặp phải.
wottle

0

Đảm bảo rằng bạn có toàn quyền truy cập internet.

Tôi đã gặp phải vấn đề tương tự với cài đặt OTA và IOS8. Vì tôi đứng sau proxy công ty nên các giải pháp trên không hoạt động cho đến khi tôi đặt cài đặt proxy thủ công (không cần thiết trong IOS7) để giải quyết vấn đề đó.


0

Tôi vừa gặp sự cố này trên thiết bị chạy 8.1, nâng cấp thiết bị lên 8.3 đã giải quyết được sự cố. Vì vậy, lỗi không còn xuất hiện trong 8.3 .... hoặc hành động nâng cấp đã xóa dữ liệu được lưu trong bộ nhớ cache.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.