]> git.saurik.com Git - uikittools.git/commitdiff
Invalidate the Launch Services icon cache.
authorJay Freeman (saurik) <saurik@saurik.com>
Fri, 1 Jun 2012 05:31:15 +0000 (05:31 +0000)
committerJay Freeman (saurik) <saurik@saurik.com>
Fri, 1 Jun 2012 05:31:15 +0000 (05:31 +0000)
uicache.mm

index 5cc1a1552c7438041af6b9e12c0b602e08bec907..28c518d70697087060f3879c5ae34eba96e9ba7f 100644 (file)
@@ -88,7 +88,7 @@ int main(int argc, const char *argv[]) {
         NSFileManager *manager = [NSFileManager defaultManager];
         NSError *error = nil;
 
-        NSMutableArray *bundles([NSMutableArray arrayWithCapacity:16]);
+        NSMutableDictionary *bundles([NSMutableDictionary dictionaryWithCapacity:16]);
 
         id system = [cache objectForKey:@"System"];
         if (system == nil)
@@ -103,8 +103,8 @@ int main(int argc, const char *argv[]) {
                     NSString *plist = [path stringByAppendingPathComponent:@"Info.plist"];
 
                     if (NSMutableDictionary *info = [NSMutableDictionary dictionaryWithContentsOfFile:plist]) {
-                        if ([info objectForKey:@"CFBundleIdentifier"] != nil) {
-                            [bundles addObject:path];
+                        if (NSString *identifier = [info objectForKey:@"CFBundleIdentifier"]) {
+                            [bundles setObject:path forKey:identifier];
                             [info setObject:path forKey:@"Path"];
                             [info setObject:@"System" forKey:@"ApplicationType"];
                             [system addInfoDictionary:info];
@@ -118,8 +118,11 @@ int main(int argc, const char *argv[]) {
 
         if (workspace != nil)
             for (NSString *bundle in bundles) {
-                [workspace unregisterApplication:[NSURL fileURLWithPath:bundle]];
-                [workspace registerApplication:[NSURL fileURLWithPath:bundle]];
+                NSString *path([bundles objectForKey:identifier]);
+                [workspace unregisterApplication:[NSURL fileURLWithPath:path]];
+                if ([workspace respondsToSelector:@selector(invalidateIconCache:)])
+                    [workspace invalidateIconCache:identifier];
+                [workspace registerApplication:[NSURL fileURLWithPath:path]];
             }
 
         if (false) error: