I'm able to query device information, get list of profiles installed on the device etc, but am unable to install a profile onto the device.
I've configured a restrictions profile. When I host it on my server and download it via Safari, it installs. But when I encode it as base64 (as per MDM requirements) and try installing it, I get the following error.
DM: Attempting to perform MDM request: InstallProfile
Oct 10 10:25:32 iPhone-4 mdmd[516] <Notice>: (Error) MC: Failed to parse profile data. Error: NSError:
Desc : Invalid Profile
US Desc: Invalid Profile
Domain : MCProfileErrorDomain
Code : 1000
Type : MCFatalError
Oct 10 10:25:32 iPhone-4 mdmd[516] <Notice>: (Error) MDM: Command Status: Error
Error: NSError:
Desc : Invalid Profile
US Desc: Invalid Profile
Domain : MCProfileErrorDomain
Code : 1000
Type : MCFatalError
Below is the Base64 encoded data of the profile I'm trying to install. I generated the below data based on the suggestions here and here
PHBsaXN0IHZlcnNpb249IjEuMCI+CjxkaWN0PgoJPGtleT5QYXlsb2FkQ29udGVudDwva2V5PgoJ
PGFycmF5PgoJCTxkaWN0PgoJCQk8a2V5PlBheWxvYWREZXNjcmlwdGlvbjwva2V5PgoJCQk8c3Ry
aW5nPjwvc3RyaW5nPgoJCQk8a2V5PlBheWxvYWREaXNwbGF5TmFtZTwva2V5PgoJCQk8c3RyaW5n
PlJlc3RyaWN0aW9uczwvc3RyaW5nPgoJCQk8a2V5PlBheWxvYWRJZGVudGlmaWVyPC9rZXk+CgkJ
CTxzdHJpbmc+Y28ubXltZG0ucmVzdHJpY3Rpb25zLnJlc3RyaWN0aW9uczE8L3N0cmluZz4KCQkJ
PGtleT5QYXlsb2FkT3JnYW5pemF0aW9uPC9rZXk+CgkJCTxzdHJpbmc+PC9zdHJpbmc+CgkJCTxr
ZXk+UGF5bG9hZFR5cGU8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuYXBwbGljYXRpb25hY2Nl
c3M8L3N0cmluZz4KCQkJPGtleT5QYXlsb2FkVVVJRDwva2V5PgoJCQk8c3RyaW5nPjg0MzA2NThB
LUY1MDQtNDA2MC1BOTUyLTc2MkUwMzg3NjY5Nzwvc3RyaW5nPgoJCQk8a2V5PlBheWxvYWRWZXJz
aW9uPC9rZXk+CgkJCTxpbnRlZ2VyPjE8L2ludGVnZXI+CgkJCTxrZXk+YWxsb3dBZGRpbmdHYW1l
Q2VudGVyRnJpZW5kczwva2V5PgoJCQk8dHJ1ZS8+CgkJCTxrZXk+YWxsb3dBcHBJbnN0YWxsYXRp
b248L2tleT4KCQkJPGZhbHNlLz4KCQkJPGtleT5hbGxvd0Fzc2lzdGFudDwva2V5PgoJCQk8dHJ1
ZS8+CgkJCTxrZXk+YWxsb3dBc3Npc3RhbnRXaGlsZUxvY2tlZDwva2V5PgoJCQk8dHJ1ZS8+CgkJ
CTxrZXk+YWxsb3dDYW1lcmE8L2tleT4KCQkJPHRydWUvPgoJCQk8a2V5PmFsbG93Q2xvdWRCYWNr
dXA8L2tleT4KCQkJPHRydWUvPgoJCQk8a2V5PmFsbG93Q2xvdWREb2N1bWVudFN5bmM8L2tleT4K
CQkJPHRydWUvPgoJCQk8a2V5PmFsbG93RGlhZ25vc3RpY1N1Ym1pc3Npb248L2tleT4KCQkJPHRy
dWUvPgoJCQk8a2V5PmFsbG93RXhwbGljaXRDb250ZW50PC9rZXk+CgkJCTx0cnVlLz4KCQkJPGtl
eT5hbGxvd0dsb2JhbEJhY2tncm91bmRGZXRjaFdoZW5Sb2FtaW5nPC9rZXk+CgkJCTx0cnVlLz4K
CQkJPGtleT5hbGxvd0luQXBwUHVyY2hhc2VzPC9rZXk+CgkJCTx0cnVlLz4KCQkJPGtleT5hbGxv
d011bHRpcGxheWVyR2FtaW5nPC9rZXk+CgkJCTx0cnVlLz4KCQkJPGtleT5hbGxvd1Bob3RvU3Ry
ZWFtPC9rZXk+CgkJCTx0cnVlLz4KCQkJPGtleT5hbGxvd1NhZmFyaTwva2V5PgoJCQk8dHJ1ZS8+
CgkJCTxrZXk+YWxsb3dTY3JlZW5TaG90PC9rZXk+CgkJCTx0cnVlLz4KCQkJPGtleT5hbGxvd1Vu
dHJ1c3RlZFRMU1Byb21wdDwva2V5PgoJCQk8dHJ1ZS8+CgkJCTxrZXk+YWxsb3dWaWRlb0NvbmZl
cmVuY2luZzwva2V5PgoJCQk8dHJ1ZS8+CgkJCTxrZXk+YWxsb3dWb2ljZURpYWxpbmc8L2tleT4K
CQkJPHRydWUvPgoJCQk8a2V5PmFsbG93WW91VHViZTwva2V5PgoJCQk8dHJ1ZS8+CgkJCTxrZXk+
YWxsb3dpVHVuZXM8L2tleT4KCQkJPHRydWUvPgoJCQk8a2V5PmZvcmNlRW5jcnlwdGVkQmFja3Vw
PC9rZXk+CgkJCTxmYWxzZS8+CgkJCTxrZXk+Zm9yY2VJVHVuZXNTdG9yZVBhc3N3b3JkRW50cnk8
L2tleT4KCQkJPGZhbHNlLz4KCQkJPGtleT5yYXRpbmdBcHBzPC9rZXk+CgkJCTxpbnRlZ2VyPjEw
MDA8L2ludGVnZXI+CgkJCTxrZXk+cmF0aW5nTW92aWVzPC9rZXk+CgkJCTxpbnRlZ2VyPjEwMDA8
L2ludGVnZXI+CgkJCTxrZXk+cmF0aW5nUmVnaW9uPC9rZXk+CgkJCTxzdHJpbmc+dXM8L3N0cmlu
Zz4KCQkJPGtleT5yYXRpbmdUVlNob3dzPC9rZXk+CgkJCTxpbnRlZ2VyPjEwMDA8L2ludGVnZXI+
CgkJCTxrZXk+c2FmYXJpQWNjZXB0Q29va2llczwva2V5PgoJCQk8aW50ZWdlcj4yPC9pbnRlZ2Vy
PgoJCQk8a2V5PnNhZmFyaUFsbG93QXV0b0ZpbGw8L2tleT4KCQkJPHRydWUvPgoJCQk8a2V5PnNh
ZmFyaUFsbG93SmF2YVNjcmlwdDwva2V5PgoJCQk8dHJ1ZS8+CgkJCTxrZXk+c2FmYXJpQWxsb3dQ
b3B1cHM8L2tleT4KCQkJPHRydWUvPgoJCQk8a2V5PnNhZmFyaUZvcmNlRnJhdWRXYXJuaW5nPC9r
ZXk+CgkJCTxmYWxzZS8+CgkJPC9kaWN0PgoJPC9hcnJheT4KCTxrZXk+UGF5bG9hZERlc2NyaXB0
aW9uPC9rZXk+Cgk8c3RyaW5nPlByb2ZpbGUgZGVzY3JpcHRpb24uPC9zdHJpbmc+Cgk8a2V5PlBh
eWxvYWREaXNwbGF5TmFtZTwva2V5PgoJPHN0cmluZz5HZW5lcmFsPC9zdHJpbmc+Cgk8a2V5PlBh
eWxvYWRJZGVudGlmaWVyPC9rZXk+Cgk8c3RyaW5nPmNvLm15bWRtLnJlc3RyaWN0aW9uczwvc3Ry
aW5nPgoJPGtleT5QYXlsb2FkT3JnYW5pemF0aW9uPC9rZXk+Cgk8c3RyaW5nPjwvc3RyaW5nPgoJ
PGtleT5QYXlsb2FkUmVtb3ZhbERpc2FsbG93ZWQ8L2tleT4KCTxmYWxzZS8+Cgk8a2V5PlBheWxv
YWRUeXBlPC9rZXk+Cgk8c3RyaW5nPkNvbmZpZ3VyYXRpb248L3N0cmluZz4KCTxrZXk+UGF5bG9h
ZFVVSUQ8L2tleT4KCTxzdHJpbmc+MUU4MjY0NEEtQjRCRi00RkM0LTgxQTgtNTdCRTFDOTg4MTg1
PC9zdHJpbmc+Cgk8a2V5PlBheWxvYWRWZXJzaW9uPC9rZXk+Cgk8aW50ZWdlcj4xPC9pbnRlZ2Vy
Pgo8L2RpY3Q+CjwvcGxpc3Q+Cg==
I have enabled profile installation in the MDM payload. Please help me in figuring out the problem.
You are missing the XML Declaration and the plist doctype. Add the following two lines to the top of the profile (before base64 encoding it):
<?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">
The problem is solved. Just out of annoyance I removed the extra spaces between the XML tags of the .mobileConfig. See below...
Changed
<dict>
<key>PayloadContent</key>
<array>
<dict>
<key>PayloadDescription</key>
<string></string>
<key>PayloadDisplayName</key>
<string>Restrictions</string>
..........
</dict>
to
<dict><key>PayloadContent</key><array><dict><key>PayloadDescription</key><string></string><key>PayloadDisplayName</key><string>Restrictions</string>..........</dict>
I used this site to encode it into base64. (for testing only)
For future viewers, you need to start from the <dict>
tag
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With