-
Notifications
You must be signed in to change notification settings - Fork 72
/
DropletLauncher.m
80 lines (67 loc) · 2.55 KB
/
DropletLauncher.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
//
// DropletLauncher.m
// Connection
//
// Created by Greg Hulands on 16/11/06.
// Copyright 2006 __MyCompanyName__. All rights reserved.
//
#import <Cocoa/Cocoa.h>
int main(int argc, char *argv[])
{
return NSApplicationMain(argc, (const char **) argv);
}
@interface DropletLauncherDelegate : NSObject
{
BOOL myHasFilesToUpload;
}
@end
@implementation DropletLauncherDelegate
- (id)init
{
if ((self != [super init]))
{
[self release];
return nil;
}
myHasFilesToUpload = NO;
return self;
}
- (void)application:(NSApplication *)app openFiles:(NSArray *)files
{
myHasFilesToUpload = YES;
NSString *dropletCreator = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CKApplication"];
NSString *applicationPath = [[NSWorkspace sharedWorkspace] absolutePathForAppBundleWithIdentifier:dropletCreator];
NSString *dyldPath = [[applicationPath stringByAppendingPathComponent:@"Contents"] stringByAppendingPathComponent:@"Frameworks"];
NSString *ckFrameworkPath = [[dyldPath stringByAppendingPathComponent:@"Connection"] stringByAppendingPathExtension:@"framework"];
NSString *dropletPath = [[NSBundle bundleWithPath:ckFrameworkPath] pathForResource:@"DropletHelper" ofType:@"app"];
NSString *path = [[NSBundle bundleWithPath:dropletPath] executablePath];
if (!path)
{
NSRunAlertPanel(NSLocalizedString(@"Bad Droplet", @"error"),
NSLocalizedString(@"This droplet is missing the original application that created it. You will need to reinstall the original application.", @"error"),
NSLocalizedString(@"Quit", @"error"),
nil,
nil);
[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0];
return;
}
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:path];
NSMutableArray *args = [NSMutableArray arrayWithObject:[[NSBundle mainBundle] pathForResource:@"configuration" ofType:@"ckhost"]];
[args addObjectsFromArray:files];
[task setArguments:args];
[task launch];
[task release];
[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];
}
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
if (!myHasFilesToUpload)
{
NSString *dropletCreator = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CKApplication"];
NSString *applicationPath = [[NSWorkspace sharedWorkspace] absolutePathForAppBundleWithIdentifier:dropletCreator];
[[NSWorkspace sharedWorkspace] openFile:[[NSBundle mainBundle] pathForResource:@"configuration" ofType:@"ckhost"] withApplication:applicationPath];
[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];
}
}
@end