How To codesign a Screen Saver for Yosemite: Difference between revisions
Jump to navigation
Jump to search
(8 intermediate revisions by the same user not shown) | |||
Line 8: | Line 8: | ||
=== The Analysis === | === The Analysis === | ||
I started off with googling and looking into [[Apple]]'s Developer Forums. It seemed no-one had that problem (or solved it). So I did some research. | |||
First I took a look at [[Yosemite]]<ref>Mac OS X 10.0</ref> built-in screen savers... | |||
Mac-OS-X-1010-Yosemite-VM:Screen Savers clarus$ codesign -v -d Flurry.saver/ | |||
Executable=/System/Library/Screen Savers/Flurry.saver/Contents/MacOS/Flurry | |||
Identifier=com.apple.Flurry | |||
Format=bundle with Mach-O thin (x86_64) | |||
CodeDirectory v=20100 size=385 flags=0x0(none) hashes=13+3 location=embedded | |||
Signature size=4097 | |||
Info.plist entries=18 | |||
TeamIdentifier=not set | |||
Sealed Resources version=2 rules=14 files=6 | |||
Internal requirements count=1 size=64 | |||
Mac-OS-X-1010-Yosemite-VM:Screen Savers clarus$ codesign -vv Flurry.saver/ | |||
Flurry.saver/: resource envelope is obsolete (custom omit rules) | |||
Mac-OS-X-1010-Yosemite-VM:Screen Savers clarus$ | |||
Interesting. | |||
I then added this build phase to my Screen Saver<ref>For the records, I used Mac OS X Mavericks 10.9.5 and [[XCode]] 6.1</ref>: | |||
#!/bin/sh | |||
#set -x | |||
#codesign -s "${CODE_SIGN_IDENTITY}" --entitlements "${CODE_SIGN_ENTITLEMENTS}" -v "${TARGET_BUILD_DIR}" | |||
codesign -s "${CODE_SIGN_IDENTITY}" --entitlements "${CODE_SIGN_ENTITLEMENTS}" -v "${TARGET_BUILD_DIR}/${WRAPPER_NAME}" | |||
I made sure that the Identity used is <tt>Devloper ID Application: YOUR_NAME_HERE</tt>, leading to this: | |||
WroDos-MacBook-Air:Desktop heiko$ codesign -v -d /Users/heiko/Desktop/Flying\ Toasters/Users/heiko/Library/Screen\ Savers/Flying\ Toasters.saver | |||
Executable=/Users/heiko/Desktop/Flying Toasters/Users/heiko/Library/Screen Savers/Flying Toasters.saver/Contents/MacOS/Flying Toasters | |||
Identifier=net.wurst-wasser.FlyingToasters | |||
Format=bundle with Mach-O thin (x86_64) | |||
CodeDirectory v=20200 size=535 flags=0x0(none) hashes=17+5 location=embedded | |||
Signature size=8518 | |||
Timestamp=26.10.2014 18:36:40 | |||
Info.plist entries=18 | |||
TeamIdentifier=JQWR9K4NUM | |||
Sealed Resources version=2 rules=12 files=21 | |||
Internal requirements count=1 size=224 | |||
WroDos-MacBook-Air:Desktop heiko$ codesign -vv /Users/heiko/Desktop/Flying\ Toasters/Users/heiko/Library/Screen\ Savers/Flying\ Toasters.saver | |||
/Users/heiko/Desktop/Flying Toasters/Users/heiko/Library/Screen Savers/Flying Toasters.saver: valid on disk | |||
/Users/heiko/Desktop/Flying Toasters/Users/heiko/Library/Screen Savers/Flying Toasters.saver: satisfies its Designated Requirement | |||
WroDos-MacBook-Air:Desktop heiko$ | |||
That looked good. And it was installed after double-clicking. But, it won't appear in the System Preferences. There had to be another problem. | |||
=== The Solution === | === The Solution === | ||
* add a build phase for code signing | |||
* choose the right Developer ID | |||
* Pray. For my part, I've given up on getting FTS running on [[Yosemite]] - I have no clue what Apple has done. Other screen savers (code-signed or not) won't work either. | |||
---- | ---- | ||
* Links | * Links | ||
** https://devforums.apple.com/thread/213357?tstart=75 | ** https://devforums.apple.com/thread/213357?tstart=75 | ||
** http://osxdaily.com/2014/07/30/install-screen-saver-mac-os-x/ | |||
** [[Flying Toasters Screen Saver]] | |||
* References: | * References: | ||
<references/> | <references/> |
Latest revision as of 01:18, 29 October 2014
The Problem
Double-clicking the Screen Saver will bring up this:
“Flying Toasters.saver” can’t be opened because it is from an unidentified developer. Your security preferences allow installation of only apps from the Mac App Store and identified developers.
Simple enough - just codesign it! But that turned out to be trickier than I thought.
The Analysis
I started off with googling and looking into Apple's Developer Forums. It seemed no-one had that problem (or solved it). So I did some research.
First I took a look at Yosemite[1] built-in screen savers...
Mac-OS-X-1010-Yosemite-VM:Screen Savers clarus$ codesign -v -d Flurry.saver/ Executable=/System/Library/Screen Savers/Flurry.saver/Contents/MacOS/Flurry Identifier=com.apple.Flurry Format=bundle with Mach-O thin (x86_64) CodeDirectory v=20100 size=385 flags=0x0(none) hashes=13+3 location=embedded Signature size=4097 Info.plist entries=18 TeamIdentifier=not set Sealed Resources version=2 rules=14 files=6 Internal requirements count=1 size=64 Mac-OS-X-1010-Yosemite-VM:Screen Savers clarus$ codesign -vv Flurry.saver/ Flurry.saver/: resource envelope is obsolete (custom omit rules) Mac-OS-X-1010-Yosemite-VM:Screen Savers clarus$
Interesting.
I then added this build phase to my Screen Saver[2]:
#!/bin/sh #set -x #codesign -s "${CODE_SIGN_IDENTITY}" --entitlements "${CODE_SIGN_ENTITLEMENTS}" -v "${TARGET_BUILD_DIR}" codesign -s "${CODE_SIGN_IDENTITY}" --entitlements "${CODE_SIGN_ENTITLEMENTS}" -v "${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
I made sure that the Identity used is Devloper ID Application: YOUR_NAME_HERE, leading to this:
WroDos-MacBook-Air:Desktop heiko$ codesign -v -d /Users/heiko/Desktop/Flying\ Toasters/Users/heiko/Library/Screen\ Savers/Flying\ Toasters.saver Executable=/Users/heiko/Desktop/Flying Toasters/Users/heiko/Library/Screen Savers/Flying Toasters.saver/Contents/MacOS/Flying Toasters Identifier=net.wurst-wasser.FlyingToasters Format=bundle with Mach-O thin (x86_64) CodeDirectory v=20200 size=535 flags=0x0(none) hashes=17+5 location=embedded Signature size=8518 Timestamp=26.10.2014 18:36:40 Info.plist entries=18 TeamIdentifier=JQWR9K4NUM Sealed Resources version=2 rules=12 files=21 Internal requirements count=1 size=224 WroDos-MacBook-Air:Desktop heiko$ codesign -vv /Users/heiko/Desktop/Flying\ Toasters/Users/heiko/Library/Screen\ Savers/Flying\ Toasters.saver /Users/heiko/Desktop/Flying Toasters/Users/heiko/Library/Screen Savers/Flying Toasters.saver: valid on disk /Users/heiko/Desktop/Flying Toasters/Users/heiko/Library/Screen Savers/Flying Toasters.saver: satisfies its Designated Requirement WroDos-MacBook-Air:Desktop heiko$
That looked good. And it was installed after double-clicking. But, it won't appear in the System Preferences. There had to be another problem.
The Solution
- add a build phase for code signing
- choose the right Developer ID
- Pray. For my part, I've given up on getting FTS running on Yosemite - I have no clue what Apple has done. Other screen savers (code-signed or not) won't work either.