3

I have a Qt (5.3.1) application that worked fine until the latest update in codesign, but now gatekeeper throws this error:

code has no resources but signature indicates they must be present

(the command I used to verify the app bundle is: spctl -at exec -vv path/to/.app)

The deployment script builds the app bundle, invokes macdeploy, copies all the missing qt info.plist files and then it invokes codesign:

codesign --force --deep --verify --verbose --no-legacy-signing --sign "signing authority string" /path/to/.app

The --no-legacy-signing was added because of the outdated resource envelope error. Nothing else was changed since it worked the last time.

Building and codesign are done on OS X Yosemite, Xcode 6.0.1 is installed. It's not the latest yosemite version, I'm not sure which one it actually is (I did not set up the machine, but I do see the update center is offering an upgrade to developer preview 8).

Has anyone encountered this error?

w00tnes
  • 33
  • 2
  • 5

1 Answers1

1

I have had the same issue that you had. This is what you need to do in order to fix the issue:

  1. You need to correct the Framework structure after you call the macdeployqt utility. The required structure can be found here: Anatomy of Framework Bundles
  2. Some of the Qt Frameworks contain bad CFBundleExecutable information. The executable name ends with _debug. (notably these framework: QtPrintSupport, QtPositioning, QtQml and QtQuick)

You can find my complete solution here: Unable to sign app bundle using Qt frameworks on OS X 10.10

Community
  • 1
  • 1
gfrigon
  • 2,237
  • 2
  • 23
  • 32
  • I've checked the structure and found no _debug executables in any of the frameworks - but you answer did point me in the right direction, turns out I had an outdated sparkle framework. – w00tnes Jan 23 '15 at 20:03