The application cannot be opened because its executable is missing

后端 未结 5 686
半阙折子戏
半阙折子戏 2020-12-15 07:44

I have an application that I have been developing for some time now. Recently launching the application via a double click presents a dialog that says \"You can\'t open the

相关标签:
5条回答
  • 2020-12-15 07:48

    The problem is likely due to an invalid CFBundleExecutable property value in the Info.plist file you are copying into the application.

    In Xcode projects the default value for this property is a special variable (placeholder) value (${EXECUTABLE_NAME}) that is expanded (replaced) when the build system builds the application. Are you sure you need to copy this file manually? Maybe you can add a script build phase that makes whatever changes you need after it has been expanded and copied into place by the normal build process.

    While you are at it, you should check for other placeholder values in the file. It is likely that you will need to fill in CFBundleName (others may also be necessary, depending on your application type).

    0 讨论(0)
  • 2020-12-15 07:58

    OK, some (more) shots in the dark.

    1. The docs for LSMinimumSystemVersion say that the value is supposed to be a string with the form n.n.n. You might try adding a “.0” to the end of your value.
    2. When you use ./RepoWatch.app/Contents/MacOS/RepoWatch to run it manually, are you using some sort of completion or filename generation, or are you typing it all in (especially the filename of the executable)?
      • Maybe the executable filename has some odd invisible/combining/look-alike character in it that does not match the value in Info.plist. Try ls -w /path/to/RepoWatch.app/Contents/MacOS/ | xxd to look at the bytes for anything non-ASCII.
    3. Does plutil -lint /path/to/Info.plist give you an “OK”?
    4. The @ after the permissions in the ls -l output indicates some xattrs. These could be harmless, but have you looked at which ones are there with ls -l@?
      • If one of the xattrs looks suspect (or even if not) you could (cd /path/to/RepoWatch.app/Contents/ && mv Info.plist Info.plist.save && cat Info.plist.save > Info.plist) to get a copy without the xattrs and test with it.
      • If using the non-xattr'd file still causes problems, you might try systematically modifying and deleting keys (after making a backup copy, like the .save above) to see if you can cause a different error message that might help indicate the problem.
    0 讨论(0)
  • 2020-12-15 08:01

    Building on the answer that @smokris posted:

    The problem seems to be with your app's registration in the Launch Services database. There is no need to rebuild the entire database. To force-update the entry for your app (specifically), use lsregister with the -f option:

    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f MyApp.app
    

    I was having the same problem you describe, and this worked for me. Thanks, @smokris!

    0 讨论(0)
  • 2020-12-15 08:03

    Project Menu > Set Active Executable

    0 讨论(0)
  • 2020-12-15 08:08

    Rebuilding the Launch Services database solves this problem for me.

    Try executing the following command in Terminal:

    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user
    
    0 讨论(0)
提交回复
热议问题