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. 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:
http://cgit.sukimashita.com/ideviceinstaller.git/commit/?id=02fff36...
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.
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
Referenced by
- 298 ideviceinstaller -i fails with "could not locate Payload/<appname>.app/Info.plist in archive!" Similar to ticket #292 the path construction while instal...