35 |
35 |
36 @implementation M3InstallController |
36 @implementation M3InstallController |
37 |
37 |
38 - (id) init { |
38 - (id) init { |
39 if ((self = [super init])) { |
39 if ((self = [super init])) { |
40 NSString *appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"]; |
40 NSString *appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"]; |
41 NSString *title = [NSString stringWithFormat:NSLocalizedString(@"%@ is currently running from a disk image", @"AppName is currently running from a disk image"), appName]; |
41 NSString *title = [NSString stringWithFormat:NSLocalizedString(@"%@ is currently running from a disk image", @"AppName is currently running from a disk image"), appName]; |
42 NSString *body = [NSString stringWithFormat:NSLocalizedString(@"Would you like to install %@ in your applications folder before quitting?", @"Would you like to install App Name in your applications folder before quitting?"), appName]; |
42 NSString *body = [NSString stringWithFormat:NSLocalizedString(@"Would you like to install %@ in your applications folder before quitting?", @"Would you like to install App Name in your applications folder before quitting?"), appName]; |
43 alert = [[NSAlert alertWithMessageText:title |
43 alert = [[NSAlert alertWithMessageText:title |
44 defaultButton:NSLocalizedString(@"Install", @"Install") |
44 defaultButton:NSLocalizedString(@"Install", @"Install") |
45 alternateButton:NSLocalizedString(@"Don't Install", @"Don't Install") |
45 alternateButton:NSLocalizedString(@"Don't Install", @"Don't Install") |
46 otherButton:nil |
46 otherButton:nil |
47 informativeTextWithFormat:body] retain]; |
47 informativeTextWithFormat:body] retain]; |
48 //[alert setShowsSuppressionButton:YES]; |
48 //[alert setShowsSuppressionButton:YES]; |
49 } |
49 } |
50 return self; |
50 return self; |
51 } |
51 } |
52 |
52 |
53 - (void)displayInstaller { |
53 - (void)displayInstaller { |
54 NSString *imageFilePath = [[[NSWorkspace sharedWorkspace] propertiesForPath:[[NSBundle mainBundle] bundlePath]] objectForKey:NSWorkspace_RBimagefilepath]; |
54 NSString *imageFilePath = [[[NSWorkspace sharedWorkspace] propertiesForPath:[[NSBundle mainBundle] bundlePath]] objectForKey:NSWorkspace_RBimagefilepath]; |
55 if (imageFilePath && ![imageFilePath isEqualToString:[NSString stringWithFormat:@"/Users/.%@/%@.sparseimage", NSUserName(), NSUserName()]] && ![[NSUserDefaults standardUserDefaults] boolForKey:@"M3DontAskInstallAgain"]) { |
55 if (imageFilePath && ![imageFilePath isEqualToString:[NSString stringWithFormat:@"/Users/.%@/%@.sparseimage", NSUserName(), NSUserName()]] && ![[NSUserDefaults standardUserDefaults] boolForKey:@"M3DontAskInstallAgain"]) { |
56 NSInteger returnValue = [alert runModal]; |
56 NSInteger returnValue = [alert runModal]; |
57 if (returnValue == NSAlertDefaultReturn) { |
57 if (returnValue == NSAlertDefaultReturn) { |
58 [self installApp]; |
58 [self installApp]; |
59 } |
59 } |
60 if ([[alert suppressionButton] state] == NSOnState) { |
60 if ([[alert suppressionButton] state] == NSOnState) { |
61 [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"M3DontAskInstallAgain"]; |
61 [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"M3DontAskInstallAgain"]; |
62 } |
62 } |
63 } |
63 } |
64 } |
64 } |
65 |
65 |
66 - (void)installApp { |
66 - (void)installApp { |
67 NSString *appsPath = [[NSString stringWithString:@"/Applications"] stringByAppendingPathComponent:[[[NSBundle mainBundle] bundlePath] lastPathComponent]]; |
67 NSString *appsPath = [[NSString stringWithString:@"/Applications"] stringByAppendingPathComponent:[[[NSBundle mainBundle] bundlePath] lastPathComponent]]; |
68 NSString *userAppsPath = [[[NSString stringWithString:@"~/Applications"] stringByAppendingPathComponent:[[[NSBundle mainBundle] bundlePath] lastPathComponent]] stringByExpandingTildeInPath]; |
68 NSString *userAppsPath = [[[NSString stringWithString:@"~/Applications"] stringByAppendingPathComponent:[[[NSBundle mainBundle] bundlePath] lastPathComponent]] stringByExpandingTildeInPath]; |
69 NSString *appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"]; |
69 NSString *appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"]; |
70 |
70 |
71 //Delete the app that is installed |
71 //Delete the app that is installed |
72 if ([[NSFileManager defaultManager] fileExistsAtPath:appsPath]) { |
72 if ([[NSFileManager defaultManager] fileExistsAtPath:appsPath]) { |
73 [[NSFileManager defaultManager] removeFileAtPath:appsPath handler:nil]; |
73 [[NSFileManager defaultManager] removeFileAtPath:appsPath handler:nil]; |
74 } |
74 } |
75 //Delete the app that is installed |
75 //Delete the app that is installed |
76 if ([[NSFileManager defaultManager] copyPath:[[NSBundle mainBundle] bundlePath] toPath:appsPath |
76 if ([[NSFileManager defaultManager] copyPath:[[NSBundle mainBundle] bundlePath] toPath:appsPath |
77 handler:nil]) { |
77 handler:nil]) { |
78 NSRunAlertPanel([NSString stringWithFormat:NSLocalizedString(@"%@ installed successfully", @"App Name installed successfully"), appName], |
78 NSRunAlertPanel([NSString stringWithFormat:NSLocalizedString(@"%@ installed successfully", @"App Name installed successfully"), appName], |
79 [NSString stringWithFormat:NSLocalizedString(@"%@ was installed in /Applications", @"App Name was installed in /Applications"), appName], |
79 [NSString stringWithFormat:NSLocalizedString(@"%@ was installed in /Applications", @"App Name was installed in /Applications"), appName], |
80 NSLocalizedString(@"Quit", @"Quit"), nil, nil); |
80 NSLocalizedString(@"Quit", @"Quit"), nil, nil); |
81 } else { |
81 } else { |
82 if ([[NSFileManager defaultManager] fileExistsAtPath:userAppsPath]) { |
82 if ([[NSFileManager defaultManager] fileExistsAtPath:userAppsPath]) { |
83 [[NSFileManager defaultManager] removeFileAtPath:userAppsPath handler:nil]; |
83 [[NSFileManager defaultManager] removeFileAtPath:userAppsPath handler:nil]; |
84 } |
84 } |
85 if ([[NSFileManager defaultManager] copyPath:[[NSBundle mainBundle] bundlePath] toPath:userAppsPath |
85 if ([[NSFileManager defaultManager] copyPath:[[NSBundle mainBundle] bundlePath] toPath:userAppsPath |
86 handler:nil]) { |
86 handler:nil]) { |
87 NSRunAlertPanel([NSString stringWithFormat:NSLocalizedString(@"%@ installed successfully", @"AppName installed successfully"), appName], |
87 NSRunAlertPanel([NSString stringWithFormat:NSLocalizedString(@"%@ installed successfully", @"AppName installed successfully"), appName], |
88 [NSString stringWithFormat:NSLocalizedString(@"%@ was installed in %@", @"App Name was installed in %@"), appName, [[NSString stringWithString:@"~/Applications"] stringByExpandingTildeInPath]], |
88 [NSString stringWithFormat:NSLocalizedString(@"%@ was installed in %@", @"App Name was installed in %@"), appName, [[NSString stringWithString:@"~/Applications"] stringByExpandingTildeInPath]], |
89 NSLocalizedString(@"Quit", @"Quit"), nil, nil); |
89 NSLocalizedString(@"Quit", @"Quit"), nil, nil); |
90 } else { |
90 } else { |
91 NSRunAlertPanel([NSString stringWithFormat:NSLocalizedString(@"Could not install %@", @"Could not install App Name"), appName], |
91 NSRunAlertPanel([NSString stringWithFormat:NSLocalizedString(@"Could not install %@", @"Could not install App Name"), appName], |
92 NSLocalizedString(@"An error occurred when installing", @"An error occurred when installing"), NSLocalizedString(@"Quit", @"Quit"), nil, nil); |
92 NSLocalizedString(@"An error occurred when installing", @"An error occurred when installing"), NSLocalizedString(@"Quit", @"Quit"), nil, nil); |
93 } |
93 } |
94 } |
94 } |
95 } |
95 } |
96 |
96 |
97 @end |
97 @end |