2014-02-19 94 views
1

我創建它收集安裝的應用程序在OS X中的信息的應用查找版本OS X

我試圖找到安裝在應用程序文件夾中的所有應用程序與".app"擴展

我創建了一個函數,可以獲取已安裝應用程序的一些信息,但我正在尋找更多數據,如版本,捆綁ID和其他有用信息。

這裏是我的方法來獲取屬性:

- (NSDictionary *) attributesForFile:(NSURL *)anURI fileName 
            :(NSString*)fileName{ 

    // note: singleton is not thread-safe 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSString *aPath = [anURI path]; 

    if (![fileManager fileExistsAtPath:aPath]) return nil; 

    NSError *attributesRetrievalError = nil; 
    NSDictionary *attributes = [fileManager attributesOfItemAtPath:aPath 
                  error:&attributesRetrievalError]; 

    if (!attributes) { 
     NSLog(@"Error for file at %@: %@", aPath, attributesRetrievalError); 
     return nil; 
    } 


    NSMutableDictionary *returnedDictionary = 
    [NSMutableDictionary dictionaryWithObjectsAndKeys: 
    [attributes fileType], @"fileType", 
    [attributes fileModificationDate], @"fileModificationDate", 
    [attributes fileCreationDate], @"fileCreationDate", 
    [attributes fileOwnerAccountName],@"fileOwnerAccount", 
    fileName,@"fileName", 
    [NSNumber numberWithUnsignedLongLong:[attributes fileSize]], @"fileSize", 
    nil]; 

    return returnedDictionary; 
} 

回答

2
  1. 你爲什麼要通過既有NSURL參數和NSString一個?

  2. 你可以得到你從應用程序的NSBundle尋找信息:

    NSBundle *myBundle = [NSBundle bundleWithPath:@"/Applications/SomeApp.app"]; 
    NSLog(@"%@", [myBundle infoDictionary]); 
    
+0

使用鍵「CFBundleVersion」 –

+0

感謝您的回答,但幸運的是我想通出來一樣;)也有一些有趣的事情! –

2
term> /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -dump | grep '.app' | grep '.path' 
+0

可以請你詳細說明如何得到這個,我是新的mac os x –

+0

鍵入上述命令到終端窗口。很多spew。您可能需要捕獲它並使用編輯器進行搜索。 – geowar