企业应用程序部署无法在iOS 8.1.3上安装

San*_*ago 34 install download ios

更新iOS 8.1.3后,我尝试下载,但出现错误" 无法下载应用程序 "和"此时无法安装 "消息.

我必须考虑8.1.2和8.1.3之间的变化是什么?

下载模式:
<a href ="itms-services://?action = download-manifest&url = https://****.plist">

谢谢!

小智 34

经过几个小时的破坏braincells,这是我如何做到的:

注意:我目前尚未针对iOS 8.1.2或更低版本进行测试(请谨慎使用!)

对于已经使用您的OWN企业证书签名的应用程序,您只需编辑manifest.plist即可(如RAStudios在其编辑中所述).

之前:

<key>bundle-identifier</key>
<string>uk.co.acme.AcmeApp</string>
Run Code Online (Sandbox Code Playgroud)

后:

<key>bundle-identifier</key>
<string>S836XXACME.uk.co.acme.AcmeApp</string>
Run Code Online (Sandbox Code Playgroud)

对于已由第三方签名且您正在使用企业证书进行签名的应用程序(本演练假设ipa文件为AcmeApp.ipa,您的权利文件为entitlements.plist,您的配置文件为provProvile.mobileprovision;所有文件在桌面文件夹(Mac OSX)中,S836XXACME是您的团队标识符):

创建一个新的entitlements.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>application-identifier</key>
<string>S836XXACME.uk.co.acme.AcmeApp</string>
<key>get-task-allow</key>
<false/>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

解压缩ipa:

cd ~/Desktop

unzip AcmeApp.ipa 
Run Code Online (Sandbox Code Playgroud)

删除代码签名:

rm -r Payload/AcmeApp.app/_CodeSignature/ 
Run Code Online (Sandbox Code Playgroud)

复制到mobileprovision文件中:

cp provProfile.mobileprovision Payload/AcmeApp.app/embedded.mobileprovision 
Run Code Online (Sandbox Code Playgroud)

协同设计:

codesign -f -s "iPhone Distribution: ACME Corporation Limited" --entitlements entitlements.plist Payload/AcmeApp.app
Run Code Online (Sandbox Code Playgroud)

将其作为辞职的ipa压缩:

zip -qr AcmeApp_resigned.ipa Payload/
Run Code Online (Sandbox Code Playgroud)

您还需要根据之前的'ALREADY'签名部分修改manifest.plist文件:

<key>bundle-identifier</key>
<string>S836XXACME.uk.co.acme.AcmeApp</string>
Run Code Online (Sandbox Code Playgroud)


iPw*_*ech 8

经过调查......

编辑: 经过进一步测试后,我发现只需匹配工具中的捆绑ID Info.plist和工作中的捆绑ID,即可manifest.plist在iOS 8.1.3上通过无线方式安装应用程序. 如果此解决方案不起作用,请尝试以下解决方案.


原始方案

解决问题:

您的应用程序必须具有有效权限entitlements.plist,其中包括更正应用程序的有效捆绑包标识符.

如果您要分发使用iOS开发证书签名的应用程序,请参阅您应用程序中应包含的entitlements.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>application-identifier</key>
    <string>com.yourbundleidhere.mycoolapp</string>
    <key>com.apple.developer.team-identifier</key>
    <string>com.yourbundleidhere.mycoolapp</string>
    <key>get-task-allow</key>
    <true/>
    <key>keychain-access-groups</key>
    <array>
        <string>com.yourbundleidhere.mycoolapp</string>
    </array>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

如果您使用的是通配符配置文件,请替换com.yourbundleidhere.mycoolappyourwildcardappid.*.在这两种情况下,您都可以使用iResign正确地重新签名应用程序,并包含现在需要的,entitlements.plist.

解释问题

由于安全补丁(见这里下CVE-2014-4493),未经entitlements.plist,应用程序将无法安装.安全补丁使应用程序不会覆盖现有应用程序并安装在其顶部/替换它们.


Joh*_*Gom 6

我已经做了很多实验.根据我的经验,manifest.plist文件中的bundle标识符实际上并不重要.最重要的是要使entitlements.plist正确.

我不建议手动创建它,而是建议使用以下脚本(信用)从配置文件生成它:

# Create an entitlements file
# parse provision profile
security cms -D -i "provProfile.mobileprovision" > ProvisionProfile.plist 2>&1

# generate entitilements.plist
/usr/libexec/PlistBuddy -x -c "Print Entitlements" ProvisionProfile.plist > Entitlements.plist 2>&1
Run Code Online (Sandbox Code Playgroud)

然后,您可以将此权利文件与codesign实用程序上的--entitlements选项一起使用.


小智 -1

ios 8.1.3:内部应用程序需要使用 MDM 进行分发。

移动安装

影响:恶意企业签名应用程序或许能够控制设备上已有应用程序的本地容器

描述:应用程序安装过程中存在漏洞。已通过防止企业应用程序在特定场景中覆盖现有应用程序来解决此问题。

来自苹果发布说明

  • 您好,感谢您在 stackoverflow 上的第一个回答。只是一个注释,以帮助提供一些回答问题的指导。仔细阅读问题。具体来说,这个问题要问什么?确保你的答案能够提供这一点——或者一个可行的替代方案。答案可以是“不要这样做”,但也应该包括“尝试这个”。任何能让提问者朝着正确方向前进的答案都是有帮助的,但请尝试在你的答案中提及任何限制、假设或简化。简洁是可以接受的,但更全面的解释更好。 (2认同)