I programmed a small app for iOS, and I used Mac OS X 10.6.6, Xcode 3.2.5 and iOS SDK 4.2, all running in a Virtual Box machine 4.0.
now I want the app to run on my iphone and to distribute it to some beta testers. because I'm not a registered apple developer and I don't want to pay $99 to apple, I need to find some other way.
the first thing I found on the net is the tutorial of alex whittemore:
I followed the instructions by creating a self sign root certificate,binary patching the Xcode program and adding some scripts to the build process. afterwards, I switched to from "debug" to "release" mode and from "simulator" to "device". the build-process ends with a warning-message:
Application failed codesign verification. The signature was invalid, or it was not signed with an Apple submission certificate. (-19011)
but I still have a appname.app folder in the Release-iphoneos-folder, which I can transfer via ssh or scp in the /Applications/-folder of my jailbroken iphone. afterwards I call "uicache" on the iphone and the app is shown in springboard. I can also start the app and everything works fine.
now is the problem, that I want an IPA file of my app. as I read on the net, an IPA file is nothing more than the appname.app folder in a folder called "Payload", zipped together with two files called iTunesArtwork and iTunesMetadata.plist. I created the iTunesArtworks file out of an 512x512 jpeg image and the plist file from some preset I found on the net. afterwards, the appname.zip file has to be renamed to appname.ipa. I did this process manually and transfered the IPA file via scp to the download-folder of my installous-app on my iphone. then I started installous and tried to install my app - there comes the error message:
installation failed: invalid ipa
I did a search on the net for this error message and found something about updating my Appsync and Installous-installation. I updated both programs from the hackulo.us-repository, but this didn't help.
so I thought, that I did something wrong during the IPA-creation-process. I did some research and found out, that it is possible to drag and drop the appname.app-folder to itunes, which automatically makes an IPA file of it. then you can find the IPA file in some folder of iTunes. I copied this file to the download folder of installous on my iphone and tried to install this file again, but the same error message is shown.
how can I make a valid IPA file for installous, if I have a self-signed app? does installous check the signature?
maybe someone has a hint for me...
I found a solution for my problem.
because I wanted more information on the installous-error-message, I installed "syslog toggle" and "syslogd to /var/log/syslog" via cydia on my iphone to log detailed information to /var/log/syslog. then I tried to install the IPA file again and I got a message in the syslog from the installd daemon, that the IPA file has a minimum-iOS-version requirement of 4.2, while my iphone is running under iOS 4.0.
*installd: 00503000 verify_bundle_metadata: The system version is lower than the minimum OS version*
interessingly there was no problem to install the app as system application by copying the appname.app-folder via ssh to /Applications/, but with the wrong minimum-iOS-version-parameter build in. so I rebuild my app with the right minimum-iOS-version for my iphone.
I tried to install again, but again I got an error message about an invalid IPA. this time the installd daemon tells me in the syslog of my iphone, that it couldn't install an system application:
*installd: 00503000 preflight_application_install: Can't install System or Internal apps*
this problem was easy to solve, because I still had the app installed as system application in /Applications/. I just needed to delete the /Applications/appname.app folder and call "uicache" twice with the user "mobile" via ssh. then I startet installous again and tried to install my IPA file - et voila: IT WORKED!!
maybe I was able to help someone with a similar problem. it seems to be a good idea to install the syslog-apps via cydia to have a closer look for the error messages of installous, if some generic error message like "invalid ipa" appears.
ps: I was really irritated, that my question was closed by the moderator! just because someone thinks, that my question is "not generally applicable to the worldwide audience of the internet." it's soooo stupid to close questions! now you see: I got a solution and I posted it here.. maybe it will help someone in the future! you shouldn't make the same fault as wikipedia by over-controlling the user content.