Sparkle
Sparkle copied to clipboard
zip files generated from Xcode Cloud cannot be streamed during extraction
Description of the problem
Using generate_appcast with a .app.zip generated from Xcode Cloud results in an error:
sktusing@SKT-MBP Sparkle-2.6.0 % ./bin/generate_appcast /Users/sktusing/Desktop/Vor_Release
ditto: Vor.app/Contents/Frameworks/DeckLink.framework/DeckLink: No such file or directory
ditto: Couldn't read pkzip signature.
ditto: Couldn't read pkzip signature.
ditto: Couldn't read pkzip signature.
ditto: Couldn't read pkzip signature.
ditto: Couldn't read pkzip signature.
Running generate_appcast a second time results in:
sktusing@SKT-MBP Sparkle-2.6.0 % ./bin/generate_appcast /Users/sktusing/Desktop/Vor_Release
Could not unarchive /Users/sktusing/Desktop/Vor_Release/Vor.app.zip Error Domain=NSCocoaErrorDomain Code=516 "“Vor.app.zip” couldn’t be copied to “762209f0516ccdac78f286882388fccbe8cfbae5c16c22f1946db52ce85f7926.tmp” because an item with the same name already exists." UserInfo={NSSourceFilePathErrorKey=/Users/sktusing/Desktop/Vor_Release/Vor.app.zip, NSUserStringVariant=(
Copy
), NSDestinationFilePath=/Users/sktusing/Library/Caches/Sparkle_generate_appcast/762209f0516ccdac78f286882388fccbe8cfbae5c16c22f1946db52ce85f7926.tmp/Vor.app.zip, NSFilePath=/Users/sktusing/Desktop/Vor_Release/Vor.app.zip, NSUnderlyingError=0x6000012e4d20 {Error Domain=NSPOSIXErrorDomain Code=17 "File exists"}}
Error generating appcast from directory /Users/sktusing/Desktop/Vor_Release
Error Domain=SUSparkleErrorDomain Code=1001 "No usable archives found in /Users/sktusing/Desktop/Vor_Release" UserInfo={NSLocalizedDescription=No usable archives found in /Users/sktusing/Desktop/Vor_Release}
Running sktusing@SKT-MBP ~ % zipinfo /Users/sktusing/Desktop/Vor_Release/Vor.app.zip
shows that Decklink directory exists:
lrwxrwxr-x 2.0 unx 25 bX stor 24-Apr-21 14:21 Vor.app/Contents/Frameworks/DeckLink.framework/DeckLink
Unzipping, then zipping the app causes generate_appcast to function.
This is new with us migrating to Xcode Cloud for notarizing the application.
Do you use Sandboxing in your app?
No
Version of Sparkle.framework
in the latest version of your app
2.6.0
Version of Sparkle.framework
in the old version of app that your users have (or N/A)
N/A
Sparkle's output from Console.app
default 10:18:31.749037-0400 generate_appcast Not internal release, disabling SIRL
default 10:18:31.749078-0400 generate_appcast Enabling System Keychain Always due to platform
default 10:18:31.749119-0400 generate_appcast [0x600003acc000] activating connection: mach=true listener=false peer=false name=com.apple.securityd.xpc
default 10:18:31.749536-0400 secd Entitlement com.apple.application-identifier=org.sparkle-project.Sparkle.generate-appcast is ignored because of invalid application signature or incorrect provisioning profile
default 10:18:31.750303-0400 generate_appcast [0x600003ac0000] activating connection: mach=true listener=false peer=false name=com.apple.cfprefsd.daemon
default 10:18:31.754100-0400 generate_appcast UNIX error exception: 17
default 10:18:31.759236-0400 generate_appcast UNIX error exception: 17
default 10:18:31.760170-0400 generate_appcast UNIX error exception: 17
default 10:18:31.762017-0400 generate_appcast UNIX error exception: 17
default 10:18:31.763014-0400 generate_appcast UNIX error exception: 17
default 10:18:31.764159-0400 generate_appcast UNIX error exception: 17
default 10:18:31.802500-0400 generate_appcast [0x600003ad8000] activating connection: mach=true listener=false peer=false name=com.apple.cfprefsd.agent
default 10:18:31.813110-0400 generate_appcast [0x14a205480] activating connection: mach=true listener=false peer=false name=com.apple.lsd.mapdb
default 10:18:31.814565-0400 generate_appcast [0x600003ac42d0] activating connection: mach=true listener=false peer=false name=com.apple.distributed_notifications@Uv3
default 10:18:32.905052-0400 generate_appcast Not internal release, disabling SIRL
default 10:18:32.905095-0400 generate_appcast Enabling System Keychain Always due to platform
default 10:18:32.905138-0400 generate_appcast [0x600000948000] activating connection: mach=true listener=false peer=false name=com.apple.securityd.xpc
default 10:18:32.905350-0400 secd Entitlement com.apple.application-identifier=org.sparkle-project.Sparkle.generate-appcast is ignored because of invalid application signature or incorrect provisioning profile
default 10:18:32.906096-0400 generate_appcast [0x6000009480f0] activating connection: mach=true listener=false peer=false name=com.apple.cfprefsd.daemon
default 10:18:32.909018-0400 generate_appcast UNIX error exception: 17
default 10:18:32.910882-0400 generate_appcast UNIX error exception: 17
default 10:18:32.912028-0400 generate_appcast UNIX error exception: 17
default 10:18:32.913280-0400 generate_appcast UNIX error exception: 17
default 10:18:32.914386-0400 generate_appcast UNIX error exception: 17
default 10:18:32.915625-0400 generate_appcast UNIX error exception: 17
default 10:18:32.952601-0400 generate_appcast Extracting using '/usr/bin/ditto' '-x' '-k' '-' < '/Users/[user]/Library/Caches/Sparkle_generate_appcast/762209f0516ccdac78f286882388fccbe8cfbae5c16c22f1946db52ce85f7926.tmp/Vor.app.zip' '/Users/[user]/Library/Caches/Sparkle_generate_appcast/762209f0516ccdac78f286882388fccbe8cfbae5c16c22f1946db52ce85f7926.tmp'
Steps to reproduce the behavior
- Download zipped application from Xcode Cloud
- Sign .app.zip with generate_appcast
- generate_appcast errors and fails