Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

.app does not have an executable path after installing over an old build

I have a TestFlight build that one user has downloaded, then we released a new version and they installed over that build. They got this error when trying to launch the app:

Wed Aug 31 20:13:28 unknown SpringBoard[1176] : The 'X' bundle at /private/var/mobile/Applications/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/X.app does not have an executable path. Please check the bundle's Info.plist file.

I checked the app's plist using PhoneDisk and the executable matched the app name. Any ideas?

like image 256
roblocop Avatar asked Sep 01 '11 03:09

roblocop


People also ask

How do I change my build settings in Xcode?

Choose the project in the Project Navigator on the left. Select the Configurations target from the Targets section and click the Build Settings tab at the top. The Build Settings tab shows the build settings for the Configurations target. It's possible to expand this list with build settings that you define.

How do I rebuild a project in Xcode?

This can be achieved by going to Product > Clean Build Folder . Or by using the keyboard shortcut Cmd + Shift + K. Xcode will begin to clean your build folder - this might take a couple of minutes. Once it's completed, you can try running and building your project again.


2 Answers

In my case, I wasn't updating the CFBundleShortVersionString between the versions I was trying to download. Once I updated the version from 1.1.9.1 to 1.1.9.2 and re-downloaded the adhoc build, it stopped crashing.

I'd guess Apple is caching some of the information in the Info.plist for adhoc builds, and bumping just the CFBundleVersion isn't enough to blow the cache.

like image 178
Justin Weiss Avatar answered Oct 14 '22 06:10

Justin Weiss


From "Core Foundation Keys": "CFBundleShortVersionString (String - iOS, Mac OS X) specifies the release version number of the bundle, which identifies a released iteration of the application. The release version number is a string comprised of three period-separated integers. The first integer represents major revisions to the application, such as revisions that implement new features or major changes. The second integer denotes revisions that implement less prominent features. The third integer represents maintenance releases. The value for this key differs from the value for “CFBundleVersion,” which identifies an iteration (released or unreleased) of the application. This key can be localized by including it in your InfoPlist.strings files."

CFBundleShortVersionString also mustn't contain any letters, only integers are allowed. So if you have something like 1.2.5b1 the app won't start, strangely with an error like "...does not have an executable path...".

like image 23
drct Avatar answered Oct 14 '22 06:10

drct