Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge remote-tracking branch 'samdeane/sandboxing'

Merge in the most recent changes from Sam's branch

Conflicts:
	SUPipedUnarchiver.m
	SUUIBasedUpdateDriver.m
  • Loading branch information...
commit 91e54fdbdda060df67beb935e855a1839d842cf3 2 parents cd60df7 + ea50a33
Ryan Nielsen ryannielsen authored
Showing with 5,129 additions and 3,380 deletions.
  1. +4 −0 .gitignore
  2. +0 −1  Configurations/ConfigUnitTest.xcconfig
  3. +1 −1  SUAppcastItem.m
  4. +26 −15 SUBasicUpdateDriver.m
  5. +19 −0 SUCodeSigningVerifier.h
  6. +86 −0 SUCodeSigningVerifier.m
  7. +0 −1  SUDSAVerifier.h
  8. +1 −0  SUInstaller.h
  9. +23 −8 SUInstaller.m
  10. +2 −1  SUPipedUnarchiver.m
  11. +18 −8 SUPlainInstallerInternals.m
  12. +5 −5 SUStandardVersionComparator.m
  13. +1 −2  SUUIBasedUpdateDriver.m
  14. +1 −0  SUUpdatePermissionPrompt.h
  15. +6 −1 SUUpdatePermissionPrompt.m
  16. +2 −2 SUUpdater.h
  17. +14 −7 SUUpdater.m
  18. +11 −0 Sparkle.xcodeproj/project.pbxproj
  19. +5 −0 Tests/SUVersionComparisonTest.m
  20. +11 −7 ar.lproj/SUUpdatePermissionPrompt.xib
  21. +248 −161 cs.lproj/SUUpdatePermissionPrompt.xib
  22. +247 −157 da.lproj/SUUpdatePermissionPrompt.xib
  23. +248 −163 de.lproj/SUUpdatePermissionPrompt.xib
  24. BIN  en.lproj/SUAutomaticUpdateAlert.strings
  25. BIN  en.lproj/SUUpdatePermissionPrompt.strings
  26. +308 −201 en.lproj/SUUpdatePermissionPrompt.xib
  27. BIN  en.lproj/Sparkle.strings
  28. +248 −163 es.lproj/SUUpdatePermissionPrompt.xib
  29. +256 −164 fr.lproj/SUUpdatePermissionPrompt.xib
  30. +248 −161 is.lproj/SUUpdatePermissionPrompt.xib
  31. BIN  is.lproj/Sparkle.strings
  32. +248 −163 it.lproj/SUUpdatePermissionPrompt.xib
  33. +160 −38 ja.lproj/SUUpdatePermissionPrompt.xib
  34. +248 −163 ko.lproj/SUUpdatePermissionPrompt.xib
  35. +247 −157 nl.lproj/SUUpdatePermissionPrompt.xib
  36. +248 −161 pl.lproj/SUUpdatePermissionPrompt.xib
  37. +54 −60 pt_BR.lproj/SUUpdateAlert.xib
  38. +67 −37 pt_BR.lproj/SUUpdatePermissionPrompt.xib
  39. +152 −123 pt_PT.lproj/SUUpdatePermissionPrompt.xib
  40. +152 −123 ro.lproj/SUUpdatePermissionPrompt.xib
  41. BIN  ro.lproj/Sparkle.strings
  42. +248 −163 ru.lproj/SUUpdatePermissionPrompt.xib
  43. +248 −159 sk.lproj/SUUpdatePermissionPrompt.xib
  44. +127 −37 sl.lproj/SUUpdatePermissionPrompt.xib
  45. +4 −4 sl.lproj/Sparkle.strings
  46. +152 −166 sv.lproj/SUUpdatePermissionPrompt.xib
  47. +74 −44 th.lproj/SUUpdatePermissionPrompt.xib
  48. BIN  th.lproj/Sparkle.strings
  49. +194 −184 tr.lproj/SUUpdatePermissionPrompt.xib
  50. BIN  tr.lproj/Sparkle.strings
  51. +67 −44 uk.lproj/SUUpdatePermissionPrompt.xib
  52. +248 −163 zh_CN.lproj/SUUpdatePermissionPrompt.xib
  53. +152 −162 zh_TW.lproj/SUUpdatePermissionPrompt.xib
4 .gitignore
View
@@ -1,3 +1,4 @@
+# Xcode
build/*
*.pbxuser
!default.pbxuser
@@ -11,5 +12,8 @@ build/*
!default.xcworkspace
xcuserdata
profile
+*.moved-aside
+
+## Ignore incredibly annoying .DS_Store files
.DS_Store
External/*/build/*
1  Configurations/ConfigUnitTest.xcconfig
View
@@ -7,5 +7,4 @@ WRAPPER_EXTENSION = octest
FRAMEWORK_SEARCH_PATHS = $(DEVELOPER_LIBRARY_DIR)/Frameworks
GCC_PREFIX_HEADER = $(SYSTEM_LIBRARY_DIR)/Frameworks/Cocoa.framework/Headers/Cocoa.h
GCC_PRECOMPILE_PREFIX_HEADER = YES
-SDKROOT = macosx10.6
MACOSX_DEPLOYMENT_TARGET = 10.6
2  SUAppcastItem.m
View
@@ -232,7 +232,7 @@ - (BOOL)isDeltaUpdate
// Find the appropriate release notes URL.
if ([dict objectForKey:@"sparkle:releaseNotesLink"])
[self setReleaseNotesURL:[NSURL URLWithString:[dict objectForKey:@"sparkle:releaseNotesLink"]]];
- else if ([[self itemDescription] hasPrefix:@"http://"]) // if the description starts with http://, use that.
+ else if ([[self itemDescription] hasPrefix:@"http://"] || [[self itemDescription] hasPrefix:@"https://"]) // if the description starts with http:// or https:// use that.
[self setReleaseNotesURL:[NSURL URLWithString:[self itemDescription]]];
else
[self setReleaseNotesURL:nil];
41 SUBasicUpdateDriver.m
View
@@ -18,6 +18,7 @@
#import "SUPlainInstaller.h"
#import "SUPlainInstallerInternals.h"
#import "SUBinaryDeltaCommon.h"
+#import "SUCodeSigningVerifier.h"
#import "SUUpdater_Private.h"
#import "SUXPC.h"
@@ -204,22 +205,24 @@ - (void)download:(NSURLDownload *)d decideDestinationWithSuggestedFilename:(NSSt
[download setDestination:downloadPath allowOverwrite:YES];
}
-- (void)downloadDidFinish:(NSURLDownload *)d
+- (BOOL)validateUpdateDownloadedToPath:(NSString *)downloadedPath extractedToPath:(NSString *)extractedPath DSASignature:(NSString *)DSASignature publicDSAKey:(NSString *)publicDSAKey
{
- #if !ENDANGER_USERS_WITH_INSECURE_UPDATES
- // New in Sparkle 1.5: we're now checking signatures on all non-secure downloads, where "secure" is defined as both the appcast and the download being transmitted over SSL.
- NSURL *downloadURL = [[d request] URL];
- if (!(([[downloadURL scheme] isEqualToString:@"https"] && [[appcastURL scheme] isEqualToString:@"https"]) ||
- ([downloadURL isFileURL] && [appcastURL isFileURL])))
- {
- if (![host publicDSAKey] || ![SUDSAVerifier validatePath:downloadPath withEncodedDSASignature:[updateItem DSASignature] withPublicDSAKey:[host publicDSAKey]])
- {
- [self abortUpdateWithError:[NSError errorWithDomain:SUSparkleErrorDomain code:SUSignatureError userInfo:[NSDictionary dictionaryWithObjectsAndKeys:SULocalizedString(@"An error occurred while extracting the archive. Please try again later.", nil), NSLocalizedDescriptionKey, @"The update is improperly signed.", NSLocalizedFailureReasonErrorKey, nil]]];
- return;
- }
- }
- #endif
-
+ NSString *newBundlePath = [SUInstaller appPathInUpdateFolder:extractedPath forHost:host];
+ if (newBundlePath)
+ {
+ NSError *error = nil;
+ if ([SUCodeSigningVerifier codeSignatureIsValidAtPath:newBundlePath error:&error]) {
+ return YES;
+ } else {
+ SULog(@"Code signature check on update failed: %@", error);
+ }
+ }
+
+ return [SUDSAVerifier validatePath:downloadedPath withEncodedDSASignature:DSASignature withPublicDSAKey:publicDSAKey];
+}
+
+- (void)downloadDidFinish:(NSURLDownload *)d
+{
[self extractUpdate];
}
@@ -281,6 +284,14 @@ - (BOOL)shouldInstallSynchronously { return NO; }
- (void)installWithToolAndRelaunch:(BOOL)relaunch
{
+#if !ENDANGER_USERS_WITH_INSECURE_UPDATES
+ if (![self validateUpdateDownloadedToPath:downloadPath extractedToPath:tempDir DSASignature:[updateItem DSASignature] publicDSAKey:[host publicDSAKey]])
+ {
+ [self abortUpdateWithError:[NSError errorWithDomain:SUSparkleErrorDomain code:SUSignatureError userInfo:[NSDictionary dictionaryWithObjectsAndKeys:SULocalizedString(@"An error occurred while extracting the archive. Please try again later.", nil), NSLocalizedDescriptionKey, @"The update is improperly signed.", NSLocalizedFailureReasonErrorKey, nil]]];
+ return;
+ }
+#endif
+
if (![updater mayUpdateAndRestart])
{
[self abortUpdate];
19 SUCodeSigningVerifier.h
View
@@ -0,0 +1,19 @@
+//
+// SUCodeSigningVerifier.h
+// Sparkle
+//
+// Created by Andy Matuschak on 7/5/12.
+//
+//
+
+#ifndef SUCODESIGNINGVERIFIER_H
+#define SUCODESIGNINGVERIFIER_H
+
+#import <Foundation/Foundation.h>
+
+@interface SUCodeSigningVerifier : NSObject
++ (BOOL)codeSignatureIsValidAtPath:(NSString *)destinationPath error:(NSError **)error;
++ (BOOL)hostApplicationIsCodeSigned;
+@end
+
+#endif
86 SUCodeSigningVerifier.m
View
@@ -0,0 +1,86 @@
+//
+// SUCodeSigningVerifier.m
+// Sparkle
+//
+// Created by Andy Matuschak on 7/5/12.
+//
+//
+
+#import <Security/CodeSigning.h>
+#import "SUCodeSigningVerifier.h"
+#import "SULog.h"
+
+@implementation SUCodeSigningVerifier
+
+extern OSStatus SecCodeCopySelf(SecCSFlags flags, SecCodeRef *self) __attribute__((weak_import));
+
+extern OSStatus SecCodeCopyDesignatedRequirement(SecStaticCodeRef code, SecCSFlags flags, SecRequirementRef *requirement) __attribute__((weak_import));
+
+extern OSStatus SecStaticCodeCreateWithPath(CFURLRef path, SecCSFlags flags, SecStaticCodeRef *staticCode) __attribute__((weak_import));
+
+extern OSStatus SecStaticCodeCheckValidityWithErrors(SecStaticCodeRef staticCode, SecCSFlags flags, SecRequirementRef requirement, CFErrorRef *errors) __attribute__((weak_import));
+
+
++ (BOOL)codeSignatureIsValidAtPath:(NSString *)destinationPath error:(NSError **)error
+{
+ // This API didn't exist prior to 10.6.
+ if (SecCodeCopySelf == NULL) return NO;
+
+ OSStatus result;
+ SecRequirementRef requirement = NULL;
+ SecStaticCodeRef staticCode = NULL;
+ SecCodeRef hostCode = NULL;
+
+ result = SecCodeCopySelf(kSecCSDefaultFlags, &hostCode);
+ if (result != 0) {
+ SULog(@"Failed to copy host code %d", result);
+ goto finally;
+ }
+
+ result = SecCodeCopyDesignatedRequirement(hostCode, kSecCSDefaultFlags, &requirement);
+ if (result != 0) {
+ SULog(@"Failed to copy designated requirement %d", result);
+ goto finally;
+ }
+
+ NSBundle *newBundle = [NSBundle bundleWithPath:destinationPath];
+ if (!newBundle) {
+ SULog(@"Failed to load NSBundle for update");
+ result = -1;
+ goto finally;
+ }
+
+ result = SecStaticCodeCreateWithPath((CFURLRef)[newBundle executableURL], kSecCSDefaultFlags, &staticCode);
+ if (result != 0) {
+ SULog(@"Failed to get static code %d", result);
+ goto finally;
+ }
+
+ result = SecStaticCodeCheckValidityWithErrors(staticCode, kSecCSDefaultFlags | kSecCSCheckAllArchitectures, requirement, (CFErrorRef *)error);
+ if (result != 0 && error) [*error autorelease];
+
+finally:
+ if (hostCode) CFRelease(hostCode);
+ if (staticCode) CFRelease(staticCode);
+ if (requirement) CFRelease(requirement);
+ return (result == 0);
+}
+
++ (BOOL)hostApplicationIsCodeSigned
+{
+ // This API didn't exist prior to 10.6.
+ if (SecCodeCopySelf == NULL) return NO;
+
+ OSStatus result;
+ SecCodeRef hostCode = NULL;
+ result = SecCodeCopySelf(kSecCSDefaultFlags, &hostCode);
+ if (result != 0) return NO;
+
+ SecRequirementRef requirement = NULL;
+ result = SecCodeCopyDesignatedRequirement(hostCode, kSecCSDefaultFlags, &requirement);
+ if (hostCode) CFRelease(hostCode);
+ if (requirement) CFRelease(requirement);
+ return (result == 0);
+}
+
+@end
1  SUDSAVerifier.h
View
@@ -11,7 +11,6 @@
#import <Cocoa/Cocoa.h>
-// For the paranoid folks!
@interface SUDSAVerifier : NSObject {}
+ (BOOL)validatePath:(NSString *)path withEncodedDSASignature:(NSString *)encodedSignature withPublicDSAKey:(NSString *)pkeyString;
@end
1  SUInstaller.h
View
@@ -14,6 +14,7 @@
@class SUHost;
@interface SUInstaller : NSObject { }
++ (NSString *) appPathInUpdateFolder:(NSString *)updateFolder forHost:(SUHost *)host;
+ (void) installFromUpdateFolder:(NSString *)updateFolder overHost:(SUHost *)host installationPath:(NSString *)installationPath delegate:delegate synchronously:(BOOL)synchronously versionComparator:(id <SUVersionComparison>)comparator;
+ (void) finishInstallationToPath:(NSString *)installationPath withResult:(BOOL)result host:(SUHost *)host error:(NSError *)error delegate:delegate;
+ (NSString*) updateFolder;
31 SUInstaller.m
View
@@ -42,14 +42,13 @@ + (BOOL)isAliasFolderAtPath:(NSString *)path
return NO;
}
-
-+ (void)installFromUpdateFolder:(NSString *)inUpdateFolder overHost:(SUHost *)host installationPath:(NSString *)installationPath delegate:delegate synchronously:(BOOL)synchronously versionComparator:(id <SUVersionComparison>)comparator
++ (NSString *)installSourcePathInUpdateFolder:(NSString *)inUpdateFolder forHost:(SUHost *)host isPackage:(BOOL *)isPackagePtr
{
- // Search subdirectories for the application
+ // Search subdirectories for the application
NSString *currentFile,
- *newAppDownloadPath = nil,
- *bundleFileName = [[host bundlePath] lastPathComponent],
- *alternateBundleFileName = [[host name] stringByAppendingPathExtension:[[host bundlePath] pathExtension]];
+ *newAppDownloadPath = nil,
+ *bundleFileName = [[host bundlePath] lastPathComponent],
+ *alternateBundleFileName = [[host name] stringByAppendingPathExtension:[[host bundlePath] pathExtension]];
BOOL isPackage = NO;
NSString *fallbackPackagePath = nil;
NSDirectoryEnumerator *dirEnum = [[NSFileManager defaultManager] enumeratorAtPath: inUpdateFolder];
@@ -100,13 +99,29 @@ + (void)installFromUpdateFolder:(NSString *)inUpdateFolder overHost:(SUHost *)ho
}
// We don't have a valid path. Try to use the fallback package.
-
+
if (newAppDownloadPath == nil && fallbackPackagePath != nil)
{
isPackage = YES;
newAppDownloadPath = fallbackPackagePath;
}
-
+
+ if (isPackagePtr) *isPackagePtr = isPackage;
+ return newAppDownloadPath;
+}
+
++ (NSString *)appPathInUpdateFolder:(NSString *)updateFolder forHost:(SUHost *)host
+{
+ BOOL isPackage = NO;
+ NSString *path = [self installSourcePathInUpdateFolder:updateFolder forHost:host isPackage:&isPackage];
+ return isPackage ? nil : path;
+}
+
++ (void)installFromUpdateFolder:(NSString *)inUpdateFolder overHost:(SUHost *)host installationPath:(NSString *)installationPath delegate:delegate synchronously:(BOOL)synchronously versionComparator:(id <SUVersionComparison>)comparator
+{
+ BOOL isPackage = NO;
+ NSString *newAppDownloadPath = [self installSourcePathInUpdateFolder:inUpdateFolder forHost:host isPackage:&isPackage];
+
if (newAppDownloadPath == nil)
{
[self finishInstallationToPath:installationPath withResult:NO host:host error:[NSError errorWithDomain:SUSparkleErrorDomain code:SUMissingUpdateError userInfo:[NSDictionary dictionaryWithObject:@"Couldn't find an appropriate update in the downloaded package." forKey:NSLocalizedDescriptionKey]] delegate:delegate];
3  SUPipedUnarchiver.m
View
@@ -51,6 +51,7 @@ - (void)extractArchivePipingDataToCommand:(NSString *)command
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
FILE *fp = NULL, *cmdFP = NULL;
+ char *oldDestinationString = NULL;
SULog(@"Extracting %@ using '%@'",archivePath,command);
@@ -60,7 +61,6 @@ - (void)extractArchivePipingDataToCommand:(NSString *)command
#else
NSNumber *fs = [[[NSFileManager defaultManager] attributesOfItemAtPath:archivePath error:nil] objectForKey:NSFileSize];
#endif
- char *oldDestinationString = getenv("DESTINATION");
if (fs == nil) goto reportError;
@@ -69,6 +69,7 @@ - (void)extractArchivePipingDataToCommand:(NSString *)command
fp = fopen([archivePath fileSystemRepresentation], "r");
if (!fp) goto reportError;
+ oldDestinationString = getenv("DESTINATION");
setenv("DESTINATION", [[archivePath stringByDeletingLastPathComponent] fileSystemRepresentation], 1);
cmdFP = popen([command fileSystemRepresentation], "w");
size_t written;
26 SUPlainInstallerInternals.m
View
@@ -198,17 +198,12 @@ + (BOOL)_copyPathWithForcedAuthentication:(NSString *)src toPath:(NSString *)dst
// quarantine to avoid a delay at launch, and to avoid
// presenting the user with a confusing trust dialog.
//
- // This needs to be done after the application is moved to its
- // new home with "mv" in case it's moved across filesystems: if
- // that happens, "mv" actually performs a copy and may result
- // in the application being quarantined. It also needs to be
- // done before "chown" changes ownership, because the ownership
- // change will almost certainly make it impossible to change
- // attributes to release the files from the quarantine.
+ // This needs to be done before "chown" changes ownership,
+ // because the ownership change will fail if the file is quarantined.
if (res)
{
SULog(@"releaseFromQuarantine");
- [self performSelectorOnMainThread:@selector(releaseFromQuarantine:) withObject:dst waitUntilDone:YES];
+ [self performSelectorOnMainThread:@selector(releaseFromQuarantine:) withObject:src waitUntilDone:YES];
}
if( res ) // Set permissions while it's still in source, so we have it with working and correct perms when it arrives at destination.
@@ -252,6 +247,21 @@ + (BOOL)_copyPathWithForcedAuthentication:(NSString *)src toPath:(NSString *)dst
AuthorizationFree(auth, 0);
+ // If the currently-running application is trusted, the new
+ // version should be trusted as well. Remove it from the
+ // quarantine to avoid a delay at launch, and to avoid
+ // presenting the user with a confusing trust dialog.
+ //
+ // This needs to be done after the application is moved to its
+ // new home with "mv" in case it's moved across filesystems: if
+ // that happens, "mv" actually performs a copy and may result
+ // in the application being quarantined.
+ if (res)
+ {
+ SULog(@"releaseFromQuarantine after installing");
+ [self performSelectorOnMainThread:@selector(releaseFromQuarantine:) withObject:dst waitUntilDone:YES];
+ }
+
if (!res)
{
// Something went wrong somewhere along the way, but we're not sure exactly where.
10 SUStandardVersionComparator.m
View
@@ -85,7 +85,7 @@ - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)
NSString *partA, *partB;
NSUInteger i, n;
- int intA, intB;
+ long long valueA, valueB;
SUCharacterType typeA, typeB;
n = MIN([partsA count], [partsB count]);
@@ -100,11 +100,11 @@ - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)
if (typeA == typeB) {
// Same type; we can compare
if (typeA == kNumberType) {
- intA = [partA intValue];
- intB = [partB intValue];
- if (intA > intB) {
+ valueA = [partA longLongValue];
+ valueB = [partB longLongValue];
+ if (valueA > valueB) {
return NSOrderedDescending;
- } else if (intA < intB) {
+ } else if (valueA < valueB) {
return NSOrderedAscending;
}
} else if (typeA == kStringType) {
3  SUUIBasedUpdateDriver.m
View
@@ -201,8 +201,7 @@ - (void)installWithToolAndRelaunch:(BOOL)relaunch
- (void)abortUpdateWithError:(NSError *)error
{
- NSString* format = [error localizedDescription];
- NSAlert *alert = [NSAlert alertWithMessageText:SULocalizedString(@"Update Error!", nil) defaultButton:SULocalizedString(@"Cancel Update", nil) alternateButton:nil otherButton:nil informativeTextWithFormat:@"%@", format];
+ NSAlert *alert = [NSAlert alertWithMessageText:SULocalizedString(@"Update Error!", nil) defaultButton:SULocalizedString(@"Cancel Update", nil) alternateButton:nil otherButton:nil informativeTextWithFormat:@"%@", [error localizedDescription]];
[self showModalAlert:alert];
[super abortUpdateWithError:error];
}
1  SUUpdatePermissionPrompt.h
View
@@ -24,6 +24,7 @@ typedef enum {
IBOutlet NSTextField *descriptionTextField;
IBOutlet NSView *moreInfoView;
IBOutlet NSButton *moreInfoButton;
+ IBOutlet NSTableView *profileTableView;
BOOL isShowingMoreInfo, shouldSendProfile;
}
+ (void)promptWithHost:(SUHost *)aHost systemProfile:(NSArray *)profile delegate:(id)d;
7 SUUpdatePermissionPrompt.m
View
@@ -53,9 +53,14 @@ - (void)awakeFromNib
NSRect frame = [[self window] frame];
frame.size.height -= [moreInfoButton frame].size.height;
[[self window] setFrame:frame display:YES];
- }
+ } else {
+ // Set the table view's delegate so we can disable row selection.
+ [profileTableView setDelegate:(id)self];
+ }
}
+- (BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(NSInteger)row { return NO; }
+
- (void)dealloc
{
[host release];
4 SUUpdater.h
View
@@ -27,12 +27,12 @@
+ (SUUpdater *)sharedUpdater;
+ (SUUpdater *)updaterForBundle:(NSBundle *)bundle;
-- initForBundle:(NSBundle *)bundle;
+- (id)initForBundle:(NSBundle *)bundle;
- (NSBundle *)hostBundle;
- (void)setDelegate:(id)delegate;
-- delegate;
+- (id)delegate;
- (void)setAutomaticallyChecksForUpdates:(BOOL)automaticallyChecks;
- (BOOL)automaticallyChecksForUpdates;
21 SUUpdater.m
View
@@ -17,6 +17,7 @@
#import "SUScheduledUpdateDriver.h"
#import "SUConstants.h"
#import "SULog.h"
+#import "SUCodeSigningVerifier.h"
#include <SystemConfiguration/SystemConfiguration.h>
@@ -83,12 +84,18 @@ - (id)initForBundle:(NSBundle *)bundle
#if !ENDANGER_USERS_WITH_INSECURE_UPDATES
// Saving-the-developer-from-a-stupid-mistake-check:
- if (![[[self feedURL] scheme] isEqualToString:@"https"] && ![host publicDSAKey])
- {
- [self notifyWillShowModalAlert];
- NSRunAlertPanel(@"Insecure update error!", @"For security reasons, you need to distribute your appcast over SSL or sign your updates. See Sparkle's documentation for more information.", @"OK", nil, nil);
- [self notifyDidShowModalAlert];
- }
+ BOOL hasPublicDSAKey = [host publicDSAKey] != nil;
+ BOOL isMainBundle = [bundle isEqualTo:[NSBundle mainBundle]];
+ BOOL hostIsCodeSigned = [SUCodeSigningVerifier hostApplicationIsCodeSigned];
+ if (!isMainBundle && !hasPublicDSAKey) {
+ [self notifyWillShowModalAlert];
+ NSRunAlertPanel(@"Insecure update error!", @"For security reasons, you need to sign your updates with a DSA key. See Sparkle's documentation for more information.", @"OK", nil, nil);
+ [self notifyDidShowModalAlert];
+ } else if (isMainBundle && !(hasPublicDSAKey || hostIsCodeSigned)) {
+ [self notifyWillShowModalAlert];
+ NSRunAlertPanel(@"Insecure update error!", @"For security reasons, you need to code sign your application or sign your updates with a DSA key. See Sparkle's documentation for more information.", @"OK", nil, nil);
+ [self notifyDidShowModalAlert];
+ }
#endif
// This runs the permission prompt if needed, but never before the app has finished launching because the runloop won't run before that
[self performSelector:@selector(startUpdateCycle) withObject:nil afterDelay:0];
@@ -544,7 +551,7 @@ - (BOOL)updateInProgress
return driver && ([driver finished] == NO);
}
-- delegate { return delegate; }
+- (id)delegate { return delegate; }
- (NSBundle *)hostBundle { return [host bundle]; }
@end
11 Sparkle.xcodeproj/project.pbxproj
View
@@ -91,6 +91,8 @@
61A2279D0D1CEE7600430CCD /* SUSystemProfiler.m in Sources */ = {isa = PBXBuildFile; fileRef = 61A2279B0D1CEE7600430CCD /* SUSystemProfiler.m */; };
61A354550DF113C70076ECB1 /* SUUserInitiatedUpdateDriver.h in Headers */ = {isa = PBXBuildFile; fileRef = 61A354530DF113C70076ECB1 /* SUUserInitiatedUpdateDriver.h */; settings = {ATTRIBUTES = (); }; };
61A354560DF113C70076ECB1 /* SUUserInitiatedUpdateDriver.m in Sources */ = {isa = PBXBuildFile; fileRef = 61A354540DF113C70076ECB1 /* SUUserInitiatedUpdateDriver.m */; };
+ 61B078CE15A5FB6100600039 /* SUCodeSigningVerifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 61B078CC15A5FB6100600039 /* SUCodeSigningVerifier.h */; };
+ 61B078CF15A5FB6100600039 /* SUCodeSigningVerifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 61B078CD15A5FB6100600039 /* SUCodeSigningVerifier.m */; };
61B5F8ED09C4CE3C00B25A18 /* SUUpdater.h in Headers */ = {isa = PBXBuildFile; fileRef = 61B5F8E309C4CE3C00B25A18 /* SUUpdater.h */; settings = {ATTRIBUTES = (Public, ); }; };
61B5F8EE09C4CE3C00B25A18 /* SUUpdater.m in Sources */ = {isa = PBXBuildFile; fileRef = 61B5F8E409C4CE3C00B25A18 /* SUUpdater.m */; };
61B5F8EF09C4CE3C00B25A18 /* SUPlainInstallerInternals.m in Sources */ = {isa = PBXBuildFile; fileRef = 61B5F8E509C4CE3C00B25A18 /* SUPlainInstallerInternals.m */; };
@@ -352,6 +354,8 @@
61A2279B0D1CEE7600430CCD /* SUSystemProfiler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SUSystemProfiler.m; sourceTree = "<group>"; };
61A354530DF113C70076ECB1 /* SUUserInitiatedUpdateDriver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SUUserInitiatedUpdateDriver.h; sourceTree = "<group>"; };
61A354540DF113C70076ECB1 /* SUUserInitiatedUpdateDriver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SUUserInitiatedUpdateDriver.m; sourceTree = "<group>"; };
+ 61B078CC15A5FB6100600039 /* SUCodeSigningVerifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SUCodeSigningVerifier.h; sourceTree = "<group>"; };
+ 61B078CD15A5FB6100600039 /* SUCodeSigningVerifier.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SUCodeSigningVerifier.m; sourceTree = "<group>"; };
61B5F8E309C4CE3C00B25A18 /* SUUpdater.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SUUpdater.h; sourceTree = "<group>"; };
61B5F8E409C4CE3C00B25A18 /* SUUpdater.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = SUUpdater.m; sourceTree = "<group>"; };
61B5F8E509C4CE3C00B25A18 /* SUPlainInstallerInternals.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = SUPlainInstallerInternals.m; sourceTree = "<group>"; };
@@ -736,6 +740,8 @@
children = (
61299A2D09CA2DAB00B7442F /* SUDSAVerifier.h */,
61299A2E09CA2DAB00B7442F /* SUDSAVerifier.m */,
+ 61B078CC15A5FB6100600039 /* SUCodeSigningVerifier.h */,
+ 61B078CD15A5FB6100600039 /* SUCodeSigningVerifier.m */,
);
name = Support;
sourceTree = "<group>";
@@ -888,6 +894,7 @@
6158A1C5137904B300487EC1 /* SUUpdater_Private.h in Headers */,
8B887B7E1517F888000BB292 /* SUXPC.h in Headers */,
93FB277A156BD80D001937C7 /* SUPasswordPrompt.h in Headers */,
+ 61B078CE15A5FB6100600039 /* SUCodeSigningVerifier.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1308,6 +1315,7 @@
55C14F07136EF6DB00649790 /* SULog.m in Sources */,
8B887B7F1517F888000BB292 /* SUXPC.m in Sources */,
93FB277B156BD80D001937C7 /* SUPasswordPrompt.m in Sources */,
+ 61B078CF15A5FB6100600039 /* SUCodeSigningVerifier.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1518,6 +1526,7 @@
);
COMBINE_HIDPI_IMAGES = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ INSTALL_PATH = "@rpath";
};
name = Debug;
};
@@ -1532,6 +1541,7 @@
COMBINE_HIDPI_IMAGES = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+ INSTALL_PATH = "@rpath";
};
name = Release;
};
@@ -1654,6 +1664,7 @@
COMBINE_HIDPI_IMAGES = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+ INSTALL_PATH = "@rpath";
};
name = "Release (GC dual-mode; 10.5+)";
};
5 Tests/SUVersionComparisonTest.m
View
@@ -59,4 +59,9 @@ - (void)testWordsWithSpaceInFront
// SUAssertEqual(@"1.0 - beta", @"1.0 beta");
}
+- (void)testVersionsWithReverseDateBasedNumbers
+{
+ SUAssertAscending(@"201210251627", @"201211051041");
+}
+
@end
18 ar.lproj/SUUpdatePermissionPrompt.xib
View
@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
- <int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">12B19</string>
- <string key="IBDocument.InterfaceBuilderVersion">2549</string>
- <string key="IBDocument.AppKitVersion">1187</string>
- <string key="IBDocument.HIToolboxVersion">624.00</string>
+ <int key="IBDocument.SystemTarget">1070</int>
+ <string key="IBDocument.SystemVersion">12C60</string>
+ <string key="IBDocument.InterfaceBuilderVersion">2843</string>
+ <string key="IBDocument.AppKitVersion">1187.34</string>
+ <string key="IBDocument.HIToolboxVersion">625.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">2549</string>
+ <string key="NS.object.0">2843</string>
</object>
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -1151,7 +1151,11 @@ IHNlbnQ6A</string>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
- <integer value="1050" key="NS.object.0"/>
+ <real value="1070" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+ <real value="1070" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
409 cs.lproj/SUUpdatePermissionPrompt.xib
View
@@ -2,43 +2,40 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">11A453</string>
- <string key="IBDocument.InterfaceBuilderVersion">1553</string>
- <string key="IBDocument.AppKitVersion">1120</string>
- <string key="IBDocument.HIToolboxVersion">556.00</string>
+ <string key="IBDocument.SystemVersion">12B19</string>
+ <string key="IBDocument.InterfaceBuilderVersion">2549</string>
+ <string key="IBDocument.AppKitVersion">1187</string>
+ <string key="IBDocument.HIToolboxVersion">624.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">1553</string>
+ <string key="NS.object.0">2549</string>
</object>
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSUserDefaultsController</string>
- <string>NSScroller</string>
<string>NSArrayController</string>
<string>NSButton</string>
- <string>NSScrollView</string>
- <string>NSImageView</string>
- <string>NSTextFieldCell</string>
<string>NSButtonCell</string>
+ <string>NSCustomObject</string>
+ <string>NSCustomView</string>
<string>NSImageCell</string>
+ <string>NSImageView</string>
+ <string>NSScrollView</string>
+ <string>NSScroller</string>
+ <string>NSTableColumn</string>
<string>NSTableView</string>
- <string>NSCustomView</string>
- <string>NSCustomObject</string>
+ <string>NSTextField</string>
+ <string>NSTextFieldCell</string>
+ <string>NSUserDefaultsController</string>
<string>NSView</string>
<string>NSWindowTemplate</string>
- <string>NSTextField</string>
- <string>NSTableColumn</string>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys" id="0">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <reference key="dict.values" ref="0"/>
+ <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+ <integer value="1" key="NS.object.0"/>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="844525087">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -75,10 +72,11 @@
<int key="NSvFlags">257</int>
<string key="NSFrame">{{255, 12}, {174, 32}}</string>
<reference key="NSSuperview" ref="634509955"/>
+ <reference key="NSWindow"/>
<int key="NSTag">1</int>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="375345792">
- <int key="NSCellFlags">-2080244224</int>
+ <int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Ověřovat automaticky</string>
<object class="NSFont" key="NSSupport" id="153976638">
@@ -88,7 +86,7 @@
</object>
<reference key="NSControlView" ref="59920098"/>
<int key="NSTag">1</int>
- <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">1</int>
<reference key="NSAlternateImage" ref="153976638"/>
<string key="NSAlternateContents"/>
@@ -96,20 +94,22 @@
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="604564528">
<reference key="NSNextResponder" ref="634509955"/>
<int key="NSvFlags">257</int>
<string key="NSFrame">{{138, 12}, {117, 32}}</string>
<reference key="NSSuperview" ref="634509955"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="1030096284">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Neověřovat</string>
<reference key="NSSupport" ref="153976638"/>
<reference key="NSControlView" ref="604564528"/>
- <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">1</int>
<reference key="NSAlternateImage" ref="153976638"/>
<string key="NSAlternateContents"/>
@@ -117,15 +117,17 @@
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="424428818">
<reference key="NSNextResponder" ref="634509955"/>
<int key="NSvFlags">264</int>
<string key="NSFrame">{{104, 114}, {289, 34}}</string>
<reference key="NSSuperview" ref="634509955"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="509483215">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">272629760</int>
<string key="NSContents">Ověřovat aktualizace automaticky?</string>
<object class="NSFont" key="NSSupport">
@@ -153,15 +155,17 @@
</object>
</object>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="682946549">
<reference key="NSNextResponder" ref="634509955"/>
<int key="NSvFlags">266</int>
<string key="NSFrame">{{104, 81}, {315, 42}}</string>
<reference key="NSSuperview" ref="634509955"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="273717838">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">272629760</int>
<string key="NSContents">DO NOT LOCALIZE</string>
<object class="NSFont" key="NSSupport" id="26">
@@ -173,20 +177,22 @@
<reference key="NSBackgroundColor" ref="972113870"/>
<reference key="NSTextColor" ref="22894637"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="1016693130">
<reference key="NSNextResponder" ref="634509955"/>
<int key="NSvFlags">264</int>
<string key="NSFrame">{{104, 53}, {278, 18}}</string>
<reference key="NSSuperview" ref="634509955"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="1052989921">
- <int key="NSCellFlags">-2080244224</int>
+ <int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">163840</int>
<string key="NSContents">Odeslat anonymní systémový profil</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="1016693130"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<object class="NSCustomResource" key="NSNormalImage">
<string key="NSClassName">NSImage</string>
@@ -200,6 +206,7 @@
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSImageView" id="210018129">
<reference key="NSNextResponder" ref="634509955"/>
@@ -218,9 +225,10 @@
</object>
<string key="NSFrame">{{23, 84}, {64, 64}}</string>
<reference key="NSSuperview" ref="634509955"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSImageCell" key="NSCell" id="452432523">
- <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags">134217728</int>
<int key="NSCellFlags2">33554432</int>
<object class="NSCustomResource" key="NSContents">
<string key="NSClassName">NSImage</string>
@@ -231,6 +239,7 @@
<int key="NSStyle">0</int>
<bool key="NSAnimates">YES</bool>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<bool key="NSEditable">YES</bool>
</object>
<object class="NSButton" id="1038986702">
@@ -238,26 +247,29 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{80, 50}, {27, 26}}</string>
<reference key="NSSuperview" ref="634509955"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="238960717">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134250496</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="153976638"/>
<reference key="NSControlView" ref="1038986702"/>
- <int key="NSButtonFlags">-1194573569</int>
+ <int key="NSButtonFlags">-1194573824</int>
<int key="NSButtonFlags2">133</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</object>
<string key="NSFrameSize">{438, 168}</string>
<reference key="NSSuperview"/>
+ <reference key="NSWindow"/>
</object>
- <string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
+ <string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
<string key="NSMinSize">{213, 129}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
<bool key="NSWindowIsRestorable">YES</bool>
@@ -271,9 +283,6 @@
<string>displayKey</string>
</object>
<object class="_NSManagedProxy" key="_NSManagedProxy"/>
- <bool key="NSAvoidsEmptySelection">YES</bool>
- <bool key="NSPreservesSelection">YES</bool>
- <bool key="NSSelectsInsertedObjects">YES</bool>
<bool key="NSFilterRestrictsInsertion">YES</bool>
<bool key="NSClearsFilterPredicateOnInsertion">YES</bool>
</object>
@@ -298,6 +307,8 @@
<string key="NSFrameSize">{353, 113}</string>
<reference key="NSSuperview" ref="471134904"/>
<bool key="NSEnabled">YES</bool>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <bool key="NSControlAllowsExpansionToolTips">YES</bool>
<object class="_NSCornerView" key="NSCornerView">
<nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
@@ -310,7 +321,7 @@
<double key="NSMinWidth">40</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
@@ -326,7 +337,7 @@
</object>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="164397246">
- <int key="NSCellFlags">69336577</int>
+ <int key="NSCellFlags">69206017</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Text Cell</string>
<reference key="NSSupport" ref="26"/>
@@ -351,7 +362,7 @@
<double key="NSMinWidth">40</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
@@ -359,7 +370,7 @@
<reference key="NSTextColor" ref="524644483"/>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="896442049">
- <int key="NSCellFlags">69336577</int>
+ <int key="NSCellFlags">69206017</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Text Cell</string>
<reference key="NSSupport" ref="26"/>
@@ -413,6 +424,7 @@
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{-22, 1}, {11, 125}}</string>
<reference key="NSSuperview" ref="421101861"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSsFlags">256</int>
<reference key="NSTarget" ref="421101861"/>
<string key="NSAction">_doScroller:</string>
@@ -423,6 +435,7 @@
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{-100, -100}, {345, 11}}</string>
<reference key="NSSuperview" ref="421101861"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSsFlags">257</int>
<reference key="NSTarget" ref="421101861"/>
<string key="NSAction">_doScroller:</string>
@@ -437,6 +450,9 @@
<reference key="NSHScroller" ref="791636049"/>
<reference key="NSContentView" ref="471134904"/>
<bytes key="NSScrollAmts">AAAAAAAAAABBgAAAQYAAAA</bytes>
+ <double key="NSMinMagnification">0.25</double>
+ <double key="NSMaxMagnification">4</double>
+ <double key="NSMagnification">1</double>
</object>
<object class="NSTextField" id="320348499">
<reference key="NSNextResponder" ref="444010526"/>
@@ -445,7 +461,7 @@
<reference key="NSSuperview" ref="444010526"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="660061579">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">272629760</int>
<string type="base64-UTF8" key="NSContents">SW5mb3JtYWNlIHogYW5vbnltbsOtaG8gc3lzdMOpbW92w6lobyBwcm9maWx1IHBvbcOhaGFqw60gdsO9
dm9qw6HFmcWvbSBsw6lwZSBwbMOhbm92YXQgYnVkb3Vjw60gdsO9dm9qIGFwbGlrYWNlCk9icmHFpXRl
@@ -456,6 +472,7 @@ b3Rhei4KClR5dG8gaW5mb3JtYWNlIGJ5IG3Em2xpIGLDvXQgb2Rlc2zDoW55Og</string>
<reference key="NSBackgroundColor" ref="972113870"/>
<reference key="NSTextColor" ref="22894637"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</object>
<string key="NSFrameSize">{362, 205}</string>
@@ -475,22 +492,6 @@ b3Rhei4KClR5dG8gaW5mb3JtYWNlIGJ5IG3Em2xpIGLDvXQgb2Rlc2zDoW55Og</string>
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
- <object class="IBBindingConnection" key="connection">
- <string key="label">contentArray: systemProfileInformationArray</string>
- <reference key="source" ref="770529889"/>
- <reference key="destination" ref="252154485"/>
- <object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="770529889"/>
- <reference key="NSDestination" ref="252154485"/>
- <string key="NSLabel">contentArray: systemProfileInformationArray</string>
- <string key="NSBinding">contentArray</string>
- <string key="NSKeyPath">systemProfileInformationArray</string>
- <int key="NSNibBindingConnectorVersion">2</int>
- </object>
- </object>
- <int key="connectionID">25</int>
- </object>
- <object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">window</string>
<reference key="source" ref="252154485"/>
@@ -507,22 +508,6 @@ b3Rhei4KClR5dG8gaW5mb3JtYWNlIGJ5IG3Em2xpIGLDvXQgb2Rlc2zDoW55Og</string>
<int key="connectionID">127</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBBindingConnection" key="connection">
- <string key="label">value: icon</string>
- <reference key="source" ref="210018129"/>
- <reference key="destination" ref="252154485"/>
- <object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="210018129"/>
- <reference key="NSDestination" ref="252154485"/>
- <string key="NSLabel">value: icon</string>
- <string key="NSBinding">value</string>
- <string key="NSKeyPath">icon</string>
- <int key="NSNibBindingConnectorVersion">2</int>
- </object>
- </object>
- <int key="connectionID">130</int>
- </object>
- <object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">toggleMoreInfo:</string>
<reference key="source" ref="252154485"/>
@@ -547,24 +532,60 @@ b3Rhei4KClR5dG8gaW5mb3JtYWNlIGJ5IG3Em2xpIGLDvXQgb2Rlc2zDoW55Og</string>
<int key="connectionID">133</int>
</object>
<object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">finishPrompt:</string>
+ <reference key="source" ref="252154485"/>
+ <reference key="destination" ref="59920098"/>
+ </object>
+ <int key="connectionID">144</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">finishPrompt:</string>
+ <reference key="source" ref="252154485"/>
+ <reference key="destination" ref="604564528"/>
+ </object>
+ <int key="connectionID">145</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">profileTableView</string>
+ <reference key="source" ref="252154485"/>
+ <reference key="destination" ref="445491357"/>
+ </object>
+ <int key="connectionID">186</int>
+ </object>
+ <object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
- <string key="label">hidden: shouldAskAboutProfile</string>
- <reference key="source" ref="1038986702"/>
+ <string key="label">contentArray: systemProfileInformationArray</string>
+ <reference key="source" ref="770529889"/>
<reference key="destination" ref="252154485"/>
<object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="1038986702"/>
+ <reference key="NSSource" ref="770529889"/>
<reference key="NSDestination" ref="252154485"/>
- <string key="NSLabel">hidden: shouldAskAboutProfile</string>
- <string key="NSBinding">hidden</string>
- <string key="NSKeyPath">shouldAskAboutProfile</string>
- <object class="NSDictionary" key="NSOptions">
- <string key="NS.key.0">NSValueTransformerName</string>
- <string key="NS.object.0">NSNegateBoolean</string>
- </object>
+ <string key="NSLabel">contentArray: systemProfileInformationArray</string>
+ <string key="NSBinding">contentArray</string>
+ <string key="NSKeyPath">systemProfileInformationArray</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
- <int key="connectionID">139</int>
+ <int key="connectionID">25</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: promptDescription</string>
+ <reference key="source" ref="682946549"/>
+ <reference key="destination" ref="252154485"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="682946549"/>
+ <reference key="NSDestination" ref="252154485"/>
+ <string key="NSLabel">value: promptDescription</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">promptDescription</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">161</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
@@ -587,22 +608,6 @@ b3Rhei4KClR5dG8gaW5mb3JtYWNlIGJ5IG3Em2xpIGLDvXQgb2Rlc2zDoW55Og</string>
<int key="connectionID">143</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">finishPrompt:</string>
- <reference key="source" ref="252154485"/>
- <reference key="destination" ref="59920098"/>
- </object>
- <int key="connectionID">144</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">finishPrompt:</string>
- <reference key="source" ref="252154485"/>
- <reference key="destination" ref="604564528"/>
- </object>
- <int key="connectionID">145</int>
- </object>
- <object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">value: shouldSendProfile</string>
<reference key="source" ref="1016693130"/>
@@ -620,7 +625,7 @@ b3Rhei4KClR5dG8gaW5mb3JtYWNlIGJ5IG3Em2xpIGLDvXQgb2Rlc2zDoW55Og</string>
<string>NSNullPlaceholder</string>
<string>NSValidatesImmediately</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="1"/>
<boolean value="YES"/>
@@ -633,19 +638,35 @@ b3Rhei4KClR5dG8gaW5mb3JtYWNlIGJ5IG3Em2xpIGLDvXQgb2Rlc2zDoW55Og</string>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
- <string key="label">value: promptDescription</string>
- <reference key="source" ref="682946549"/>
+ <string key="label">value: icon</string>
+ <reference key="source" ref="210018129"/>
<reference key="destination" ref="252154485"/>
<object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="682946549"/>
+ <reference key="NSSource" ref="210018129"/>
<reference key="NSDestination" ref="252154485"/>
- <string key="NSLabel">value: promptDescription</string>
+ <string key="NSLabel">value: icon</string>
<string key="NSBinding">value</string>
- <string key="NSKeyPath">promptDescription</string>
+ <string key="NSKeyPath">icon</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
- <int key="connectionID">161</int>
+ <int key="connectionID">130</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: arrangedObjects.displayKey</string>
+ <reference key="source" ref="746304851"/>
+ <reference key="destination" ref="770529889"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="746304851"/>
+ <reference key="NSDestination" ref="770529889"/>
+ <string key="NSLabel">value: arrangedObjects.displayKey</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">arrangedObjects.displayKey</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">174</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
@@ -665,19 +686,23 @@ b3Rhei4KClR5dG8gaW5mb3JtYWNlIGJ5IG3Em2xpIGLDvXQgb2Rlc2zDoW55Og</string>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
- <string key="label">value: arrangedObjects.displayKey</string>
- <reference key="source" ref="746304851"/>
- <reference key="destination" ref="770529889"/>
+ <string key="label">hidden: shouldAskAboutProfile</string>
+ <reference key="source" ref="1038986702"/>
+ <reference key="destination" ref="252154485"/>
<object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="746304851"/>
- <reference key="NSDestination" ref="770529889"/>
- <string key="NSLabel">value: arrangedObjects.displayKey</string>
- <string key="NSBinding">value</string>
- <string key="NSKeyPath">arrangedObjects.displayKey</string>
+ <reference key="NSSource" ref="1038986702"/>
+ <reference key="NSDestination" ref="252154485"/>
+ <string key="NSLabel">hidden: shouldAskAboutProfile</string>
+ <string key="NSBinding">hidden</string>
+ <string key="NSKeyPath">shouldAskAboutProfile</string>
+ <object class="NSDictionary" key="NSOptions">
+ <string key="NS.key.0">NSValueTransformerName</string>
+ <string key="NS.object.0">NSNegateBoolean</string>
+ </object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
- <int key="connectionID">174</int>
+ <int key="connectionID">139</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
@@ -685,7 +710,9 @@ b3Rhei4KClR5dG8gaW5mb3JtYWNlIGJ5IG3Em2xpIGLDvXQgb2Rlc2zDoW55Og</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
- <reference key="object" ref="0"/>
+ <object class="NSArray" key="object" id="0">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
<reference key="children" ref="844525087"/>
<nil key="parent"/>
</object>
@@ -935,11 +962,8 @@ b3Rhei4KClR5dG8gaW5mb3JtYWNlIGJ5IG3Em2xpIGLDvXQgb2Rlc2zDoW55Og</string>
<string>-1.IBPluginDependency</string>
<string>-2.IBPluginDependency</string>
<string>-3.IBPluginDependency</string>
- <string>-3.ImportedFromIB2</string>
<string>13.IBPluginDependency</string>
- <string>13.ImportedFromIB2</string>
<string>14.IBPluginDependency</string>
- <string>14.ImportedFromIB2</string>
<string>176.IBPluginDependency</string>
<string>177.IBPluginDependency</string>
<string>178.IBPluginDependency</string>
@@ -953,52 +977,31 @@ b3Rhei4KClR5dG8gaW5mb3JtYWNlIGJ5IG3Em2xpIGLDvXQgb2Rlc2zDoW55Og</string>
<string>185.IBPluginDependency</string>
<string>185.IBShouldRemoveOnLegacySave</string>
<string>24.IBPluginDependency</string>
- <string>24.ImportedFromIB2</string>
<string>32.IBPluginDependency</string>
- <string>32.ImportedFromIB2</string>
<string>33.IBPluginDependency</string>
- <string>33.ImportedFromIB2</string>
<string>34.IBPluginDependency</string>
- <string>34.ImportedFromIB2</string>
<string>37.IBPluginDependency</string>
- <string>37.ImportedFromIB2</string>
<string>39.IBPluginDependency</string>
- <string>39.ImportedFromIB2</string>
<string>40.IBPluginDependency</string>
- <string>40.ImportedFromIB2</string>
<string>41.IBPluginDependency</string>
- <string>41.ImportedFromIB2</string>
<string>42.IBPluginDependency</string>
- <string>42.ImportedFromIB2</string>
<string>43.IBPluginDependency</string>
- <string>43.ImportedFromIB2</string>
<string>44.IBPluginDependency</string>
- <string>44.ImportedFromIB2</string>
<string>45.IBPluginDependency</string>
- <string>45.ImportedFromIB2</string>
<string>46.IBPluginDependency</string>
- <string>46.ImportedFromIB2</string>
<string>49.IBPluginDependency</string>
- <string>49.ImportedFromIB2</string>
- <string>5.IBEditorWindowLastContentRect</string>
<string>5.IBPluginDependency</string>
<string>5.IBWindowTemplateEditedContentRect</string>
- <string>5.ImportedFromIB2</string>
<string>6.IBPluginDependency</string>
- <string>6.ImportedFromIB2</string>
<string>71.IBPluginDependency</string>
- <string>71.ImportedFromIB2</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -1012,41 +1015,23 @@ b3Rhei4KClR5dG8gaW5mb3JtYWNlIGJ5IG3Em2xpIGLDvXQgb2Rlc2zDoW55Og</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
- <string>{{312, 908}, {438, 168}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{312, 908}, {438, 168}}</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
@@ -1061,15 +1046,117 @@ b3Rhei4KClR5dG8gaW5mb3JtYWNlIGJ5IG3Em2xpIGLDvXQgb2Rlc2zDoW55Og</string>
<reference key="dict.values" ref="0"/>
</object>
<nil key="sourceID"/>
- <int key="maxID">185</int>
+ <int key="maxID">186</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">SUUpdatePermissionPrompt</string>
+ <string key="superclassName">SUWindowController</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>finishPrompt:</string>
+ <string>toggleMoreInfo:</string>
+ </object>
+ <object class="NSArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>finishPrompt:</string>
+ <string>toggleMoreInfo:</string>
+ </object>
+ <object class="NSArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBActionInfo">
+ <string key="name">finishPrompt:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">toggleMoreInfo:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>descriptionTextField</string>
+ <string>moreInfoButton</string>
+ <string>moreInfoView</string>
+ <string>profileTableView</string>
+ </object>
+ <object class="NSArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSTextField</string>
+ <string>NSButton</string>
+ <string>NSView</string>
+ <string>NSTableView</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>descriptionTextField</string>
+ <string>moreInfoButton</string>
+ <string>moreInfoView</string>
+ <string>profileTableView</string>
+ </object>
+ <object class="NSArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBToOneOutletInfo">
+ <string key="name">descriptionTextField</string>
+ <string key="candidateClassName">NSTextField</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">moreInfoButton</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">moreInfoView</string>
+ <string key="candidateClassName">NSView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">profileTableView</string>
+ <string key="candidateClassName">NSTableView</string>
+ </object>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/SUUpdatePermissionPrompt.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SUWindowController</string>
+ <string key="superclassName">NSWindowController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/SUWindowController.h</string>
+ </object>
+ </object>
+ </object>
</object>
- <object class="IBClassDescriber" key="IBDocument.Classes"/>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
<integer value="1050" key="NS.object.0"/>
</object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+ <real value="1070" key="NS.object.0"/>
+ </object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
<integer value="3100" key="NS.object.0"/>
@@ -1083,7 +1170,7 @@ b3Rhei4KClR5dG8gaW5mb3JtYWNlIGJ5IG3Em2xpIGLDvXQgb2Rlc2zDoW55Og</string>
<string>NSApplicationIcon</string>
<string>NSSwitch</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>{128, 128}</string>
<string>{15, 15}</string>
404 da.lproj/SUUpdatePermissionPrompt.xib
View
@@ -2,32 +2,32 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">11A453</string>
- <string key="IBDocument.InterfaceBuilderVersion">1553</string>
- <string key="IBDocument.AppKitVersion">1120</string>
- <string key="IBDocument.HIToolboxVersion">556.00</string>
+ <string key="IBDocument.SystemVersion">12B19</string>
+ <string key="IBDocument.InterfaceBuilderVersion">2549</string>
+ <string key="IBDocument.AppKitVersion">1187</string>
+ <string key="IBDocument.HIToolboxVersion">624.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">1553</string>
+ <string key="NS.object.0">2549</string>
</object>
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSUserDefaultsController</string>
- <string>NSScroller</string>
<string>NSArrayController</string>
<string>NSButton</string>
- <string>NSScrollView</string>
- <string>NSImageView</string>
- <string>NSTextFieldCell</string>
<string>NSButtonCell</string>
+ <string>NSCustomObject</string>
+ <string>NSCustomView</string>
<string>NSImageCell</string>
+ <string>NSImageView</string>
+ <string>NSScrollView</string>
+ <string>NSScroller</string>
+ <string>NSTableColumn</string>
<string>NSTableView</string>
- <string>NSCustomView</string>
- <string>NSCustomObject</string>
+ <string>NSTextField</string>
+ <string>NSTextFieldCell</string>
+ <string>NSUserDefaultsController</string>
<string>NSView</string>
<string>NSWindowTemplate</string>
- <string>NSTextField</string>
- <string>NSTableColumn</string>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -72,10 +72,11 @@
<int key="NSvFlags">257</int>
<string key="NSFrame">{{286, 12}, {138, 32}}</string>
<reference key="NSSuperview" ref="19909334"/>
+ <reference key="NSWindow"/>
<int key="NSTag">1</int>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="180510974">
- <int key="NSCellFlags">-2080244224</int>
+ <int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Søg automatisk</string>
<object class="NSFont" key="NSSupport" id="300829717">
@@ -85,7 +86,7 @@
</object>
<reference key="NSControlView" ref="420538904"/>
<int key="NSTag">1</int>
- <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">1</int>
<reference key="NSAlternateImage" ref="300829717"/>
<string key="NSAlternateContents"/>
@@ -93,20 +94,22 @@
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="255538383">
<reference key="NSNextResponder" ref="19909334"/>
<int key="NSvFlags">257</int>
<string key="NSFrame">{{192, 12}, {94, 32}}</string>
<reference key="NSSuperview" ref="19909334"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="480556731">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Søg ikke</string>
<reference key="NSSupport" ref="300829717"/>
<reference key="NSControlView" ref="255538383"/>
- <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">1</int>
<reference key="NSAlternateImage" ref="300829717"/>
<string key="NSAlternateContents"/>
@@ -114,15 +117,17 @@
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="158215833">
<reference key="NSNextResponder" ref="19909334"/>
<int key="NSvFlags">264</int>
<string key="NSFrame">{{104, 114}, {289, 34}}</string>
<reference key="NSSuperview" ref="19909334"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="1061731650">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">272629760</int>
<string key="NSContents">Søg automatisk efter opdateringer?</string>
<object class="NSFont" key="NSSupport">
@@ -150,15 +155,17 @@
</object>
</object>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="747062516">
<reference key="NSNextResponder" ref="19909334"/>
<int key="NSvFlags">266</int>
<string key="NSFrame">{{104, 81}, {315, 42}}</string>
<reference key="NSSuperview" ref="19909334"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="198855815">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">272629760</int>
<string key="NSContents">DO NOT LOCALIZE</string>
<object class="NSFont" key="NSSupport" id="26">
@@ -170,20 +177,22 @@
<reference key="NSBackgroundColor" ref="164399822"/>
<reference key="NSTextColor" ref="980236278"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="674115502">
<reference key="NSNextResponder" ref="19909334"/>
<int key="NSvFlags">264</int>
<string key="NSFrame">{{104, 53}, {278, 18}}</string>
<reference key="NSSuperview" ref="19909334"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="104979655">
- <int key="NSCellFlags">-2080244224</int>
+ <int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">163840</int>
<string key="NSContents">Inkluder anonym systemprofil</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="674115502"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<object class="NSCustomResource" key="NSNormalImage">
<string key="NSClassName">NSImage</string>
@@ -197,6 +206,7 @@
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSImageView" id="834319590">
<reference key="NSNextResponder" ref="19909334"/>
@@ -215,9 +225,10 @@
</object>
<string key="NSFrame">{{23, 84}, {64, 64}}</string>
<reference key="NSSuperview" ref="19909334"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSImageCell" key="NSCell" id="363272652">
- <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags">134217728</int>
<int key="NSCellFlags2">33554432</int>
<object class="NSCustomResource" key="NSContents">
<string key="NSClassName">NSImage</string>
@@ -228,6 +239,7 @@
<int key="NSStyle">0</int>
<bool key="NSAnimates">YES</bool>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<bool key="NSEditable">YES</bool>
</object>
<object class="NSButton" id="18345840">
@@ -235,26 +247,29 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{80, 50}, {27, 26}}</string>
<reference key="NSSuperview" ref="19909334"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="841689320">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134250496</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="300829717"/>
<reference key="NSControlView" ref="18345840"/>
- <int key="NSButtonFlags">-1194573569</int>
+ <int key="NSButtonFlags">-1194573824</int>
<int key="NSButtonFlags2">133</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</object>
<string key="NSFrameSize">{438, 168}</string>
<reference key="NSSuperview"/>
+ <reference key="NSWindow"/>
</object>
- <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
+ <string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
<string key="NSMinSize">{213, 129}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
<bool key="NSWindowIsRestorable">YES</bool>
@@ -268,9 +283,6 @@
<string>displayKey</string>
</object>
<object class="_NSManagedProxy" key="_NSManagedProxy"/>
- <bool key="NSAvoidsEmptySelection">YES</bool>
- <bool key="NSPreservesSelection">YES</bool>
- <bool key="NSSelectsInsertedObjects">YES</bool>
<bool key="NSFilterRestrictsInsertion">YES</bool>
<bool key="NSClearsFilterPredicateOnInsertion">YES</bool>
</object>
@@ -295,6 +307,8 @@
<string key="NSFrameSize">{353, 113}</string>
<reference key="NSSuperview" ref="762482107"/>
<bool key="NSEnabled">YES</bool>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <bool key="NSControlAllowsExpansionToolTips">YES</bool>
<object class="_NSCornerView" key="NSCornerView">
<nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
@@ -307,7 +321,7 @@
<double key="NSMinWidth">40</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
@@ -323,7 +337,7 @@
</object>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="119446879">
- <int key="NSCellFlags">69336577</int>
+ <int key="NSCellFlags">69206017</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Text Cell</string>
<reference key="NSSupport" ref="26"/>
@@ -348,7 +362,7 @@
<double key="NSMinWidth">40</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
@@ -356,7 +370,7 @@
<reference key="NSTextColor" ref="47174834"/>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="52012935">
- <int key="NSCellFlags">69336577</int>
+ <int key="NSCellFlags">69206017</int>
<int key="NSCellFlags2">131072</int>
<string key="NSContents">Text Cell</string>
<reference key="NSSupport" ref="26"/>
@@ -410,6 +424,7 @@
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{-22, 1}, {11, 125}}</string>
<reference key="NSSuperview" ref="14470222"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSsFlags">256</int>
<reference key="NSTarget" ref="14470222"/>
<string key="NSAction">_doScroller:</string>
@@ -420,6 +435,7 @@
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{-100, -100}, {345, 11}}</string>
<reference key="NSSuperview" ref="14470222"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSsFlags">257</int>
<reference key="NSTarget" ref="14470222"/>
<string key="NSAction">_doScroller:</string>
@@ -434,6 +450,9 @@
<reference key="NSHScroller" ref="509707680"/>
<reference key="NSContentView" ref="762482107"/>
<bytes key="NSScrollAmts">AAAAAAAAAABBgAAAQYAAAA</bytes>
+ <double key="NSMinMagnification">0.25</double>
+ <double key="NSMaxMagnification">4</double>
+ <double key="NSMagnification">1</double>
</object>
<object class="NSTextField" id="423314383">
<reference key="NSNextResponder" ref="642834505"/>
@@ -442,7 +461,7 @@
<reference key="NSSuperview" ref="642834505"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="636457257">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">272629760</int>
<string type="base64-UTF8" key="NSContents">T3BseXNuaW5nZXIgb20gYW5vbnltIHN5c3RlbXByb2ZpbCBicnVnZXMgdGlsIGF0IGhqw6ZscGUgb3Mg
bWVkIGF0IHBsYW5sw6ZnZ2UgdWR2aWtsaW5nc2FyYmVqZGUgaSBmcmVtdGlkZW4uIEtvbnRha3Qgb3Ms
@@ -453,6 +472,7 @@ ZXM6A</string>
<reference key="NSBackgroundColor" ref="164399822"/>
<reference key="NSTextColor" ref="980236278"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</object>
<string key="NSFrameSize">{362, 205}</string>
@@ -472,22 +492,6 @@ ZXM6A</string>
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
- <object class="IBBindingConnection" key="connection">
- <string key="label">contentArray: systemProfileInformationArray</string>
- <reference key="source" ref="814411255"/>
- <reference key="destination" ref="1069054362"/>
- <object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="814411255"/>
- <reference key="NSDestination" ref="1069054362"/>
- <string key="NSLabel">contentArray: systemProfileInformationArray</string>
- <string key="NSBinding">contentArray</string>
- <string key="NSKeyPath">systemProfileInformationArray</string>
- <int key="NSNibBindingConnectorVersion">2</int>
- </object>
- </object>
- <int key="connectionID">25</int>
- </object>
- <object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">window</string>
<reference key="source" ref="1069054362"/>
@@ -504,22 +508,6 @@ ZXM6A</string>
<int key="connectionID">127</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBBindingConnection" key="connection">
- <string key="label">value: icon</string>
- <reference key="source" ref="834319590"/>
- <reference key="destination" ref="1069054362"/>
- <object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="834319590"/>
- <reference key="NSDestination" ref="1069054362"/>
- <string key="NSLabel">value: icon</string>
- <string key="NSBinding">value</string>
- <string key="NSKeyPath">icon</string>
- <int key="NSNibBindingConnectorVersion">2</int>
- </object>
- </object>
- <int key="connectionID">130</int>
- </object>
- <object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">toggleMoreInfo:</string>
<reference key="source" ref="1069054362"/>
@@ -544,24 +532,60 @@ ZXM6A</string>
<int key="connectionID">133</int>
</object>
<object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">finishPrompt:</string>
+ <reference key="source" ref="1069054362"/>
+ <reference key="destination" ref="420538904"/>
+ </object>
+ <int key="connectionID">144</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">finishPrompt:</string>
+ <reference key="source" ref="1069054362"/>
+ <reference key="destination" ref="255538383"/>
+ </object>
+ <int key="connectionID">145</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">profileTableView</string>
+ <reference key="source" ref="1069054362"/>
+ <reference key="destination" ref="218837903"/>
+ </object>
+ <int key="connectionID">186</int>
+ </object>
+ <object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
- <string key="label">hidden: shouldAskAboutProfile</string>
- <reference key="source" ref="18345840"/>
+ <string key="label">contentArray: systemProfileInformationArray</string>
+ <reference key="source" ref="814411255"/>
<reference key="destination" ref="1069054362"/>
<object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="18345840"/>
+ <reference key="NSSource" ref="814411255"/>
<reference key="NSDestination" ref="1069054362"/>
- <string key="NSLabel">hidden: shouldAskAboutProfile</string>
- <string key="NSBinding">hidden</string>
- <string key="NSKeyPath">shouldAskAboutProfile</string>
- <object class="NSDictionary" key="NSOptions">
- <string key="NS.key.0">NSValueTransformerName</string>
- <string key="NS.object.0">NSNegateBoolean</string>
- </object>
+ <string key="NSLabel">contentArray: systemProfileInformationArray</string>
+ <string key="NSBinding">contentArray</string>
+ <string key="NSKeyPath">systemProfileInformationArray</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
- <int key="connectionID">139</int>
+ <int key="connectionID">25</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: promptDescription</string>
+ <reference key="source" ref="747062516"/>
+ <reference key="destination" ref="1069054362"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="747062516"/>
+ <reference key="NSDestination" ref="1069054362"/>
+ <string key="NSLabel">value: promptDescription</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">promptDescription</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">161</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
@@ -584,22 +608,6 @@ ZXM6A</string>
<int key="connectionID">143</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">finishPrompt:</string>
- <reference key="source" ref="1069054362"/>
- <reference key="destination" ref="420538904"/>
- </object>
- <int key="connectionID">144</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">finishPrompt:</string>
- <reference key="source" ref="1069054362"/>
- <reference key="destination" ref="255538383"/>
- </object>
- <int key="connectionID">145</int>
- </object>
- <object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">value: shouldSendProfile</string>
<reference key="source" ref="674115502"/>
@@ -617,7 +625,7 @@ ZXM6A</string>
<string>NSNullPlaceholder</string>
<string>NSValidatesImmediately</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="1"/>
<boolean value="YES"/>
@@ -630,19 +638,35 @@ ZXM6A</string>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
- <string key="label">value: promptDescription</string>
- <reference key="source" ref="747062516"/>
+ <string key="label">value: icon</string>
+ <reference key="source" ref="834319590"/>
<reference key="destination" ref="1069054362"/>
<object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="747062516"/>
+ <reference key="NSSource" ref="834319590"/>
<reference key="NSDestination" ref="1069054362"/>
- <string key="NSLabel">value: promptDescription</string>
+ <string key="NSLabel">value: icon</string>
<string key="NSBinding">value</string>
- <string key="NSKeyPath">promptDescription</string>
+ <string key="NSKeyPath">icon</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
- <int key="connectionID">161</int>
+ <int key="connectionID">130</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: arrangedObjects.displayKey</string>
+ <reference key="source" ref="714298454"/>
+ <reference key="destination" ref="814411255"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="714298454"/>
+ <reference key="NSDestination" ref="814411255"/>
+ <string key="NSLabel">value: arrangedObjects.displayKey</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">arrangedObjects.displayKey</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">174</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
@@ -662,19 +686,23 @@ ZXM6A</string>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
- <string key="label">value: arrangedObjects.displayKey</string>
- <reference key="source" ref="714298454"/>
- <reference key="destination" ref="814411255"/>
+ <string key="label">hidden: shouldAskAboutProfile</string>
+ <reference key="source" ref="18345840"/>
+ <reference key="destination" ref="1069054362"/>
<object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="714298454"/>
- <reference key="NSDestination" ref="814411255"/>
- <string key="NSLabel">value: arrangedObjects.displayKey</string>
- <string key="NSBinding">value</string>
- <string key="NSKeyPath">arrangedObjects.displayKey</string>
+ <reference key="NSSource" ref="18345840"/>
+ <reference key="NSDestination" ref="1069054362"/>
+ <string key="NSLabel">hidden: shouldAskAboutProfile</string>
+ <string key="NSBinding">hidden</string>
+ <string key="NSKeyPath">shouldAskAboutProfile</string>
+ <object class="NSDictionary" key="NSOptions">
+ <string key="NS.key.0">NSValueTransformerName</string>
+ <string key="NS.object.0">NSNegateBoolean</string>
+ </object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
- <int key="connectionID">174</int>
+ <int key="connectionID">139</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
@@ -931,12 +959,11 @@ ZXM6A</string>
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <string>-1.IBPluginDependency</string>
+ <string>-2.IBPluginDependency</string>
<string>-3.IBPluginDependency</string>
- <string>-3.ImportedFromIB2</string>
<string>13.IBPluginDependency</string>
- <string>13.ImportedFromIB2</string>
<string>14.IBPluginDependency</string>
- <string>14.ImportedFromIB2</string>
<string>176.IBPluginDependency</string>
<string>177.IBPluginDependency</string>
<string>178.IBPluginDependency</string>
@@ -950,51 +977,29 @@ ZXM6A</string>
<string>185.IBPluginDependency</string>
<string>185.IBShouldRemoveOnLegacySave</string>
<string>24.IBPluginDependency</string>
- <string>24.ImportedFromIB2</string>
<string>32.IBPluginDependency</string>
- <string>32.ImportedFromIB2</string>
<string>33.IBPluginDependency</string>
- <string>33.ImportedFromIB2</string>
<string>34.IBPluginDependency</string>
- <string>34.ImportedFromIB2</string>
<string>37.IBPluginDependency</string>
- <string>37.ImportedFromIB2</string>
- <string>39.IBEditorWindowLastContentRect</string>
<string>39.IBPluginDependency</string>
- <string>39.ImportedFromIB2</string>
<string>40.IBPluginDependency</string>
- <string>40.ImportedFromIB2</string>
<string>41.IBPluginDependency</string>
- <string>41.ImportedFromIB2</string>
<string>42.IBPluginDependency</string>
- <string>42.ImportedFromIB2</string>
<string>43.IBPluginDependency</string>
- <string>43.ImportedFromIB2</string>
<string>44.IBPluginDependency</string>
- <string>44.ImportedFromIB2</string>
<string>45.IBPluginDependency</string>
- <string>45.ImportedFromIB2</string>
<string>46.IBPluginDependency</string>
- <string>46.ImportedFromIB2</string>
<string>49.IBPluginDependency</string>
- <string>49.ImportedFromIB2</string>
- <string>5.IBEditorWindowLastContentRect</string>
<string>5.IBPluginDependency</string>
<string>5.IBWindowTemplateEditedContentRect</string>
- <string>5.ImportedFromIB2</string>
<string>6.IBPluginDependency</string>
- <string>6.ImportedFromIB2</string>
<string>71.IBPluginDependency</string>
- <string>71.ImportedFromIB2</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -1004,46 +1009,29 @@ ZXM6A</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
- <string>{{312, 917}, {362, 205}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
- <string>{{312, 977}, {438, 168}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{312, 977}, {438, 168}}</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <boolean value="YES"/>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
@@ -1058,15 +1046,117 @@ ZXM6A</string>
<reference key="dict.values" ref="0"/>
</object>
<nil key="sourceID"/>
- <int key="maxID">185</int>
+ <int key="maxID">186</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">SUUpdatePermissionPrompt</string>
+ <string key="superclassName">SUWindowController</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>finishPrompt:</string>
+ <string>toggleMoreInfo:</string>
+ </object>
+ <object class="NSArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>finishPrompt:</string>
+ <string>toggleMoreInfo:</string>
+ </object>
+ <object class="NSArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBActionInfo">
+ <string key="name">finishPrompt:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">toggleMoreInfo:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>descriptionTextField</string>
+ <string>moreInfoButton</string>
+ <string>moreInfoView</string>
+ <string>profileTableView</string>
+ </object>
+ <object class="NSArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSTextField</string>
+ <string>NSButton</string>
+ <string>NSView</string>
+ <string>NSTableView</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>descriptionTextField</string>
+ <string>moreInfoButton</string>
+ <string>moreInfoView</string>
+ <string>profileTableView</string>
+ </object>
+ <object class="NSArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBToOneOutletInfo">
+ <string key="name">descriptionTextField</string>
+ <string key="candidateClassName">NSTextField</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">moreInfoButton</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">moreInfoView</string>
+ <string key="candidateClassName">NSView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">profileTableView</string>
+ <string key="candidateClassName">NSTableView</string>
+ </object>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/SUUpdatePermissionPrompt.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SUWindowController</string>
+ <string key="superclassName">NSWindowController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">./Classes/SUWindowController.h</string>
+ </object>
+ </object>
+ </object>
</object>
- <object class="IBClassDescriber" key="IBDocument.Classes"/>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
<integer value="1050" key="NS.object.0"/>
</object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+ <real value="1070" key="NS.object.0"/>
+ </object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
<integer value="3100" key="NS.object.0"/>
@@ -1080,7 +1170,7 @@ ZXM6A</string>
<string>NSApplicationIcon</string>
<string>NSSwitch</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>{128, 128}</string>
<string>{15, 15}</string>
411 de.lproj/SUUpdatePermissionPrompt.xib
View
@@ -2,43 +2,40 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">11A453</string>
- <string key="IBDocument.InterfaceBuilderVersion">1553</string>
- <string key="IBDocument.AppKitVersion">1120</string>
- <string key="IBDocument.HIToolboxVersion">556.00</string>
+ <string key="IBDocument.SystemVersion">12B19</string>
+ <string key="IBDocument.InterfaceBuilderVersion">2549</string>
+ <string key="IBDocument.AppKitVersion">1187</string>
+ <string key="IBDocument.HIToolboxVersion">624.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">1553</string>
+ <string key="NS.object.0">2549</string>
</object>
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">