Changeset 229
- Timestamp:
- 05/19/06 08:12:38 (19 years ago)
- Location:
- trunk/Cocoa/F-Script Anywhere/Source
- Files:
-
- 3 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Cocoa/F-Script Anywhere/Source/F-Script Anywhere.xcodeproj/project.pbxproj
r224 r229 8 8 9 9 /* Begin PBXBuildFile section */ 10 256669AE0A1D8DE30006AC79 /* DSCL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 256669AD0A1D8DE30006AC79 /* DSCL.framework */; }; 11 25666AD30A1D96DE0006AC79 /* DSCL.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 256669AD0A1D8DE30006AC79 /* DSCL.framework */; }; 12 25666ADA0A1D97B50006AC79 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 25666AD90A1D97B50006AC79 /* CoreFoundation.framework */; }; 13 25666BE70A1DAA1D0006AC79 /* AddToProcMod in Resources */ = {isa = PBXBuildFile; fileRef = 25666BE10A1DAA050006AC79 /* AddToProcMod */; }; 14 25666BEC0A1DAA410006AC79 /* procmod.m in Sources */ = {isa = PBXBuildFile; fileRef = 25666BEB0A1DAA410006AC79 /* procmod.m */; }; 15 25666C100A1DACEB0006AC79 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 25666C0F0A1DACEB0006AC79 /* Foundation.framework */; }; 16 25666C4E0A1DAE4D0006AC79 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 25666C4D0A1DAE4D0006AC79 /* Security.framework */; }; 17 25666CA60A1DB1BD0006AC79 /* DSCL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 256669AD0A1D8DE30006AC79 /* DSCL.framework */; }; 10 18 25EADA9609CD2D7100BCD8E1 /* bytesex.c in Sources */ = {isa = PBXBuildFile; fileRef = 25EADA9509CD2D7100BCD8E1 /* bytesex.c */; }; 11 19 E14C18BD05A4DE25000D4AF3 /* FSAInterpreterPanel.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5680F7A020D0D0401AEEC37 /* FSAInterpreterPanel.nib */; }; … … 113 121 114 122 /* Begin PBXContainerItemProxy section */ 123 25666BE50A1DAA120006AC79 /* PBXContainerItemProxy */ = { 124 isa = PBXContainerItemProxy; 125 containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; 126 proxyType = 1; 127 remoteGlobalIDString = 25666BE00A1DAA050006AC79 /* AddToProcMod */; 128 remoteInfo = AddToProcMod; 129 }; 115 130 E1D652BB057666690054F5D1 /* PBXContainerItemProxy */ = { 116 131 isa = PBXContainerItemProxy; … … 130 145 131 146 /* Begin PBXCopyFilesBuildPhase section */ 147 25666ACD0A1D96D10006AC79 /* CopyFiles */ = { 148 isa = PBXCopyFilesBuildPhase; 149 buildActionMask = 2147483647; 150 dstPath = ""; 151 dstSubfolderSpec = 10; 152 files = ( 153 25666AD30A1D96DE0006AC79 /* DSCL.framework in CopyFiles */, 154 ); 155 runOnlyForDeploymentPostprocessing = 0; 156 }; 132 157 E1EE9A2B0575769600F2D92C /* CopyFiles */ = { 133 158 isa = PBXCopyFilesBuildPhase; … … 148 173 103DFC20016C16E20C000109 /* FSABundle.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = FSABundle.mm; sourceTree = SOURCE_ROOT; }; 149 174 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; }; 175 256669AD0A1D8DE30006AC79 /* DSCL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = DSCL.framework; sourceTree = "<group>"; }; 176 25666AD90A1D97B50006AC79 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; }; 177 25666BE10A1DAA050006AC79 /* AddToProcMod */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = AddToProcMod; sourceTree = BUILT_PRODUCTS_DIR; }; 178 25666BEB0A1DAA410006AC79 /* procmod.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = procmod.m; sourceTree = "<group>"; }; 179 25666C0F0A1DACEB0006AC79 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; }; 180 25666C4D0A1DAE4D0006AC79 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = "<absolute>"; }; 150 181 25EADA9509CD2D7100BCD8E1 /* bytesex.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = bytesex.c; path = "../Darwin source/Commands/Apple/cctools/libstuff/bytesex.c"; sourceTree = SOURCE_ROOT; }; 151 182 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; … … 173 204 E1EE98BD0575626E00F2D92C /* mach_inject.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = mach_inject.h; sourceTree = "<group>"; tabWidth = 4; usesTabs = 1; }; 174 205 E1EE9A2F0575769600F2D92C /* Info-Application.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "Info-Application.plist"; sourceTree = "<group>"; }; 175 E1EE9A300575769600F2D92C /* F-Script Anywhere.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "F-Script Anywhere.app"; sourceTree = BUILT_PRODUCTS_DIR; };206 E1EE9A300575769600F2D92C /* F-Script Anywhere.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "F-Script Anywhere.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 176 207 E1EE9A4F057576A700F2D92C /* F-Script Anywhere.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "F-Script Anywhere.bundle"; sourceTree = BUILT_PRODUCTS_DIR; }; 177 208 E1F3DF910579172A00E952A5 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/FSA.strings; sourceTree = "<group>"; }; … … 216 247 217 248 /* Begin PBXFrameworksBuildPhase section */ 249 25666BDF0A1DAA050006AC79 /* Frameworks */ = { 250 isa = PBXFrameworksBuildPhase; 251 buildActionMask = 2147483647; 252 files = ( 253 25666CA60A1DB1BD0006AC79 /* DSCL.framework in Frameworks */, 254 25666C100A1DACEB0006AC79 /* Foundation.framework in Frameworks */, 255 ); 256 runOnlyForDeploymentPostprocessing = 0; 257 }; 218 258 E1D652010575B3D50054F5D1 /* Frameworks */ = { 219 259 isa = PBXFrameworksBuildPhase; … … 230 270 E1EE9A270575769600F2D92C /* Cocoa.framework in Frameworks */, 231 271 E1EE9A280575769600F2D92C /* Carbon.framework in Frameworks */, 272 256669AE0A1D8DE30006AC79 /* DSCL.framework in Frameworks */, 273 25666ADA0A1D97B50006AC79 /* CoreFoundation.framework in Frameworks */, 274 25666C4E0A1DAE4D0006AC79 /* Security.framework in Frameworks */, 232 275 ); 233 276 runOnlyForDeploymentPostprocessing = 0; … … 252 295 E1EE9A4F057576A700F2D92C /* F-Script Anywhere.bundle */, 253 296 E1D652040575B3D50054F5D1 /* SCPatchLoader.bundle */, 297 25666BE10A1DAA050006AC79 /* AddToProcMod */, 254 298 ); 255 299 name = Products; 256 300 sourceTree = "<group>"; 257 301 }; 302 256666B80A1D86D80006AC79 /* procmod */ = { 303 isa = PBXGroup; 304 children = ( 305 25666BEB0A1DAA410006AC79 /* procmod.m */, 306 ); 307 name = procmod; 308 sourceTree = "<group>"; 309 }; 258 310 29B97314FDCFA39411CA2CEA /* PatchTest */ = { 259 311 isa = PBXGroup; 260 312 children = ( 313 25666C0F0A1DACEB0006AC79 /* Foundation.framework */, 261 314 F523EA31020CF1C701AEEC37 /* Shared sources */, 262 315 29B97315FDCFA39411CA2CEA /* Bundle sources */, … … 314 367 isa = PBXGroup; 315 368 children = ( 369 25666C4D0A1DAE4D0006AC79 /* Security.framework */, 370 25666AD90A1D97B50006AC79 /* CoreFoundation.framework */, 371 256669AD0A1D8DE30006AC79 /* DSCL.framework */, 316 372 F59279FB01FED0C901AEEC37 /* Carbon.framework */, 317 373 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, … … 416 472 F574ADD6020AC10F01AEEDB1 /* NJRScrollView.h */, 417 473 F574ADD5020AC10F01AEEDB1 /* NJRScrollView.m */, 474 256666B80A1D86D80006AC79 /* procmod */, 418 475 F5EFC2E7020A8F7F01AEEDB1 /* libMatch.h */, 419 476 F5EFC2E8020A8F7F01AEEDB1 /* libMatch.c */, … … 478 535 479 536 /* Begin PBXNativeTarget section */ 537 25666BE00A1DAA050006AC79 /* AddToProcMod */ = { 538 isa = PBXNativeTarget; 539 buildConfigurationList = 25666BED0A1DAA410006AC79 /* Build configuration list for PBXNativeTarget "AddToProcMod" */; 540 buildPhases = ( 541 25666BDE0A1DAA050006AC79 /* Sources */, 542 25666BDF0A1DAA050006AC79 /* Frameworks */, 543 ); 544 buildRules = ( 545 ); 546 buildSettings = { 547 GCC_ENABLE_FIX_AND_CONTINUE = YES; 548 GCC_MODEL_TUNING = G5; 549 INSTALL_PATH = "$(HOME)/bin"; 550 PREBINDING = NO; 551 PRODUCT_NAME = AddToProcMod; 552 ZERO_LINK = YES; 553 }; 554 dependencies = ( 555 ); 556 name = AddToProcMod; 557 productName = AddToProcMod; 558 productReference = 25666BE10A1DAA050006AC79 /* AddToProcMod */; 559 productType = "com.apple.product-type.tool"; 560 }; 480 561 E1D651FA0575B3D50054F5D1 /* Bundle Loader */ = { 481 562 isa = PBXNativeTarget; … … 539 620 buildPhases = ( 540 621 E1EE9A030575769600F2D92C /* Headers */, 622 25666ACD0A1D96D10006AC79 /* CopyFiles */, 541 623 E1EE9A0F0575769600F2D92C /* Resources */, 542 624 E1EE9A180575769600F2D92C /* Sources */, … … 573 655 E1EE9AA60575939700F2D92C /* PBXTargetDependency */, 574 656 E1D652BC057666690054F5D1 /* PBXTargetDependency */, 657 25666BE60A1DAA120006AC79 /* PBXTargetDependency */, 575 658 ); 576 659 name = Application; … … 656 739 E1EE9A4E057576A700F2D92C /* Bundle */, 657 740 E1D651FA0575B3D50054F5D1 /* Bundle Loader */, 741 25666BE00A1DAA050006AC79 /* AddToProcMod */, 658 742 ); 659 743 }; … … 672 756 buildActionMask = 2147483647; 673 757 files = ( 758 25666BE70A1DAA1D0006AC79 /* AddToProcMod in Resources */, 674 759 E1D652AA0575B5F10054F5D1 /* SCPatchLoader.bundle in Resources */, 675 760 E1EE9AA90575945300F2D92C /* F-Script Anywhere.bundle in Resources */, … … 710 795 711 796 /* Begin PBXSourcesBuildPhase section */ 797 25666BDE0A1DAA050006AC79 /* Sources */ = { 798 isa = PBXSourcesBuildPhase; 799 buildActionMask = 2147483647; 800 files = ( 801 25666BEC0A1DAA410006AC79 /* procmod.m in Sources */, 802 ); 803 runOnlyForDeploymentPostprocessing = 0; 804 }; 712 805 E1D651FE0575B3D50054F5D1 /* Sources */ = { 713 806 isa = PBXSourcesBuildPhase; … … 761 854 762 855 /* Begin PBXTargetDependency section */ 856 25666BE60A1DAA120006AC79 /* PBXTargetDependency */ = { 857 isa = PBXTargetDependency; 858 target = 25666BE00A1DAA050006AC79 /* AddToProcMod */; 859 targetProxy = 25666BE50A1DAA120006AC79 /* PBXContainerItemProxy */; 860 }; 763 861 E1D652BC057666690054F5D1 /* PBXTargetDependency */ = { 764 862 isa = PBXTargetDependency; … … 833 931 834 932 /* Begin XCBuildConfiguration section */ 933 25666BEE0A1DAA410006AC79 /* Development */ = { 934 isa = XCBuildConfiguration; 935 buildSettings = { 936 COPY_PHASE_STRIP = NO; 937 FRAMEWORK_SEARCH_PATHS = ( 938 "$(FRAMEWORK_SEARCH_PATHS)", 939 "$(SRCROOT)", 940 ); 941 GCC_DYNAMIC_NO_PIC = NO; 942 GCC_ENABLE_FIX_AND_CONTINUE = YES; 943 GCC_GENERATE_DEBUGGING_SYMBOLS = YES; 944 GCC_MODEL_TUNING = G5; 945 GCC_OPTIMIZATION_LEVEL = 0; 946 INSTALL_PATH = "$(HOME)/bin"; 947 PREBINDING = NO; 948 PRODUCT_NAME = AddToProcMod; 949 ZERO_LINK = YES; 950 }; 951 name = Development; 952 }; 953 25666BEF0A1DAA410006AC79 /* Deployment */ = { 954 isa = XCBuildConfiguration; 955 buildSettings = { 956 COPY_PHASE_STRIP = YES; 957 FRAMEWORK_SEARCH_PATHS = ( 958 "$(FRAMEWORK_SEARCH_PATHS)", 959 "$(SRCROOT)", 960 ); 961 GCC_ENABLE_FIX_AND_CONTINUE = NO; 962 GCC_GENERATE_DEBUGGING_SYMBOLS = NO; 963 GCC_MODEL_TUNING = G5; 964 PREBINDING = NO; 965 PRODUCT_NAME = AddToProcMod; 966 ZERO_LINK = NO; 967 }; 968 name = Deployment; 969 }; 970 25666BF00A1DAA410006AC79 /* Default */ = { 971 isa = XCBuildConfiguration; 972 buildSettings = { 973 FRAMEWORK_SEARCH_PATHS = ( 974 "$(FRAMEWORK_SEARCH_PATHS)", 975 "$(SRCROOT)", 976 ); 977 GCC_ENABLE_FIX_AND_CONTINUE = YES; 978 GCC_MODEL_TUNING = G5; 979 INSTALL_PATH = "$(HOME)/bin"; 980 PREBINDING = NO; 981 PRODUCT_NAME = AddToProcMod; 982 ZERO_LINK = YES; 983 }; 984 name = Default; 985 }; 835 986 25EAD8EC09CD1E3900BCD8E1 /* Development */ = { 836 987 isa = XCBuildConfiguration; … … 952 1103 buildSettings = { 953 1104 COPY_PHASE_STRIP = NO; 954 FRAMEWORK_SEARCH_PATHS = "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks"; 1105 FRAMEWORK_SEARCH_PATHS = ( 1106 "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks", 1107 "$(SRCROOT)", 1108 ); 955 1109 GCC_DYNAMIC_NO_PIC = NO; 956 1110 GCC_ENABLE_FIX_AND_CONTINUE = YES; … … 989 1143 ); 990 1144 COPY_PHASE_STRIP = YES; 991 FRAMEWORK_SEARCH_PATHS = "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks"; 1145 FRAMEWORK_SEARCH_PATHS = ( 1146 "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks", 1147 "$(SRCROOT)", 1148 ); 992 1149 GCC_ENABLE_FIX_AND_CONTINUE = NO; 993 1150 HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../Darwin source/Commands/Apple/cctools/include\""; … … 1017 1174 isa = XCBuildConfiguration; 1018 1175 buildSettings = { 1019 FRAMEWORK_SEARCH_PATHS = "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks"; 1176 FRAMEWORK_SEARCH_PATHS = ( 1177 "$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks", 1178 "$(SRCROOT)", 1179 ); 1020 1180 HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../Darwin source/Commands/Apple/cctools/include\""; 1021 1181 INFOPLIST_FILE = "Info-Application.plist"; … … 1062 1222 1063 1223 /* Begin XCConfigurationList section */ 1224 25666BED0A1DAA410006AC79 /* Build configuration list for PBXNativeTarget "AddToProcMod" */ = { 1225 isa = XCConfigurationList; 1226 buildConfigurations = ( 1227 25666BEE0A1DAA410006AC79 /* Development */, 1228 25666BEF0A1DAA410006AC79 /* Deployment */, 1229 25666BF00A1DAA410006AC79 /* Default */, 1230 ); 1231 defaultConfigurationIsVisible = 0; 1232 defaultConfigurationName = Default; 1233 }; 1064 1234 25EAD8EB09CD1E3900BCD8E1 /* Build configuration list for PBXNativeTarget "Bundle" */ = { 1065 1235 isa = XCConfigurationList; -
trunk/Cocoa/F-Script Anywhere/Source/FSAApp.mm
r222 r229 27 27 #import "FSAApp.h" 28 28 #import "FSAnywhere.h" 29 #import <DSCL/PathManager.h> 30 #import <CoreFoundation/CoreFoundation.h> 31 #import <ApplicationServices/ApplicationServices.h> 32 #import <Security/Authorization.h> 33 #import <Security/AuthorizationTags.h> 29 34 30 35 NSString * const PatchBundleIdentifier = @"net.sabi.FScriptAnywhere"; … … 130 135 } 131 136 137 -(tDirStatus)authorizeAndAddToProcMod:(NSString *)username 138 { 139 OSStatus myStatus; 140 AuthorizationFlags myFlags = kAuthorizationFlagDefaults; 141 AuthorizationRef myAuthorizationRef; 142 143 myStatus = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, 144 myFlags, &myAuthorizationRef); 145 if(myStatus != errAuthorizationSuccess) 146 return eDSAuthFailed; 147 148 AuthorizationItem myItems = {kAuthorizationRightExecute, 0, NULL, 0}; 149 AuthorizationRights myRights = {1, &myItems}; 150 151 myFlags = kAuthorizationFlagDefaults 152 | kAuthorizationFlagInteractionAllowed 153 | kAuthorizationFlagPreAuthorize 154 | kAuthorizationFlagExtendRights; 155 myStatus = AuthorizationCopyRights(myAuthorizationRef, &myRights, 156 NULL, myFlags, NULL); 157 158 if(myStatus != errAuthorizationSuccess) 159 return eDSAuthFailed; 160 161 myFlags = kAuthorizationFlagDefaults; 162 163 NSString *myToolPath = [[NSBundle mainBundle] pathForResource:@"AddToProcMod" ofType:@""]; 164 char *myArguments[] = { (char *)[username UTF8String], NULL }; 165 FILE *myCommunicationsPipe = NULL; 166 char myReadBuffer[128]; 167 myStatus = AuthorizationExecuteWithPrivileges(myAuthorizationRef, [myToolPath UTF8String], 168 myFlags, myArguments, 169 &myCommunicationsPipe); 170 171 int didRead = 0; 172 int lastRead; 173 while((lastRead = read(fileno(myCommunicationsPipe), myReadBuffer, sizeof(myReadBuffer) - didRead - 1)) && (lastRead > 0)) 174 didRead += lastRead; 175 176 myReadBuffer[didRead - 1] = 0; 177 178 AuthorizationFree(myAuthorizationRef, kAuthorizationFlagDefaults); 179 180 return (tDirStatus)strtol(myReadBuffer, NULL, 10); 181 } 182 132 183 - (void)finishLaunching 133 184 { 185 #ifdef __i386__ 186 if(![[NSUserDefaults standardUserDefaults] objectForKey:@"doPathCheck"]) 187 [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"doPathCheck"]; 188 189 if([[NSUserDefaults standardUserDefaults] boolForKey:@"doPathCheck"]){ 190 top: 191 PathManager *pm = [[PathManager alloc] initWithLocalNode]; 192 [pm backupStack]; 193 [pm cd:@"/Groups/procmod"]; 194 CFDictionaryRef sessionInfoDict = CGSessionCopyCurrentDictionary(); 195 if(sessionInfoDict){ 196 CFStringRef shortUserName = (CFStringRef)CFDictionaryGetValue(sessionInfoDict, kCGSessionUserNameKey); 197 if(![[[pm lastObject] readArray:@"GroupMembership"] containsObject:(NSString *)shortUserName]){ 198 switch([[NSAlert alertWithMessageText:[NSString stringWithFormat:@"User %@ not in the procmod group", shortUserName] 199 defaultButton:@"Add me" 200 alternateButton:@"Disable checking" 201 otherButton:@"Ignore message" 202 informativeTextWithFormat:@"F-Script Anywhere requires that you add yourself to the procmod " 203 "group in order for it to function properly. If you like, F-Script Anywhere can automatically add you " 204 "to the procmod group."] runModal]){ 205 case NSAlertDefaultReturn: 206 { 207 tDirStatus status = [self authorizeAndAddToProcMod:(NSString *)shortUserName]; 208 if(status != eDSNoErr){ 209 [[NSAlert alertWithMessageText:@"Error adding to procmod group" 210 defaultButton:nil 211 alternateButton:nil 212 otherButton:nil 213 informativeTextWithFormat:@"There was an error (%@) adding you to the procmod group. ", [[NSClassFromString(@"DSoStatus") sharedInstance] stringForStatus:status]] runModal]; 214 } 215 } 216 [pm restoreStack]; 217 [pm release]; 218 goto top; 219 case NSAlertAlternateReturn: 220 [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"doPathCheck"]; 221 break; 222 default: 223 break; 224 } 225 } 226 } 227 [pm restoreStack]; 228 [pm release]; 229 } 230 #endif 134 231 patchController = new FSAPatchController(self); 135 232 patchController->AddPatch((CFStringRef)PatchBundleIdentifier, CFSTR("Contents/Resources/"), -
trunk/Cocoa/F-Script Anywhere/Source/Read Me
r227 r229 82 82 jam/pbxbuild). I _think_ this is all you need. 83 83 84 3. Open 'F-Script Anywhere.pbproj' in Xcode and build the Application 84 3. Unzip DSTools-60.1.zip. Open the folder up and open 85 DSTools.xcodeproj. Change the active target to the DSCL framework, 86 change the build configuration to Deployment, and then build the 87 framework. Copy the resulting framework into the FSA Source/ 88 directory. Alternatively if you're on PPC, you can just remove the 89 DSCL framework from the dependancies. The DSCL framework is used 90 to determine if you are in the procmod group on intel machines 91 (and if not, to prompt you if you want to add yourself) -- something 92 that is necessary for use of FSA on x86. 93 94 3. Open 'F-Script Anywhere.xcodeproj' in Xcode and build the Application 85 95 target. This target depends on the Bundle and Bundle Loader 86 96 targets, so you don't need to build them separately. You
Note:
See TracChangeset
for help on using the changeset viewer.