From 22cd7ae1ad584eedbaa85c03d5c352569c8ed7bf Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Wed, 4 May 2011 20:21:09 +1200 Subject: [PATCH] Fix osx launcher. TODO: needs testing on 10.5 --- OpenRA.Game/Utilities.cs | 25 +++--- OpenRA.Launcher.Mac/Controller.h | 4 - OpenRA.Launcher.Mac/Controller.m | 82 ++++-------------- .../Release/OpenRA.app/Contents/Info.plist | 16 ++++ .../Release/OpenRA.app/Contents/MacOS/OpenRA | Bin 81736 -> 25164 bytes .../Resources/English.lproj/InfoPlist.strings | Bin 92 -> 92 bytes .../Resources/English.lproj/MainMenu.nib | Bin 6774 -> 6329 bytes OpenRA.Launcher.Mac/main.m | 8 +- 8 files changed, 48 insertions(+), 87 deletions(-) diff --git a/OpenRA.Game/Utilities.cs b/OpenRA.Game/Utilities.cs index 6baf5329aa..505de31cd7 100644 --- a/OpenRA.Game/Utilities.cs +++ b/OpenRA.Game/Utilities.cs @@ -30,18 +30,21 @@ namespace OpenRA void ExecuteUtility(string args, Action onComplete) { - Process p = new Process(); - p.StartInfo.FileName = Utility; - p.StartInfo.Arguments = "{0} --SupportDir \"{1}\"".F(args, Game.SupportDir); - p.StartInfo.UseShellExecute = false; - p.StartInfo.CreateNoWindow = true; - p.StartInfo.RedirectStandardOutput = true; - p.EnableRaisingEvents = true; - p.Exited += (_,e) => + try { - onComplete(p.StandardOutput.ReadToEnd().Trim()); - }; - p.Start(); + Process p = new Process(); + p.StartInfo.FileName = Utility; + p.StartInfo.Arguments = "{0} --SupportDir \"{1}\"".F(args, Game.SupportDir); + p.StartInfo.UseShellExecute = false; + p.StartInfo.RedirectStandardOutput = true; + p.EnableRaisingEvents = true; + p.Exited += (_,e) => + { + onComplete(p.StandardOutput.ReadToEnd().Trim()); + }; + p.Start(); + } + catch(System.ComponentModel.Win32Exception) {} // Don't crash if the process fails } } } diff --git a/OpenRA.Launcher.Mac/Controller.h b/OpenRA.Launcher.Mac/Controller.h index fa8415f821..784e429512 100644 --- a/OpenRA.Launcher.Mac/Controller.h +++ b/OpenRA.Launcher.Mac/Controller.h @@ -16,11 +16,7 @@ IBOutlet NSWindow *window; } - (void)launchFilePicker:(NSArray *)args; -- (void)extractZip:(NSArray *)args; -- (void)installRAPackages:(NSArray *)args; - (void)launch; - (BOOL)initMono; -- (void)runUtilityWithArgs:(NSArray *)arg; -- (void)utilityResponded:(NSNotification *)n; - (BOOL)shouldHideMenubar; @end diff --git a/OpenRA.Launcher.Mac/Controller.m b/OpenRA.Launcher.Mac/Controller.m index 277f107839..f22ab95e4c 100644 --- a/OpenRA.Launcher.Mac/Controller.m +++ b/OpenRA.Launcher.Mac/Controller.m @@ -40,37 +40,12 @@ extern char **environ; // Ingame requests for native dialogs if ([args containsObject:@"--display-filepicker"]) [self launchFilePicker:args]; - - // Extract a zip file - else if ([args containsObject:@"--extract-zip"]) - [self extractZip:args]; - - // Install ra packages from cd - else if ([args containsObject:@"--install-ra-packages"]) - [self installRAPackages:args]; - else [self launch]; [NSApp terminate: nil]; } -- (void)extractZip:(NSArray *)args -{ - // Todo: check if we can write to the requested dir, escalate priviledges if required. - NSMutableArray *a = [NSMutableArray arrayWithArray:args]; - [a replaceObjectAtIndex:0 withObject:@"--extract-zip-inner"]; - [self runUtilityWithArgs:a]; -} - -- (void)installRAPackages:(NSArray *)args -{ - // Todo: check if we can write to the requested dir, escalate priviledges if required. - NSMutableArray *a = [NSMutableArray arrayWithArray:args]; - [a replaceObjectAtIndex:0 withObject:@"--install-ra-packages-inner"]; - [self runUtilityWithArgs:a]; -} - - (void)launchFilePicker:(NSArray *)args { [NSApp activateIgnoringOtherApps:YES]; @@ -109,6 +84,20 @@ extern char **environ; NSFileHandle *readHandle = [pipe fileHandleForReading]; [task launch]; [task waitUntilExit]; + + if ([task terminationStatus] != 0) + { + NSAlert *alert = [NSAlert alertWithMessageText:@"Error" + defaultButton:@"Quit" + alternateButton:nil + otherButton:nil + informativeTextWithFormat:@"OpenRA.Utility.exe returned an error and cannot continue."]; + + [alert runModal]; + [[NSApplication sharedApplication] terminate:self]; + + } + NSString *response = [[[NSString alloc] initWithData:[readHandle readDataToEndOfFile] encoding: NSUTF8StringEncoding] autorelease]; return ![response isEqualToString:@"Windowed\n"]; @@ -125,9 +114,8 @@ extern char **environ; [self shouldHideMenubar] ? @"--hide-menubar" : @"--no-hide-menubar", gamePath, monoPath, - [NSString stringWithFormat:@"UtilityPath=%@", [[[NSBundle mainBundle] executablePath] stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]], + [NSString stringWithFormat:@"UtilityPath=%@", [[NSBundle mainBundle] executablePath]], [NSString stringWithFormat:@"SupportDir=%@",[@"~/Library/Application Support/OpenRA" stringByExpandingTildeInPath]], - [NSString stringWithFormat:@"SpecialPackageRoot=%@/",[@"~/Library/Application Support/OpenRA" stringByExpandingTildeInPath]], nil]; FSRef appRef; CFURLGetFSRef((CFURLRef)[NSURL URLWithString:[[[NSBundle mainBundle] executablePath] stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]], &appRef); @@ -200,46 +188,6 @@ extern char **environ; (major == 2 && minor == 6 && point >= 7)); } - -- (void)runUtilityWithArgs:(NSArray *)args -{ - NSTask *task = [[[NSTask alloc] init] autorelease]; - NSPipe *pipe = [NSPipe pipe]; - - NSMutableArray *taskArgs = [NSMutableArray arrayWithObject:@"OpenRA.Utility.exe"]; - [taskArgs addObjectsFromArray:args]; - - [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/Info.plist b/OpenRA.Launcher.Mac/build/Release/OpenRA.app/Contents/Info.plist index e87e49f3a1..e32afd19eb 100644 --- a/OpenRA.Launcher.Mac/build/Release/OpenRA.app/Contents/Info.plist +++ b/OpenRA.Launcher.Mac/build/Release/OpenRA.app/Contents/Info.plist @@ -2,6 +2,8 @@ + BuildMachineOSBuild + 10J869 CFBundleDevelopmentRegion English CFBundleDisplayName @@ -24,6 +26,20 @@ ???? CFBundleVersion 1 + DTCompiler + + DTPlatformBuild + 4A304a + DTPlatformVersion + GM + DTSDKBuild + 4A304a + DTSDKName + macosx10.6 + DTXcode + 0400 + DTXcodeBuild + 4A304a LSMinimumSystemVersion 10.5 NSMainNibFile 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 769bc2a49b81cc61d1af736e343f535707340c01..c115daf3d3a016e99087be8f9af712921ba05e6c 100755 GIT binary patch literal 25164 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 literal 81736 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 diff --git a/OpenRA.Launcher.Mac/build/Release/OpenRA.app/Contents/Resources/English.lproj/InfoPlist.strings b/OpenRA.Launcher.Mac/build/Release/OpenRA.app/Contents/Resources/English.lproj/InfoPlist.strings index dea12de4cad936a6204d4da70d2ca96aef900b31..5e45963c382ba690b781b953a00585212b898ac5 100644 GIT binary patch delta 10 Rcma!vVfz1XB6B1o0{|Dv1Ev4~ delta 9 Qcma!vVgC1@VIor`024U_r2qf` diff --git a/OpenRA.Launcher.Mac/build/Release/OpenRA.app/Contents/Resources/English.lproj/MainMenu.nib b/OpenRA.Launcher.Mac/build/Release/OpenRA.app/Contents/Resources/English.lproj/MainMenu.nib index 3e4a9fc25972f933ac324efb295cdad20106b4b4..41c42be51fb7bd5bc31578c34eaed2e82299e299 100644 GIT binary patch delta 2297 zcma)+4Nz3q702&+6US!n$KG>^MI{6Y184zZcahHmp@IkqvTqTTPXSi~U62pa+K<^A zGtG3`=EH1)O{PtiI!2mWn-Y@+zPX))a9Y` zcUA`DA%RT5Vqjz#l1MeAz*0yBCmAH8;2|f;HFAzT3t1#UCLx!!LLTJn6}nU>>ndHK z<8-xl=sMk~%k+IZS|@71PSv^Eqwm!%TIx*g(@tHh>rayn#7{O7McT>zq=R(AePoz) zkwx851jVEmN)(ZVn1B&_fnKSCH*Va}k-8)hioy9^-sCe-4y$g7PytRzH8Hx$Ch(aM z3)fcq3fne!Z0cTD>GKV=cKN#p^eU5A*;G(z(;F%p<<_&Dh$+jR4EHS*RLH-$#|J-Nqq(H1*&g-@e=0p2#=xhceVOR{)mItVv|pw6Dy3rHD|(Gl<`_Agq!wcFq4b$eZ2k2l@B%$w=W@Md|lZC9G@ za@j7o?ef^JblbJec4gSEOxu-ZyRvO}n(cPkZny3B*zR=Oy)0Cx5`tvV%(W6&Y$~lL zlVp`~LwUHJq|{V@juac7t!Ao?k_tmNJWPtnNh6kLjWs983Q}gI<1twB$x0)i0v&6L zw#>ZC)H!CRWrQW6lZPh`Q@NEBK;g%yHOp#4+wT>NxH=>G-YVqT>=} zbRLbNu{4gx(?q(2CebwNrs=epme5jKPAjNQTWBW@&`q?LeuF+lAEuAfF?xc&K~K}S z=s9|UzC$n4ztKzd3Z0}M)9Z||NVb4Qv1k^Rh^M%K()SR3=R zjjWvoSU20ro?_3iU2KT$VSCv=wx1nf&$Cf>f}Le=vcIzP>}__LU1gJ;@FhHnr*St= z=NUYUXY(9hzzcaN5Aa^z&jGVCNwkX&(IfiAX0b*5Q0x|a z#Xj+4@e}b=@iTEyyd(~V?D=ECN?9)(WwUINZPG8>WrzH-?2!z7wMI3m^{Pd6s(|WJThv$7Hnm;tP=jip+ONh!H4E>t)ZzaE$XS5$ delta 2808 zcma)73v^Uh6}|Tfjm*98<-U7fB^F3WQa)3X@(JHiO9C+@gd{-tfm}Xv=2_MgEO}R-}kfJTsG_No`!tTWi+3 z-@VT{d*5?l=*{8l-uvccnnR0eCH2v2T0@_utLSRFhOVPQx`A$@4fG}YD&0r-(}VQ4 zw1pm`f1=0fpXn)jfnKDS_8GLKTg+@VU6rZgeKp+=(wIyf%v2Nijf!c|Vq7?=ROP|5 zJ#qt_w2|qgo;pY)9Yhmp5;;r<(;;LB@z7*)myVz#iIa||V`vIFLYiqTIitp@QOc(J zs0@{$W~m%iqz0==Dp&PYLd{TPRjHb)VpWzZP)?Po2B=h(e3H0H1#yu|BFQ|OO4CRc znNMnH>;%$C77#D-(MLUU?emIX*82Fqzx$^L5M7b%0aLhcyTfk z$xw-1T|T?h-4(>AdP*V)LE50cu4IoMGH~zSJtaT*oE!3TxXFAvFLIVXNj*r@+wt7w z$f=$xJ9yOAE6^2sZ71}_U8A3*OGpJ>8qE$e2oVTSg{hAwX9bd2S&*BbR$k}!c?)y% z^A|c7xV#J1l(-1BsnMXKD>=;QV!|6s^KQlK!G;W|9$*8Wv+j5^`zpoKaU4Q8`=>xxSMDdlQh zG1f8D<*5$UEO^Km7(kac59EDB{Lu*OeW7=SCh&EIkrX>g4VoL*MqGu={_N+SB0{g(c zYL|Cfnmv>yM@fd;;~G$F&s*em`OAdWVOxHcZ;?IC<8c&C@OkU}K9A>%J96A!_X77~ zm!mM>RXx`~x6bFE9loF)!citXOuwT|Fc(LaE)zKd2Hff7&0PBIvq z+7XneoesjJW{_+$i8@e=BeAz6qh)f)M3RZRY$o4Ak55L6I8oAP2pSocHx}($ibm*x z-DeW^p+szf8d_zL>a9kqVc3VVuM>sD@|>JsZA53P1+**nbdF6YOztYiswYVSZC6YO!{}R z)}%hsN30M7L{D*DEEC;L+A6*e*vCS@yCQDi40%NhylFdXJ7GIzJ8L^+Fk9Oh&dtddnRH=ECVtcI;; zo7fiiL$;Ougl%UpvsYLPdyBQQHuewpPxdMM7yCE6!|rm8cjHNXBu@?S@q8lB;@Lch z=kck0CNJPcyqx>_GQONY&sXs^d;_oNn|LGN%Mb83`6YgZxAE)z6Mlo=*;!io~`HTdHNjPsaNQgdX>IN-=;U{JM>0aE6uMo*)+5pURyzQ!X)Kcl}f$Vf6CH!_SoW2#YL6d5H( zsj>tc+L2g(QLdC-1xQE1C^pytj5~x5>4W5aY9@W zx6KF4G3FHWN%I+Vxw+ZgZZ?^}Gv6^kG(VEv<-;;n7Rhqyl9kdYYouR(TP~4@Ep{0oKAgSPvVZ9yY@d;79Od z*ai)-9bSf4;ODRlUWH%6Uf2&!Z~$J1-@rj=fw$rJa0m{=QTQVqgX8c%WS@Z3a0Whv zzrh8#1XrLHuEED}18%}CxD9vUGmBW7)!mA*ge9$BRv# */ - if (argc >= 8 && strcmp(argv[1], "--launch") == 0) + if (argc >= 7 && strcmp(argv[1], "--launch") == 0) { /* Change into the game dir */ chdir(argv[3]); @@ -25,7 +25,6 @@ int main(int argc, char *argv[]) "OpenRA.Game.exe", argv[5], argv[6], - argv[7], NULL }; @@ -52,7 +51,6 @@ int main(int argc, char *argv[]) /* Exec mono */ execve(args[0], args, environ); } - - /* Else, start the launcher */ - return NSApplicationMain(argc, (const char **) argv); + else /* Else, start the launcher */ + return NSApplicationMain(argc, (const char **) argv); }