Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ProvisionsAllDevices vs ProvisionedDevices in embedded.mobileprovision

Tags:

iphone

I recently received an ipad app as a .ipa file.

To install the app, i renamed it to .zip and fished out the app file and using the Iphone Configuration Utility was able to smoothly install it onto my iPad (it is iOS 4.2.1 and it is not Jail Broken.)

Normally when we deliver our apps, we need to prepare a provision profile with a list of enabled devices, and it would install only on those devices.

I opened the file embedded.mobileprovision and was surprised to see this setting:

<key>ProvisionsAllDevices</key>
<true/>

Normally in our profiles, there is a predefined set of UDID's that can install it:

<key>ProvisionedDevices</key>
    <array>
        <string>caf2b03e4a4e1a80d9492c8bdcea0ea8df6a14a7</string>
        <string>1a5b7515ed0751d6de312f9520267f502b20eab0</string>
        <string>f4c368bb6c27119feb877e0d95d3891166ab48c8</string>
        <string>72234de7149e980a9e659e5417f764c47c5e7327</string>
    </array>

I tried to create an Ad Hoc profile on the iOS portal, but it immediately want to know the list of devices enabled for the profile.

So i'm really curious how this was done!

My questions are:

  1. Any ideas what this "ProvisionsAllDevices" setting is?
  2. Could it be something that is only possible with an Enterprise Developer Account?
like image 710
Sunny Avatar asked Apr 23 '11 11:04

Sunny


People also ask

What is the purpose of a provisioning profile?

A provisioning profile links your signing certificate and App ID so that you can sign apps to install and launch on iOS devices. You must have a development provisioning profile to sign apps for use with iOS Gateway version 3.4 and later.

What is embedded provision profile?

A provisioning profile is downloaded from your developer account and embedded in the app bundle, and the entire bundle is code-signed. A Development Provisioning Profile must be installed on each device on which you wish to run your application code.

What is Apple provision?

Overview. The profiles resource represents the provisioning profiles that allow you to install apps on your iOS devices or Mac. You can create and delete provisioning profiles, and download them to sign your code. Provisioning profiles include signing certificates, device identifiers, and a bundle ID.

What is a provisioning file?

Provisioning files provide an easy way to deploy enterprise single-use licenses in an enterprise environment by prepopulating user and authorization information in the Software Authorization Wizard.


2 Answers

I checked the provisioning profiles from my Entreprise account:

<key>ProvisionsAllDevices</key>
<true/>

is present in all In House Distribution profiles. As far as I know, it's only available for Enterprise accounts:

Enrolled iOS Developers in the Enterprise program have the ability to distribute their in-house applications without the requirement of identifying individual devices or submitting the application to the App Store.

[...]

Please ensure to protect the distribution mechanism of this type of application as it can be installed on any Apple device if compromised.

(from the Developer Program User Guide — Enterprise Program)

like image 103
Jilouc Avatar answered Sep 29 '22 08:09

Jilouc


I checked it myself and figure out that when you create an enterprise IPA - it for all devices, with:

<key>ProvisionsAllDevices</key>

and when it an ad Hoc, it only for limited devices:

<key>ProvisionedDevices</key>
<array>
    <string>caf2b03e4a4e1a80d9492c8bdcea0ea8df6a14a7</string>
    <string>1a5b7515ed0751d6de312f9520267f502b20eab0</string>
    <string>f4c368bb6c27119feb877e0d95d3891166ab48c8</string>
    <string>72234de7149e980a9e659e5417f764c47c5e7327</string>
</array>
like image 29
yonivav Avatar answered Sep 29 '22 10:09

yonivav