Platypus
Platypus copied to clipboard
Unable to launch after building
I've been trying to build Platypus -- just a personal copy with the fix to not invoke the notification center ( https://github.com/sveinbjornt/Platypus/issues/150 ).
Following the main build instructions, using make build_unsigned
, I am apparently able to build the Platypus app, but it quits unexpectedly as soon as I launch it.
At the end of the build there is an error 65 that displays:
** BUILD SUCCEEDED **
make: *** [build_unsigned] Error 65
The only obvious error in the build process is on cleaning, which shows up even if there is not a products
folder to delete. (This does not seem important, as it does build a new Platypus application.)
error: Could not delete `[...]/Platypus-master/products` because it was not created by the build system.
error: Could not delete `[...]/Platypus-master/products` because it was not created by the build system.
error: Could not delete `[...]/Platypus-master/products` because it was not created by the build system.
note: Build preparation complete
** CLEAN FAILED **
I have not tried any changes other than (in XCode) changing the target to active architecture only. I'm using macOS 12.3.1, XCode 13.1.4, and the downloaded zip from master.
I presume that the error is in my setup rather than the codebase, but if someone can point me in the right direction, I'd appreciate it.
Platypus.app.zip Hi oskay, i have build the 5.4 Version. Attached, hope it helps ;-)
Awesome; thank you!
Platypus 5.4 has now been released: https://github.com/sveinbjornt/Platypus/releases/tag/v5.4
The 5.4 release seems corrupt/damaged by Gatekeeper on my machine (macOS 12.5.1 (21G83)):
> codesign --deep --verify -vvv /Users/msp/Downloads/Platypus.app
--prepared:/Users/msp/Downloads/Platypus.app/Contents/Frameworks/Sparkle.framework/Versions/Current/.
/Users/msp/Downloads/Platypus.app: invalid signature (code or signature have been modified)
In subcomponent: /Users/msp/Downloads/Platypus.app/Contents/Frameworks/Sparkle.framework/Versions/Current/Updater.app
In architecture: arm64
Looking closer, I think the Sparkle.framework
in the repository also looks corrupt. It seems stripped to some extent at glance (even maybe including the executables too).
Yeah, I stripped the binary and dumped localizations to keep the package smaller. So AV and GateKeeper expect the bloated full 5 MB Sparkle.framework package? I'll have to find a fix for it. Jaysis, things really have become locked down these days.
If you modify a binary, you invalidate its code signature so it's a good idea to re-sign it at least and not leave an invalid signed binary around. (Everything at least should be ad-hoc ("-") signed these days, "unsigned" executables are a thinking of the past and not technically allowed to execute on arm64). Sparkle has a section about code signing related to it.
I also don't know how you're altering the binary (seems kinda scary). Notarization should have probably failed this, but otherwise you may want to consider a codesign --deep -vvv --verify path
and (if applicable) spctl -a -t exec -vv path
verification check.
Sparkle has always been set to be resigned by me in the build process hitherto, and never caused any problems.
Experimentally if I re-sign one of the binaries (e.g. Autoupdate), the signature for it becomes "valid" again. So something must have been missing.
codesign -f -s "-" -o runtime ~/Downloads/Platypus.app/Contents/Frameworks/Sparkle.framework/Versions/B/Autoupdate
I'll have to take a look at this. Unfortunately I don't have an arm64 Mac available to me.
Issue is applicable to x86_64 too and I don't think you'd need a arm64 Mac either way.
They're not making this easy, are they?
No, they never do.
Let me know if there's anything that I can do to help. I do sign and notarize programs on Mac as well, and I can lend you a remote login on an M1 Mac system if that's helpful; I have done so for a couple of other developers when that was helpful.