Enviar pesquisa
Carregar
Sparkle Appcasting Guide
•
1 gostou
•
748 visualizações
Título melhorado com IA
Wataru Kimura
Seguir
2009-05-19 Cocoa勉強会関西 #15
Leia menos
Leia mais
Vista de apresentação de diapositivos
Denunciar
Compartilhar
Vista de apresentação de diapositivos
Denunciar
Compartilhar
1 de 61
Baixar agora
Baixar para ler offline
Recomendados
Open shift
Open shift
marcolof
PSMTabBarControl
PSMTabBarControl
Wataru Kimura
Quickcursorに見る、アプリケーション間通信
Quickcursorに見る、アプリケーション間通信
Wataru Kimura
SIMBLでCocoaアプリをパワーアップ
SIMBLでCocoaアプリをパワーアップ
Wataru Kimura
Hotkeyslib3 Cocoaでホットキー
Hotkeyslib3 Cocoaでホットキー
Wataru Kimura
リマインダーの繰り返しを自由に設定する (EventKit)
リマインダーの繰り返しを自由に設定する (EventKit)
Wataru Kimura
Three20のTTURLRequest
Three20のTTURLRequest
Wataru Kimura
InputMethodKit超入門
InputMethodKit超入門
Wataru Kimura
Recomendados
Open shift
Open shift
marcolof
PSMTabBarControl
PSMTabBarControl
Wataru Kimura
Quickcursorに見る、アプリケーション間通信
Quickcursorに見る、アプリケーション間通信
Wataru Kimura
SIMBLでCocoaアプリをパワーアップ
SIMBLでCocoaアプリをパワーアップ
Wataru Kimura
Hotkeyslib3 Cocoaでホットキー
Hotkeyslib3 Cocoaでホットキー
Wataru Kimura
リマインダーの繰り返しを自由に設定する (EventKit)
リマインダーの繰り返しを自由に設定する (EventKit)
Wataru Kimura
Three20のTTURLRequest
Three20のTTURLRequest
Wataru Kimura
InputMethodKit超入門
InputMethodKit超入門
Wataru Kimura
InputMethodKitで入力プログラムをつくろう
InputMethodKitで入力プログラムをつくろう
Wataru Kimura
Xcode4 project template (slide)
Xcode4 project template (slide)
Wataru Kimura
ClangでObjective-Cを静的解析
ClangでObjective-Cを静的解析
Wataru Kimura
Precipitateに見る、外部リソースのSpotlight化
Precipitateに見る、外部リソースのSpotlight化
Wataru Kimura
値変換
値変換
Wataru Kimura
OS X DYLD_* environments
OS X DYLD_* environments
Wataru Kimura
Clang Modules
Clang Modules
Wataru Kimura
Apps pl ayer
Apps pl ayer
Stephina Mosidi Tshelane
iPad App Evaluation Guide
iPad App Evaluation Guide
Silvia Rosenthal Tolisano
Fileyogi
Fileyogi
Dheeraj Verma
Development: What they don't teach you in college
Development: What they don't teach you in college
Binny V A
Drupal Showcase: High Tech
Drupal Showcase: High Tech
Acquia
Development: What They Don't Teach You in College
Development: What They Don't Teach You in College
Binny V A
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...
Claus Ibsen
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integration
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integration
Claus Ibsen
Embracing concurrency for fun utility and simpler code
Embracing concurrency for fun utility and simpler code
kamaelian
The Evolution of Internet-Scale Event Notification Services
The Evolution of Internet-Scale Event Notification Services
Hiroshi Ono
Falsy Values - Warsaw 2011
Falsy Values - Warsaw 2011
Brian LeRoux
All out in the Cloud - CloudEast 2012
All out in the Cloud - CloudEast 2012
Jan Jongboom
Browser as a broadcast medium
Browser as a broadcast medium
vrt-medialab
State of Developer Tools (WDS09)
State of Developer Tools (WDS09)
bgalbs
Kamaelia lightning2010opensource
Kamaelia lightning2010opensource
kamaelian
Mais conteúdo relacionado
Destaque
InputMethodKitで入力プログラムをつくろう
InputMethodKitで入力プログラムをつくろう
Wataru Kimura
Xcode4 project template (slide)
Xcode4 project template (slide)
Wataru Kimura
ClangでObjective-Cを静的解析
ClangでObjective-Cを静的解析
Wataru Kimura
Precipitateに見る、外部リソースのSpotlight化
Precipitateに見る、外部リソースのSpotlight化
Wataru Kimura
値変換
値変換
Wataru Kimura
OS X DYLD_* environments
OS X DYLD_* environments
Wataru Kimura
Clang Modules
Clang Modules
Wataru Kimura
Destaque
(7)
InputMethodKitで入力プログラムをつくろう
InputMethodKitで入力プログラムをつくろう
Xcode4 project template (slide)
Xcode4 project template (slide)
ClangでObjective-Cを静的解析
ClangでObjective-Cを静的解析
Precipitateに見る、外部リソースのSpotlight化
Precipitateに見る、外部リソースのSpotlight化
値変換
値変換
OS X DYLD_* environments
OS X DYLD_* environments
Clang Modules
Clang Modules
Semelhante a Sparkle Appcasting Guide
Apps pl ayer
Apps pl ayer
Stephina Mosidi Tshelane
iPad App Evaluation Guide
iPad App Evaluation Guide
Silvia Rosenthal Tolisano
Fileyogi
Fileyogi
Dheeraj Verma
Development: What they don't teach you in college
Development: What they don't teach you in college
Binny V A
Drupal Showcase: High Tech
Drupal Showcase: High Tech
Acquia
Development: What They Don't Teach You in College
Development: What They Don't Teach You in College
Binny V A
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...
Claus Ibsen
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integration
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integration
Claus Ibsen
Embracing concurrency for fun utility and simpler code
Embracing concurrency for fun utility and simpler code
kamaelian
The Evolution of Internet-Scale Event Notification Services
The Evolution of Internet-Scale Event Notification Services
Hiroshi Ono
Falsy Values - Warsaw 2011
Falsy Values - Warsaw 2011
Brian LeRoux
All out in the Cloud - CloudEast 2012
All out in the Cloud - CloudEast 2012
Jan Jongboom
Browser as a broadcast medium
Browser as a broadcast medium
vrt-medialab
State of Developer Tools (WDS09)
State of Developer Tools (WDS09)
bgalbs
Kamaelia lightning2010opensource
Kamaelia lightning2010opensource
kamaelian
Sdp summit
Sdp summit
Michel Burger
SD, a P2P bug tracking system
SD, a P2P bug tracking system
Jesse Vincent
Brand Science
Brand Science
iStrategy
2011 JavaScript Developer Generation
2011 JavaScript Developer Generation
Rhio Kim
History Boxes
History Boxes
Aaron Cope
Semelhante a Sparkle Appcasting Guide
(20)
Apps pl ayer
Apps pl ayer
iPad App Evaluation Guide
iPad App Evaluation Guide
Fileyogi
Fileyogi
Development: What they don't teach you in college
Development: What they don't teach you in college
Drupal Showcase: High Tech
Drupal Showcase: High Tech
Development: What They Don't Teach You in College
Development: What They Don't Teach You in College
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...
Red Hat Nordics 2020 - Apache Camel 3 the next generation of enterprise integ...
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integration
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integration
Embracing concurrency for fun utility and simpler code
Embracing concurrency for fun utility and simpler code
The Evolution of Internet-Scale Event Notification Services
The Evolution of Internet-Scale Event Notification Services
Falsy Values - Warsaw 2011
Falsy Values - Warsaw 2011
All out in the Cloud - CloudEast 2012
All out in the Cloud - CloudEast 2012
Browser as a broadcast medium
Browser as a broadcast medium
State of Developer Tools (WDS09)
State of Developer Tools (WDS09)
Kamaelia lightning2010opensource
Kamaelia lightning2010opensource
Sdp summit
Sdp summit
SD, a P2P bug tracking system
SD, a P2P bug tracking system
Brand Science
Brand Science
2011 JavaScript Developer Generation
2011 JavaScript Developer Generation
History Boxes
History Boxes
Sparkle Appcasting Guide
1.
Sparkle
in 2009 12 19
2.
2009
12 19
3.
‣
‣ ‣ Appcasting ‣ MIT http://sparkle.andymatuschak.org/ 3 2009 12 19
4.
‣
‣ ‣ Appcasting ‣ MIT http://sparkle.andymatuschak.org/ 3 2009 12 19
5.
‣
RSS 2.0 ✦ Podcasting ✦ enclosure http://connectedflow.com/appcasting/ 4 2009 12 19
6.
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle"> <channel> <title>MyNiceApp Appcast</title> <link>http://example.com/appcast.xml</link> <description>MyNiceApp Releases</description> <language>en</language> <item> <title>MyNiceApp Version 1.5.5</title> <description>http://example.com/release155.html</description> <pubDate>Sat, 19 May 2007 15:00:00 +0000</pubDate> <enclosure url="http://example.com/files/myniceapp_1.5.5.dmg" length="371494" type="application/octet-stream"/> </item> </channel> </rss> 5 2009 12 19
7.
1Passwd
CSSEdit iAlertU Max Podcast Maker SubCleaner 1Passwd Cyberduck iAmazon MainMenu Posterino SubEthaEdit Airport Monitor D&D Manager iKey MacFungus Pukka Suitcase Fusion Utility Desk Lamp InCrease MarsEdit Punakea Tables Adium Desktop Lyrics InsomniaX MDict Pyro Task List Alarm Clock Diamond iPalette MemoryMiner QuickEffect TrailRunner Album Art Thingy Diffly iProcrastinate MiniBatteryLogger Quinn Trampoline AppZapper DiskLibrary iRetrospect Monolingual RatRace Tranceiver Auction Hunter dotMac Menu iShowU Morph Age RAX Transmission Aurora Downsize iSleep MultiAlarm RDCMenu TrapperKeeper Avenir DrawIt iStumbler Multisite for iWeb Relaunch TubeSock Backuplist+ DVD Remaster iSyncIt Notae rooSwitch TuneConnect BetterZip Event Maker iTerm On The Job rooVid TypeTrainer4Mac BeerAlchemy Family iTunes Album Opal SaverLab UnicodeChecker Birthdaybook Feeder Playlist Creator Overflow Schoolhouse UnRarX BombSquad Find It! Keep It! iVerbum Paintbrush Scrivener Valet Books FlexTime iTunes Remote Parsley is Secure Remote vCardExplorer Bullfrog Flickr Finder Control Atomically Disk Vienna Cast Life ForgEdit Jumpcut Delicious SenChecker VibeKit CDRevolution Gcal.app Keep It Together Path Finder Senor Staff Virtual Dashboard Checkout Ghost Action Kandalu X PDFClerk Shimo Virtue ChocoFlop Google Buddy License Keeper PDFKey Pro SimplyBurns Voice Candy Cocoalicious GuidaTV Linkinus PDFView SiteCapture Wcode Code Collector guitone LoadMyTracks Peek-a-Boo SNCF Schedules Xacktunes Colloquy hawkeye LogitechLCDTool Peel Snapshot Xcast Compare Folders Hazel LogTen Pro Pixen SolarSeek Xslimmer Corripio HostManager Luscious SMS Planbook Soulver Crittersim Magrathea Play Springy 6 2009 12 19
8.
1Passwd
CSSEdit iAlertU Max Podcast Maker SubCleaner 1Passwd Cyberduck iAmazon MainMenu Posterino SubEthaEdit Airport Monitor D&D Manager iKey MacFungus Pukka Suitcase Fusion Utility Desk Lamp InCrease MarsEdit Punakea Tables Adium Desktop Lyrics InsomniaX MDict Pyro Task List Alarm Clock Diamond iPalette MemoryMiner QuickEffect TrailRunner Album Art Thingy Diffly iProcrastinate MiniBatteryLogger Quinn Trampoline AppZapper DiskLibrary iRetrospect Monolingual RatRace Tranceiver Auction Hunter dotMac Menu iShowU Morph Age RAX Transmission Aurora Downsize iSleep MultiAlarm RDCMenu TrapperKeeper Avenir DrawIt iStumbler Multisite for iWeb Relaunch TubeSock Backuplist+ DVD Remaster iSyncIt Notae rooSwitch TuneConnect 158 apps BetterZip Event Maker iTerm On The Job rooVid TypeTrainer4Mac BeerAlchemy Family iTunes Album Opal SaverLab UnicodeChecker Birthdaybook Feeder Playlist Creator Overflow Schoolhouse UnRarX BombSquad Find It! Keep It! iVerbum Paintbrush Scrivener Valet Books Bullfrog FlexTime Flickr Finder Control(May. 2007) iTunes Remote Parsley is Atomically Secure Remote Disk vCardExplorer Vienna Cast Life ForgEdit Jumpcut Delicious SenChecker VibeKit CDRevolution Gcal.app Keep It Together Path Finder Senor Staff Virtual Dashboard Checkout Ghost Action Kandalu X PDFClerk Shimo Virtue ChocoFlop Google Buddy License Keeper PDFKey Pro SimplyBurns Voice Candy Cocoalicious GuidaTV Linkinus PDFView SiteCapture Wcode Code Collector guitone LoadMyTracks Peek-a-Boo SNCF Schedules Xacktunes Colloquy hawkeye LogitechLCDTool Peel Snapshot Xcast Compare Folders Hazel LogTen Pro Pixen SolarSeek Xslimmer Corripio HostManager Luscious SMS Planbook Soulver Crittersim Magrathea Play Springy 6 2009 12 19
9.
2009
12 19
10.
‣
‣ ✦ ✦ ‣ localized with Cyberduck ✦ .lproj →26 (ver 1.1) 8 2009 12 19
11.
2009
12 19
12.
1.
URL Appcasting 2. 3. 4. − 5. 10 2009 12 19
13.
✦
✦ ✦ Info.plist 11 2009 12 19
14.
2009
12 19
15.
2009
12 19
16.
‣
‣ ‣ Appcast 14 2009 12 19
17.
CFBundleVersion
MyApp_x.y.z.dmg zip, tar, tbz, tgz, dmg 15 2009 12 19
18.
‣
.app ‣ .pkg .dpkg ‣ .app 16 2009 12 19
19.
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle"> <channel> <title>MyNiceApp Appcast</title> <link>http://example.com/appcast.xml</link> <description>MyNiceApp Releases</description> <language>en</language> <item> <title>MyNiceApp Version 1.5.5</title> <description>http://example.com/release155.html</description> <pubDate>Sat, 19 May 2007 15:00:00 +0000</pubDate> <enclosure url="http://example.com/files/myniceapp_1.5.5.dmg" length="371494" type="application/octet-stream"/> </item> </channel> </rss> 17 2009 12 19
20.
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle"> <channel> <title>MyNiceApp Appcast</title> Sparkle <link>http://example.com/appcast.xml</link> <description>MyNiceApp Releases</description> <language>en</language> <item> <title>MyNiceApp Version 1.5.5</title> <description>http://example.com/release155.html</description> <pubDate>Sat, 19 May 2007 15:00:00 +0000</pubDate> <enclosure url="http://example.com/files/myniceapp_1.5.5.dmg" length="371494" type="application/octet-stream"/> </item> </channel> </rss> 17 2009 12 19
21.
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle"> <channel> <title>MyNiceApp Appcast</title> Sparkle <link>http://example.com/appcast.xml</link> <description>MyNiceApp Releases</description> <language>en</language> <item> <title>MyNiceApp Version 1.5.5</title> <description>http://example.com/release155.html</description> <pubDate>Sat, 19 May 2007 15:00:00 +0000</pubDate> <enclosure url="http://example.com/files/myniceapp_1.5.5.dmg" length="371494" type="application/octet-stream"/> </item> </channel> </rss> URL 17 2009 12 19
22.
2009
12 19
23.
A.appcast
B. i. Sparkle ii. Nib iii.Info.plist 19 2009 12 19
24.
20 2009
12 19
25.
SUUpdater
21 2009 12 19
26.
SUUpdater
checkForUpdate: 22 2009 12 19
27.
SUFeedURL (
) ( )appcast URL SUCheckAtStartup ( ) SUScheduledCheckInterval ( ) SUShowReleaseNote ( ) UserDafaults 23 2009 12 19
28.
2009
12 19
29.
‣
sparkle:releaseNotesLink ‣ URL 25 2009 12 19
30.
‣
sparkle:md5sum enclosure <enclosure sparkle:md5Sum=”8659fdec0f64edf04ec4fd8756b819eb" url="http://example.org/MyNiceApp_Orange.zip" length="12345" type="application/octet-stream"/> 26 2009 12 19
31.
‣
Info.plist ‣ SUPublicDSAKey → ‣ SUExpectsDSASignature → YES ‣ enclosure sparkle:dsaSignature 27 2009 12 19
32.
‣
sparkle:version ‣ <enclosure sparkle:version="1.5.5" url="http://example.org/MyNiceApp_Orange.zip" length="12345" type="application/octet-stream"/> 28 2009 12 19
33.
‣
‣ .lproj/InfoPlist.strings SUFeedURLKey URL 29 2009 12 19
34.
‣
‣ DSA 30 2009 12 19
35.
2009
12 19
36.
1.
URL Appcasting 2. 3. 4. − 5. 32 2009 12 19
37.
1.
URL Appcasting 2. 3. 4. − 5. 32 2009 12 19
38.
SUUtilities.[hm]
3 SUStandardVersionComparison() -2 SUSplitVersionString() - SUGetCharType() - / / 33 2009 12 19
39.
“1.23.4a”→{1,”.”,23,”.”,4,”a”}
• • 34 2009 12 19
40.
int SUGetCharType(NSString *character)
{ if ([character isEqualToString:@"."]) { return kPeriodType; } else if ([character isEqualToString:@"0"] || [character intValue] != 0) { return kNumberType; } else { return kStringType; } } 35 2009 12 19
41.
int SUGetCharType(NSString *character)
{ if ([character isEqualToString:@"."]) { return kPeriodType; } else if ([character isEqualToString:@"0"] || [character intValue] != 0) { return kNumberType; } else { return kStringType; } } 35 2009 12 19
42.
“1.23.4a”→ {1,23,4,”a”}
“1.23.5.2”→{1,23,5, 2} • • > • 36 2009 12 19
43.
“1.23.4a”→ {1,23,4,”a”}
“1.23.5.2”→{1,23,5, 2} • • > • 36 2009 12 19
44.
“1.23.4a”→ {1,23,4,”a”}
“1.23.5.2”→{1,23,5, 2} • • > • 36 2009 12 19
45.
“1.23.4a”→ {1,23,4,”a”}
“1.23.5.2”→{1,23,5, 2} • ↑ • > • 36 2009 12 19
46.
“1.23.4a”→ {1,23,4,”a”}
“1.23.5.2”→{1,23,5, 2} • ↑ • > • 36 2009 12 19
47.
1.
2. 3. .app 4. 3. 5. bash 37 2009 12 19
48.
1.
2. 3. .app 4. 3. 5. bash 37 2009 12 19
49.
1.
2. 3. .app 4. 3. 5. bash 37 2009 12 19
50.
•
NSTemporaryDirectory() + [NSProcessInfo globallyUniqueString] • ”.txt” - (void)[SUUpdater beginDownload] - (IBAction)[SUUpdater installAndRestart:] 38 2009 12 19
51.
•
.tar → tar -xC • .tgz → tar -zXC • .zip → ditto -x -k • .tbz → tar -jxC • .dmg → hdiutil ... -(void)[SUUnarchiver extractUpdate] 39 2009 12 19
52.
•
.tar → tar -xC • .tgz → tar -zXC • .zip → ditto -x -k • .tbz → tar -jxC • .dmg → hdiutil ... -(void)[SUUnarchiver extractUpdate] 39 2009 12 19
53.
•
-[NSFileManager enumeratorAtPath:] • Applications - (IBAction)[SUUpdater installAndRestart:] 40 2009 12 19
54.
•
-[NSFileManager movePathWithAuthentication:toPath:] • - (IBAction)[SUUpdater installAndRestart:] 41 2009 12 19
55.
setenv("LAUNCH_PATH", [currentAppPath UTF8String],
1); setenv("TEMP_FOLDER", [[downloadPath stringByDeletingLastPathComponent] UTF8String], 1); system("/bin/bash -c '{ for (( i = 0; i < 3000 && “ ”$(echo $(/bin/ps -xp $PPID|/usr/bin/wc -l))-1; i++ )); don" " /bin/sleep .2;n" " donen" " if [[ $(/bin/ps -xp $PPID|/usr/bin/wc -l) -ne 2 ]]; thenn" " /usr/bin/open "${LAUNCH_PATH}"n" " fin" " rm -rf "${TEMP_FOLDER}"n" "} &>/dev/null &'"); [NSApp terminate:self]; - (IBAction)[SUUpdater installAndRestart:] 42 2009 12 19
56.
setenv("LAUNCH_PATH", [currentAppPath UTF8String],
1); setenv("TEMP_FOLDER", [[downloadPath stringByDeletingLastPathComponent] UTF8String], 1); system("/bin/bash -c '{ for (( i = 0; i < 3000 && “ ”$(echo $(/bin/ps -xp $PPID|/usr/bin/wc -l))-1; i++ )); don" " /bin/sleep .2;n" " donen" " if [[ $(/bin/ps -xp $PPID|/usr/bin/wc -l) -ne 2 ]]; thenn" " /usr/bin/open "${LAUNCH_PATH}"n" " fin" " rm -rf "${TEMP_FOLDER}"n" "} &>/dev/null &'"); [NSApp terminate:self]; bash open - (IBAction)[SUUpdater installAndRestart:] 42 2009 12 19
57.
‣
Sparkle Appcasting ‣ ‣ ‣ 43 2009 12 19
58.
2009
12 19
59.
2009
12 19
60.
‣
‣ 46 2009 12 19
61.
‣
dmg ‣ jp.i.nifty.kimuraw.SparkleSample.plist 47 2009 12 19
Baixar agora