From c93bdf73aac23a42eb21bd0f777e638e830ce4a3 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sat, 22 Jan 2011 19:07:10 +1300 Subject: [PATCH] Have a single utility app per platform. Route zip extraction and ra package install to the .net utility app under osx. --- OpenRA.Game/Game.cs | 2 +- OpenRA.Game/Utilities.cs | 23 +++---- OpenRA.Launcher.Mac/Controller.h | 4 ++ OpenRA.Launcher.Mac/Controller.m | 65 +++++++++++++++++- .../Release/OpenRA.app/Contents/MacOS/OpenRA | Bin 76876 -> 81740 bytes 5 files changed, 78 insertions(+), 16 deletions(-) diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index b9a679b65d..ce2fc7cfb2 100755 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -229,7 +229,7 @@ namespace OpenRA SupportDir = args.GetValue("SupportDir", defaultSupport); FileSystem.SpecialPackageRoot = args.GetValue("SpecialPackageRoot", ""); - Utilities = new Utilities(args.GetValue("NativeUtilityPath", ".")); + Utilities = new Utilities(args.GetValue("UtilityPath", "OpenRA.Utility.exe")); Settings = new Settings(SupportDir + "settings.yaml", args); Settings.Save(); diff --git a/OpenRA.Game/Utilities.cs b/OpenRA.Game/Utilities.cs index f50454c478..8726bd2850 100644 --- a/OpenRA.Game/Utilities.cs +++ b/OpenRA.Game/Utilities.cs @@ -16,35 +16,34 @@ namespace OpenRA { public class Utilities { - readonly string NativeUtility; - readonly string Utility = "OpenRA.Utility.exe"; + readonly string Utility; - public Utilities(string nativeUtility) + public Utilities(string utility) { - NativeUtility = nativeUtility; + Utility = utility; } public void ExtractZipAsync(string zipFile, string path, Action parseOutput, Action onComplete) { - ExecuteUtilityAsync(Utility, "\"--extract-zip={0},{1}\"".F(zipFile, path), parseOutput, onComplete); + ExecuteUtilityAsync("\"--extract-zip {0} {1}\"".F(zipFile, path), parseOutput, onComplete); } public void InstallRAFilesAsync(string cdPath, Action parseOutput, Action onComplete) { - ExecuteUtilityAsync(Utility, "\"--install-ra-packages={0}\"".F(cdPath), parseOutput, onComplete); + ExecuteUtilityAsync("\"--install-ra-packages {0}\"".F(cdPath), parseOutput, onComplete); } public void PromptFilepathAsync(string title, string message, bool directory, Action withPath) { - ExecuteUtility(NativeUtility, - "--filepicker --title \"{0}\" --message \"{1}\" {2} --button-text \"Select\"".F(title, message, directory ? "--require-directory" : ""), + ExecuteUtility("--display-filepicker --title \"{0}\" --message \"{1}\" {2} --button-text \"Select\"" + .F(title, message, directory ? "--require-directory" : ""), withPath); } - void ExecuteUtility(string executable, string args, Action onComplete) + void ExecuteUtility(string args, Action onComplete) { Process p = new Process(); - p.StartInfo.FileName = executable; + p.StartInfo.FileName = Utility; p.StartInfo.Arguments = args; p.StartInfo.UseShellExecute = false; p.StartInfo.CreateNoWindow = true; @@ -57,10 +56,10 @@ namespace OpenRA p.Start(); } - void ExecuteUtilityAsync(string executable, string args, Action parseOutput, Action onComplete) + void ExecuteUtilityAsync(string args, Action parseOutput, Action onComplete) { Process p = new Process(); - p.StartInfo.FileName = executable; + p.StartInfo.FileName = Utility; p.StartInfo.Arguments = args; p.StartInfo.UseShellExecute = false; p.StartInfo.CreateNoWindow = true; diff --git a/OpenRA.Launcher.Mac/Controller.h b/OpenRA.Launcher.Mac/Controller.h index 0f3c280d92..b4e5e30a68 100644 --- a/OpenRA.Launcher.Mac/Controller.h +++ b/OpenRA.Launcher.Mac/Controller.h @@ -16,6 +16,10 @@ IBOutlet NSWindow *window; } - (void)launchFilePicker:(NSArray *)args; +- (void)extractZip:(NSArray *)args; +- (void)installRaPackages:(NSArray *)args; - (void)launchMod:(NSString *)mod; - (BOOL)initMono; +- (void)runUtilityWithArg:(NSString *)arg; +- (void)utilityResponded:(NSNotification *)n; @end diff --git a/OpenRA.Launcher.Mac/Controller.m b/OpenRA.Launcher.Mac/Controller.m index e723e4079f..09d05c2bdd 100644 --- a/OpenRA.Launcher.Mac/Controller.m +++ b/OpenRA.Launcher.Mac/Controller.m @@ -23,10 +23,10 @@ NSArray *args = [[NSProcessInfo processInfo] arguments]; // Ingame requests for native dialogs - if ([args containsObject:@"--filepicker"]) + if ([args containsObject:@"--display-filepicker"]) [self launchFilePicker:args]; - + // Try and launch the game if (![self initMono]) { @@ -42,10 +42,29 @@ [[NSApplication sharedApplication] terminate:self]; } + // Extract a zip file + if ([args containsObject:@"--extract-zip"]) + [self extractZip:args]; + + // Install ra packages from cd + if ([args containsObject:@"--install-ra-packages"]) + [self installRaPackages:args]; + + [self launchMod:@"cnc"]; [NSApp terminate: nil]; } +- (void)extractZip:(NSArray *)args +{ + [self runUtilityWithArg:[NSString stringWithFormat:@"--extract-zip=%@,%@",[args objectAtIndex:2],[args objectAtIndex:3]]]; +} + +- (void)installRaPackages:(NSArray *)args +{ + [self runUtilityWithArg:[NSString stringWithFormat:@"--install-ra-packages=%@",[args objectAtIndex:2]]]; +} + - (void)launchFilePicker:(NSArray *)args { [NSApp activateIgnoringOtherApps:YES]; @@ -85,7 +104,7 @@ [NSApp terminate: nil]; } --(void) launchMod:(NSString *)mod +-(void)launchMod:(NSString *)mod { // Use LaunchServices because neither NSTask or NSWorkspace support Info.plist _and_ arguments pre-10.6 @@ -169,6 +188,46 @@ (major == 2 && minor == 6 && point >= 7)); } + +- (void)runUtilityWithArg:(NSString *)arg +{ + NSTask *task = [[[NSTask alloc] init] autorelease]; + NSPipe *pipe = [NSPipe pipe]; + + NSMutableArray *taskArgs = [NSMutableArray arrayWithObject:@"OpenRA.Utility.exe"]; + [taskArgs addObject:arg]; + + [task setCurrentDirectoryPath:gamePath]; + [task setLaunchPath:monoPath]; + [task setArguments:taskArgs]; + [task setStandardOutput:pipe]; + + NSFileHandle *readHandle = [pipe fileHandleForReading]; + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc addObserver:self + selector:@selector(utilityResponded:) + name:NSFileHandleReadCompletionNotification + object:readHandle]; + [task launch]; + [readHandle readInBackgroundAndNotify]; + [task waitUntilExit]; + + [nc removeObserver:self name:NSFileHandleReadCompletionNotification object:[[task standardOutput] fileHandleForReading]]; + [nc removeObserver:self name:NSTaskDidTerminateNotification object:task]; +} + +- (void)utilityResponded:(NSNotification *)n +{ + NSData *data = [[n userInfo] valueForKey:NSFileHandleNotificationDataItem]; + NSString *response = [[[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding] autorelease]; + printf("%s", [response UTF8String]); + + // Keep reading + if ([n object] != nil) + [[n object] readInBackgroundAndNotify]; +} + + - (void)dealloc { [monoPath release]; monoPath = nil; diff --git a/OpenRA.Launcher.Mac/build/Release/OpenRA.app/Contents/MacOS/OpenRA b/OpenRA.Launcher.Mac/build/Release/OpenRA.app/Contents/MacOS/OpenRA index 818cd93a1002d0ce03b6b7cc236f2c68cdbac90e..e1ee1c857162001fca19ac6d47dccc77b45247be 100755 GIT binary patch literal 81740 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 M4Fm%tFM{@e0h8r{6951J literal 76876 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