QTfrontend/M3InstallController.m
changeset 3697 d5b30d6373fc
parent 2606 ed687a8d081f
child 6479 4f08821cbff5
equal deleted inserted replaced
3695:c11abf387a7d 3697:d5b30d6373fc
     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