1 /***************************************************************** |
1 /***************************************************************** |
2 M3InstallController.m |
2 M3InstallController.m |
3 |
3 |
4 Created by Martin Pilkington on 02/06/2007. |
4 Created by Martin Pilkington on 02/06/2007. |
5 |
5 |
6 Copyright (c) 2006-2009 M Cubed Software |
6 Copyright (c) 2006-2009 M Cubed Software |
7 |
7 |
8 Permission is hereby granted, free of charge, to any person |
8 Permission is hereby granted, free of charge, to any person |
9 obtaining a copy of this software and associated documentation |
9 obtaining a copy of this software and associated documentation |
10 files (the "Software"), to deal in the Software without |
10 files (the "Software"), to deal in the Software without |
11 restriction, including without limitation the rights to use, |
11 restriction, including without limitation the rights to use, |
12 copy, modify, merge, publish, distribute, sublicense, and/or sell |
12 copy, modify, merge, publish, distribute, sublicense, and/or sell |
13 copies of the Software, and to permit persons to whom the |
13 copies of the Software, and to permit persons to whom the |
14 Software is furnished to do so, subject to the following |
14 Software is furnished to do so, subject to the following |
15 conditions: |
15 conditions: |
16 |
16 |
17 The above copyright notice and this permission notice shall be |
17 The above copyright notice and this permission notice shall be |
18 included in all copies or substantial portions of the Software. |
18 included in all copies or substantial portions of the Software. |
19 |
19 |
20 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
20 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
21 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES |
21 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES |
22 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
22 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
23 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
23 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
24 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
24 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
25 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
25 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
26 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
26 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
27 OTHER DEALINGS IN THE SOFTWARE. |
27 OTHER DEALINGS IN THE SOFTWARE. |
28 |
28 |
29 *****************************************************************/ |
29 *****************************************************************/ |
30 |
30 |
31 #import "M3InstallController.h" |
31 #import "M3InstallController.h" |
32 #import "NSWorkspace_RBAdditions.h" |
32 #import "NSWorkspace_RBAdditions.h" |
33 |
33 |
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]; |
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 |