#292 ✓resolved

ideviceinstaller -i fails with "missing CFBundleName"

Reported by Quincy | October 17th, 2012 @ 11:31 PM

When playing around with an older iPhone 3G and libiphone/ideviceinstaller I was first amazed how well most things are working.
I tried to install/uninstall some apps and it worked perfectly. Then I came across a game called "Cover Orange", which has been installed via iTunes. a backup could be taken as usual, but when trying to reinstall the app or also trying to install the original .ipa ideviceinstaller complains about missing CFBundleName.
I tried to understand whats going on (I have no experience in programming iPhone apps at all), because I thought the badly written gaming app could be the reason. After getting to know "plutil" I was able to confirm, that CFBundleName indeed is missing from Info.plist. Apple Dev documents state, that CFBundleName is just "recommended", so I think that leaving this out should be OK at all, but ideviceinstaller relies on this entry.
So my idea was to edit Info.plist and add the missing entry because from the code of ideviceinstaller it seemed to be used just for finding "Payload/%s.app/SC_Info/%s.sinf". I added the property to the xml text file, repacked as zip and renamed to .ipa. Having done that the installation aborts with "Install - Error occured: ApplicationVerificationFailed". The telephone's syslog tells me that some signing is needed, so my way of fooling the system does not work.
The consequence was to modify ideviceinstaller to use "CFBundleExecutable" instead of "CFBundleName" which was matching the needed string. The new version worked well for the original .ipa file. Furthermore CFBundleExecutable is present in all of my apps (not that many) with the needed value. This is mostly identical to CFBundleName, but the exceptions need the value of CFBundleExecutable for their directory structure rather than CFBundleName.

Please do further investigation and consider changing the used property.

Comments and changes to this ticket

  • Martin S.

    Martin S. October 21st, 2012 @ 03:09 PM

    • State changed from “new” to “resolved”
    • Tag set to ideviceinstaller, info.plist
    • Assigned user set to “Martin S.”

    Thanks for the very detailed report and investigation!

    The "ApplicationVerificationFailed" error is received because by altering the app archive you broke the app's signature and thus the device won't accept the modified archive anylonger.

    You are right about the use of CFBundleName. Infact CFBundleExecutable is used to construct the path to the "executable" as it's name suggests. If it's not present, the device won't start an app either.

    We switched to use CFBundelExecutable in git master now:

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.

New-ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป

A project around supporting the iPhone in Linux.

See http://libimobiledevice.org

People watching this ticket

Referenced by