Index: main.m =================================================================== --- main.m (revision 465) +++ main.m (working copy) @@ -7,8 +7,86 @@ // #import +#import +#import +#import "BuilderController.h" +static int usage(char *name) { + fprintf(stderr, "Usage: %s [options]\n", name); + fprintf(stderr, "If no options are specified, the app runs in interactive mode.\n\ +\n\ + -h This message\n\ + -i The input file (.zip or .ipa) (required)\n\ + -o The output directory (required)\n\ + -u The URL of the output directory (required)\n\ + -r The README.txt file to include (optional)\n\ +\n"); + return(1); +} + int main(int argc, char *argv[]) { - return NSApplicationMain(argc, (const char **) argv); + int ch; + BOOL optBatch = NO; + NSString *optInputFile = nil; + NSString *optOutputDirectory = nil; + NSString *optReadmePath = nil; + NSString *optUrl = nil; + + // Do we have options? + while((ch = getopt(argc, argv, "hi:o:r:u:")) != -1) { + switch(ch) { + case 'i': + optBatch = YES; + if(optInputFile != nil) [optInputFile release]; + optInputFile = [NSString stringWithCString:optarg encoding:NSASCIIStringEncoding]; + break; + + case 'o': + optBatch = YES; + if(optOutputDirectory != nil) [optOutputDirectory release]; + optOutputDirectory = [NSString stringWithCString:optarg encoding:NSASCIIStringEncoding]; + break; + + case 'r': + optBatch = YES; + if(optReadmePath != nil) [optReadmePath release]; + optReadmePath = [NSString stringWithCString:optarg encoding:NSASCIIStringEncoding]; + break; + + case 'u': + optBatch = YES; + if(optUrl != nil) [optUrl release]; + optUrl = [NSString stringWithCString:optarg encoding:NSASCIIStringEncoding]; + break; + + case 'h': + case '?': + default: + return usage(argv[0]); + break; + + } + } + + if(!optBatch) { + // Interactive gui loop + return NSApplicationMain(argc, (const char **) argv); + } + + if(optInputFile == nil || optOutputDirectory == nil || optUrl == nil) { + return usage(argv[0]); + } + + BuilderController *bc = [[BuilderController alloc] initInBatchMode]; + + // Drive the controller... + bc.saveDirectory = optOutputDirectory; + bc.readmePath = optReadmePath; + bc.webserverDirectoryField.stringValue = optUrl; + + if(![bc setupFromIPAFile:optInputFile]) { + exit(1); + } + [bc generateFiles:nil]; } Index: BuilderController.h =================================================================== --- BuilderController.h (revision 465) +++ BuilderController.h (working copy) @@ -35,6 +35,8 @@ @interface BuilderController : NSObject { NSTextField *bundleIdentifierField; NSTextField *bundleVersionField; + NSTextField *bundleBuildField; + NSTextField *bundleCopyrightField; NSTextField *bundleNameField; NSTextField *webserverDirectoryField; NSTextField *archiveIPAFilenameField; @@ -42,21 +44,30 @@ NSButton *generateFilesButton; NSString *mobileProvisionFilePath; + + // Chrisy + BOOL batchMode; + NSString *saveDirectory, *readmePath; } @property (nonatomic, retain) IBOutlet NSTextField *bundleIdentifierField; -@property (nonatomic, retain) IBOutlet NSTextField *bundleVersionField; +@property (nonatomic, retain) IBOutlet NSTextField *bundleVersionField, *bundleBuildField, *bundleCopyrightField; @property (nonatomic, retain) IBOutlet NSTextField *bundleNameField; @property (nonatomic, retain) IBOutlet NSTextField *webserverDirectoryField; @property (nonatomic, retain) IBOutlet NSTextField *archiveIPAFilenameField; @property (nonatomic, retain) IBOutlet NSButton *generateFilesButton; +@property (nonatomic, assign) BOOL batchMode; +@property (nonatomic, retain) NSString *saveDirectory, *readmePath; + @property (nonatomic, copy) NSString *mobileProvisionFilePath; +- (id)initInBatchMode; + - (IBAction)specifyIPAFile:(id)sender; - (IBAction)generateFiles:(id)sender; -- (void)setupFromIPAFile:(NSString *)ipaFilename; +- (BOOL)setupFromIPAFile:(NSString *)ipaFilename; @end Index: BuilderController.m =================================================================== --- BuilderController.m (revision 465) +++ BuilderController.m (working copy) @@ -29,19 +29,35 @@ 3. This notice may not be removed or altered from any source distribution. */ +#import #import "BuilderController.h" #import "ZipArchive.h" @implementation BuilderController @synthesize bundleIdentifierField; -@synthesize bundleVersionField; +@synthesize bundleVersionField, bundleBuildField, bundleCopyrightField; @synthesize bundleNameField; @synthesize webserverDirectoryField; @synthesize archiveIPAFilenameField; @synthesize generateFilesButton; @synthesize mobileProvisionFilePath; +@synthesize batchMode, saveDirectory, readmePath; +- (id)initInBatchMode { + if(self = [super init]) { + archiveIPAFilenameField = [[NSTextField alloc] init]; + bundleNameField = [[NSTextField alloc] init]; + bundleCopyrightField = [[NSTextField alloc] init]; + bundleVersionField = [[NSTextField alloc] init]; + bundleBuildField = [[NSTextField alloc] init]; + bundleIdentifierField = [[NSTextField alloc] init]; + webserverDirectoryField = [[NSTextField alloc] init]; + batchMode = YES; + } + return self; +} + - (IBAction)specifyIPAFile:(id)sender { NSOpenPanel *openDlg = [NSOpenPanel openPanel]; [openDlg setCanChooseFiles:YES]; @@ -57,19 +73,21 @@ } } -- (void)setupFromIPAFile:(NSString *)ipaFilename { +- (BOOL)setupFromIPAFile:(NSString *)ipaFilename { [archiveIPAFilenameField setStringValue:ipaFilename]; - + //Attempt to pull values NSError *fileCopyError; NSError *fileDeleteError; NSFileManager *fileManager = [NSFileManager defaultManager]; - NSURL *ipaSourceURL = [NSURL fileURLWithPath:[archiveIPAFilenameField stringValue]]; + NSLog(@"ipafile = %@", ipaFilename); + NSURL *ipaSourceURL = [NSURL fileURLWithPath:ipaFilename]; NSURL *ipaDestinationURL = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@%@", NSTemporaryDirectory(), [[archiveIPAFilenameField stringValue] lastPathComponent]]]; [fileManager removeItemAtURL:ipaDestinationURL error:&fileDeleteError]; BOOL copiedIPAFile = [fileManager copyItemAtURL:ipaSourceURL toURL:ipaDestinationURL error:&fileCopyError]; if (!copiedIPAFile) { NSLog(@"Error Copying IPA File: %@", fileCopyError); + return NO; } else { //Remove Existing Trash in Temp Directory [fileManager removeItemAtPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"extracted_app"] error:nil]; @@ -89,7 +107,9 @@ NSDictionary *bundlePlistFile = [NSDictionary dictionaryWithContentsOfFile:[appDirectoryPath stringByAppendingPathComponent:plistPath]]; if (bundlePlistFile) { - [bundleVersionField setStringValue:[bundlePlistFile valueForKey:@"CFBundleVersion"]]; + [bundleVersionField setStringValue:[bundlePlistFile valueForKey:@"CFBundleShortVersionString"]]; + [bundleBuildField setStringValue:[bundlePlistFile valueForKey:@"CFBundleVersion"]]; + [bundleCopyrightField setStringValue:[bundlePlistFile valueForKey:@"NSHumanReadableCopyright"]]; [bundleIdentifierField setStringValue:[bundlePlistFile valueForKey:@"CFBundleIdentifier"]]; [bundleNameField setStringValue:[bundlePlistFile valueForKey:@"CFBundleDisplayName"]]; } @@ -99,60 +119,103 @@ } } - [generateFilesButton setEnabled:YES]; + if(!batchMode) [generateFilesButton setEnabled:YES]; + return YES; } - (IBAction)generateFiles:(id)sender { + NSString *betaZipName = nil; + if(batchMode) { + betaZipName = [[[archiveIPAFilenameField stringValue] lastPathComponent] stringByDeletingPathExtension]; + } else { + betaZipName = @"betaApp"; + } + + //create plist - NSString *encodedIpaFilename = [[[archiveIPAFilenameField stringValue] lastPathComponent] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; //this isn't the most robust way to do this + NSString *newIpaFilename = [[[[archiveIPAFilenameField stringValue] lastPathComponent] + stringByDeletingPathExtension] stringByAppendingString:@".ipa"]; + NSLog(@"original ipa file:%@ new ipa file:%@", [archiveIPAFilenameField stringValue], newIpaFilename); + NSString *encodedIpaFilename = [newIpaFilename stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; //this isn't the most robust way to do this NSString *ipaURLString = [NSString stringWithFormat:@"%@/%@", [webserverDirectoryField stringValue], encodedIpaFilename]; - NSDictionary *assetsDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"software-package", @"kind", ipaURLString, @"url", nil]; - NSDictionary *metadataDictionary = [NSDictionary dictionaryWithObjectsAndKeys:[bundleIdentifierField stringValue], @"bundle-identifier", [bundleVersionField stringValue], @"bundle-version", @"software", @"kind", [bundleNameField stringValue], @"title", nil]; - NSDictionary *innerManifestDictionary = [NSDictionary dictionaryWithObjectsAndKeys:[NSArray arrayWithObject:assetsDictionary], @"assets", metadataDictionary, @"metadata", nil]; - NSDictionary *outerManifestDictionary = [NSDictionary dictionaryWithObjectsAndKeys:[NSArray arrayWithObject:innerManifestDictionary], @"items", nil]; + NSDictionary *assetsDictionary = [NSDictionary dictionaryWithObjectsAndKeys: + @"software-package", @"kind", + ipaURLString, @"url", + nil]; + NSDictionary *metadataDictionary = [NSDictionary dictionaryWithObjectsAndKeys: + [bundleIdentifierField stringValue], @"bundle-identifier", + [bundleBuildField stringValue], @"bundle-version", + @"software", @"kind", + [bundleNameField stringValue], @"title", + nil]; + NSDictionary *innerManifestDictionary = [NSDictionary dictionaryWithObjectsAndKeys: + [NSArray arrayWithObject:assetsDictionary], @"assets", + metadataDictionary, @"metadata", + nil]; + NSDictionary *outerManifestDictionary = [NSDictionary dictionaryWithObjectsAndKeys: + [NSArray arrayWithObject:innerManifestDictionary], @"items", + nil]; NSLog(@"Manifest Created"); //create html file NSString *templatePath = [[NSBundle mainBundle] pathForResource:@"index_template" ofType:@"html"]; NSString *htmlTemplateString = [NSString stringWithContentsOfFile:templatePath encoding:NSUTF8StringEncoding error:nil]; htmlTemplateString = [htmlTemplateString stringByReplacingOccurrencesOfString:@"[BETA_NAME]" withString:[bundleNameField stringValue]]; + htmlTemplateString = [htmlTemplateString stringByReplacingOccurrencesOfString:@"[BETA_VERSION]" withString:[bundleVersionField stringValue]]; + htmlTemplateString = [htmlTemplateString stringByReplacingOccurrencesOfString:@"[BETA_BUILD]" withString:[bundleBuildField stringValue]]; + htmlTemplateString = [htmlTemplateString stringByReplacingOccurrencesOfString:@"[BETA_COPYRIGHT]" withString:[bundleCopyrightField stringValue]]; htmlTemplateString = [htmlTemplateString stringByReplacingOccurrencesOfString:@"[BETA_PLIST]" withString:[NSString stringWithFormat:@"%@/%@", [webserverDirectoryField stringValue], @"manifest.plist"]]; - - //ask for save location - NSOpenPanel *directoryPanel = [NSOpenPanel openPanel]; - [directoryPanel setCanChooseFiles:NO]; - [directoryPanel setCanChooseDirectories:YES]; - [directoryPanel setAllowsMultipleSelection:NO]; - [directoryPanel setCanCreateDirectories:YES]; - [directoryPanel setPrompt:@"Choose Directory"]; - [directoryPanel setMessage:@"Choose the Directory for Beta Files - Probably Should Match Deployment Directory"]; - - if ([directoryPanel runModalForDirectory:nil file:nil] == NSOKButton) { - NSURL *saveDirectoryURL = [directoryPanel directoryURL]; + htmlTemplateString = [htmlTemplateString stringByReplacingOccurrencesOfString:@"[BETA_ZIP]" withString:[[NSString stringWithFormat:@"%@%@", betaZipName, @".zip"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; + + NSURL *saveDirectoryURL = nil; + if(!batchMode) { + //ask for save location + NSOpenPanel *directoryPanel = [NSOpenPanel openPanel]; + [directoryPanel setCanChooseFiles:NO]; + [directoryPanel setCanChooseDirectories:YES]; + [directoryPanel setAllowsMultipleSelection:NO]; + [directoryPanel setCanCreateDirectories:YES]; + [directoryPanel setPrompt:@"Choose Directory"]; + [directoryPanel setMessage:@"Choose the Directory for Beta Files - Probably Should Match Deployment Directory"]; + if ([directoryPanel runModalForDirectory:nil file:nil] == NSOKButton) { + saveDirectoryURL = [directoryPanel directoryURL]; + } + } else { + saveDirectoryURL = [NSURL fileURLWithPath:saveDirectory]; + } + NSLog(@"saveDirUrl:%@", [saveDirectoryURL absoluteString]); + if(saveDirectoryURL != nil) { //Write Files [outerManifestDictionary writeToURL:[saveDirectoryURL URLByAppendingPathComponent:@"manifest.plist"] atomically:YES]; - [htmlTemplateString writeToURL:[saveDirectoryURL URLByAppendingPathComponent:@"index.html"] atomically:YES encoding:NSASCIIStringEncoding error:nil]; + [htmlTemplateString writeToURL:[saveDirectoryURL URLByAppendingPathComponent:@"index.html"] atomically:YES encoding:NSUTF8StringEncoding error:nil]; //Copy IPA NSError *fileCopyError; NSFileManager *fileManager = [NSFileManager defaultManager]; NSURL *ipaSourceURL = [NSURL fileURLWithPath:[archiveIPAFilenameField stringValue]]; - NSURL *ipaDestinationURL = [saveDirectoryURL URLByAppendingPathComponent:[[archiveIPAFilenameField stringValue] lastPathComponent]]; + NSURL *ipaDestinationURL = [saveDirectoryURL URLByAppendingPathComponent:[newIpaFilename lastPathComponent]]; + [fileManager removeItemAtURL:ipaDestinationURL error:&fileCopyError]; BOOL copiedIPAFile = [fileManager copyItemAtURL:ipaSourceURL toURL:ipaDestinationURL error:&fileCopyError]; if (!copiedIPAFile) { NSLog(@"Error Copying IPA File: %@", fileCopyError); } //Copy README - NSString *readmeContents = [[NSBundle mainBundle] pathForResource:@"README" ofType:@""]; - [readmeContents writeToURL:[saveDirectoryURL URLByAppendingPathComponent:@"README.txt"] atomically:YES encoding:NSASCIIStringEncoding error:nil]; + NSString *readmeFile = readmePath; + if(readmeFile == nil || [readmePath length] == 0) readmeFile = [[NSBundle mainBundle] pathForResource:@"README" ofType:@""]; + NSString *readmeContents = [NSString stringWithContentsOfFile:readmeFile encoding:NSUTF8StringEncoding error:&fileCopyError]; + [readmeContents writeToURL:[saveDirectoryURL URLByAppendingPathComponent:@"README.txt"] atomically:YES encoding:NSUTF8StringEncoding error:nil]; //Create Archived Version for 3.0 Apps ZipArchive* zip = [[ZipArchive alloc] init]; - BOOL ret = [zip CreateZipFile2:[[saveDirectoryURL path] stringByAppendingPathComponent:@"beta_archive.zip"]]; - ret = [zip addFileToZip:[archiveIPAFilenameField stringValue] newname:@"application.ipa"]; - ret = [zip addFileToZip:mobileProvisionFilePath newname:@"beta_provision.mobileprovision"]; + NSString *zipfile = [[saveDirectoryURL path] stringByAppendingPathComponent: + [betaZipName stringByAppendingString:@".zip"]]; + [fileManager removeItemAtPath:zipfile error:&fileCopyError]; + BOOL ret = [zip CreateZipFile2:zipfile]; + ret = [zip addFileToZip:[archiveIPAFilenameField stringValue] + newname:[[[[archiveIPAFilenameField stringValue] lastPathComponent] stringByDeletingPathExtension] stringByAppendingString:@".ipa"]]; + ret = [zip addFileToZip:mobileProvisionFilePath newname:[NSString stringWithFormat:@"%@.mobileprovision", betaZipName]]; if(![zip CloseZipFile2]) { NSLog(@"Error Creating 3.x Zip File"); } Index: index_template.html =================================================================== --- index_template.html (revision 465) +++ index_template.html (working copy) @@ -5,31 +5,43 @@ [BETA_NAME] - Beta Release
-

iOS 4.0 Users:

+

[BETA_NAME] - Beta

+ + + + +
Version:[BETA_VERSION]
Build:[BETA_BUILD]
Copyright:[BETA_COPYRIGHT]
- +

iOS 4.0 (or newer) Users:

+ +

Link didn't work?
Make sure you're visiting this page on your device, not your computer.

+

iOS 3.2.x (or older) Users:

+

On a version of iOS before 4.0?
-Reload this page in your computer browser and download a zipped archive and provisioning profile here: +Reload this page in your computer browser (Mac or PC), download the ZIP archive here:

+ +

...and drag-and-drop the contents of the ZIP file into iTunes.

- +
Index: English.lproj/MainMenu.xib =================================================================== --- English.lproj/MainMenu.xib (revision 465) +++ English.lproj/MainMenu.xib (working copy) @@ -3,28 +3,24 @@ 1060 10F569 - 788 + 804 1038.29 461.00 com.apple.InterfaceBuilder.CocoaPlugin - 788 + 804 YES + YES com.apple.InterfaceBuilder.CocoaPlugin - YES - - YES - - - YES - + PluginDependencyRecalculationVersion + YES @@ -1316,7 +1312,7 @@ 7 2 - {{335, 260}, {306, 490}} + {{335, 133}, {342, 617}} 1954021376 BetaBuilder NSWindow @@ -1330,9 +1326,8 @@ 268 - {{17, 432}, {272, 44}} + {{17, 559}, {272, 44}} - YES 68288064 @@ -1379,7 +1374,6 @@ 268 {{15, 44}, {247, 17}} - YES 68288064 @@ -1398,9 +1392,8 @@ 268 - {{14, 319}, {240, 17}} + {{14, 438}, {240, 17}} - YES 68288064 @@ -1415,9 +1408,8 @@ 268 - {{18, 14}, {234, 22}} + {{18, 14}, {270, 22}} - YES -1804468671 @@ -1447,9 +1439,8 @@ 268 - {{17, 289}, {234, 22}} + {{17, 408}, {271, 22}} - YES -2072904127 @@ -1466,9 +1457,8 @@ 268 - {{135, 253}, {124, 32}} + {{170, 372}, {124, 32}} - YES 67239424 @@ -1487,16 +1477,15 @@ 268 - {{18, 133}, {234, 22}} + {{18, 142}, {270, 22}} - YES -1804468671 272630784 - 1.0 + 1.0.0 YES @@ -1506,9 +1495,8 @@ 268 - {{15, 108}, {240, 17}} + {{15, 337}, {240, 17}} - YES 68288064 @@ -1523,9 +1511,8 @@ 268 - {{15, 163}, {240, 17}} + {{15, 172}, {240, 17}} - YES 68288064 @@ -1537,12 +1524,49 @@ + + + 268 + {{19, 87}, {269, 22}} + + YES + + -1804468671 + 272630784 + + + LucidaGrande-Bold + 13 + 16 + + 1 + + YES + + + + + + + 268 + {{16, 117}, {240, 17}} + + YES + + 68288064 + 272630784 + Bundle Build + + + + + + 268 - {{18, 188}, {234, 22}} + {{18, 197}, {270, 22}} - YES -1804468671 @@ -1559,9 +1583,8 @@ 268 - {{18, 78}, {234, 22}} + {{18, 307}, {270, 22}} - YES -1804468671 @@ -1575,12 +1598,45 @@ + + + 268 + {{16, 282}, {240, 17}} + + YES + + 68288064 + 272630784 + Bundle Copyright + + + + + + + + + 268 + {{19, 252}, {269, 22}} + + YES + + -1804468671 + 272630784 + + + (c) + + YES + + + + 268 - {{15, 218}, {240, 17}} + {{15, 227}, {240, 17}} - YES 68288064 @@ -1595,9 +1651,8 @@ 12 - {{18, 241}, {233, 5}} + {{18, 360}, {270, 5}} - {0, 0} 67239424 @@ -1618,9 +1673,8 @@ 12 - {{18, 67}, {233, 5}} + {{18, 67}, {270, 5}} - {0, 0} 67239424 @@ -1641,9 +1695,8 @@ 268 - {{185, 38}, {25, 25}} + {{185, 40}, {25, 25}} - YES 67239424 @@ -1662,9 +1715,8 @@ 268 - {{117, 314}, {25, 25}} + {{117, 433}, {25, 25}} - YES 67239424 @@ -1681,14 +1733,12 @@ - {{1, 1}, {270, 346}} + {{1, 1}, {306, 465}} - - {{17, 56}, {272, 362}} + {{17, 64}, {308, 481}} - {0, 0} 67239424 @@ -1714,9 +1764,8 @@ 268 - {{48, 12}, {210, 32}} + {{66, 16}, {210, 32}} - YES 604110336 @@ -1733,9 +1782,8 @@ - {306, 490} + {342, 617} - {{0, 0}, {1920, 1178}} {1.79769e+308, 1.79769e+308} @@ -2700,13 +2748,31 @@ 606 + + + bundleBuildField + + + + 615 + + + + bundleCopyrightField + + + + 616 + YES 0 - + + YES + @@ -3255,9 +3321,9 @@ YES - + @@ -3781,6 +3847,10 @@ + + + + @@ -4141,6 +4211,62 @@ + + 607 + + + YES + + + + + + 608 + + + YES + + + + + + 609 + + + + + 610 + + + + + 611 + + + YES + + + + + + 612 + + + YES + + + + + + 613 + + + + + 614 + + + @@ -4370,11 +4496,15 @@ 537.IBPluginDependency 538.IBPluginDependency 539.IBPluginDependency + 539.IBViewBoundsToFrameTransform 540.IBPluginDependency + 540.IBViewBoundsToFrameTransform 541.IBPluginDependency 542.IBPluginDependency 543.IBPluginDependency + 543.IBViewBoundsToFrameTransform 544.IBPluginDependency + 544.IBViewBoundsToFrameTransform 545.IBPluginDependency 546.IBPluginDependency 547.IBPluginDependency @@ -4382,6 +4512,7 @@ 549.IBPluginDependency 550.IBPluginDependency 551.IBPluginDependency + 551.IBViewBoundsToFrameTransform 552.IBPluginDependency 553.IBPluginDependency 554.IBPluginDependency @@ -4429,6 +4560,15 @@ 601.IBPluginDependency 602.IBPluginDependency 603.IBPluginDependency + 607.IBPluginDependency + 608.IBPluginDependency + 609.IBPluginDependency + 610.IBPluginDependency + 611.IBPluginDependency + 612.IBPluginDependency + 612.IBViewBoundsToFrameTransform + 613.IBPluginDependency + 614.IBPluginDependency 72.IBPluginDependency 72.ImportedFromIB2 73.IBPluginDependency @@ -4587,9 +4727,9 @@ com.apple.InterfaceBuilder.CocoaPlugin - {{293, 591}, {306, 490}} + {{728, 480}, {342, 617}} com.apple.InterfaceBuilder.CocoaPlugin - {{293, 591}, {306, 490}} + {{728, 480}, {342, 617}} {{33, 99}, {480, 360}} {3.40282e+38, 3.40282e+38} @@ -4681,11 +4821,23 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBkAAAwycAAA + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBcAAAw0AAAA + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBkAAAw6OAAA + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBcAAAw7AAAA + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -4693,6 +4845,9 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + + AUGIAABCVAAAA + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -4741,6 +4896,17 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBmAAAw4gAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -4784,7 +4950,7 @@ - 606 + 616 @@ -4915,6 +5081,8 @@ YES archiveIPAFilenameField + bundleBuildField + bundleCopyrightField bundleIdentifierField bundleNameField bundleVersionField @@ -4927,6 +5095,8 @@ NSTextField NSTextField NSTextField + NSTextField + NSTextField NSButton NSTextField @@ -4936,6 +5106,8 @@ YES archiveIPAFilenameField + bundleBuildField + bundleCopyrightField bundleIdentifierField bundleNameField bundleVersionField @@ -4949,6 +5121,14 @@ NSTextField + bundleBuildField + NSTextField + + + bundleCopyrightField + NSTextField + + bundleIdentifierField NSTextField Index: BetaBuilder.xcodeproj/project.pbxproj =================================================================== --- BetaBuilder.xcodeproj/project.pbxproj (revision 465) +++ BetaBuilder.xcodeproj/project.pbxproj (working copy) @@ -205,7 +205,14 @@ isa = PBXProject; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "BetaBuilder" */; compatibilityVersion = "Xcode 3.1"; + developmentRegion = English; hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); mainGroup = 29B97314FDCFA39411CA2CEA /* BetaBuilder */; projectDirPath = ""; projectRoot = "";