2012-02-15 28 views
0

我的應用程序能夠提取.deb文件,但只有當您指定應用程序中按鈕的位置時纔可以。但我希望能夠點擊.deb文件並打開我的應用程序,運行我已有的操作,然後在完成時退出。現在我正在使用NSWorspace來告訴我的應用程序它可以打開.deb文件,但我不知道如何讓它運行我的操作。是否正在使用NSWorkspace做正確的事情?我還需要能夠獲得以字符串格式打開的文件的文件路徑,我似乎無法抵擋這種情況?如何使用NSWorkspace打開文件類型? - 可可

+0

你可能要考慮制定[基於文檔的應用程序](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Documents/Documents.html),它將提供你想要的功能,同時讓你打開一個帶有按鈕。 – ughoavgfhw 2012-02-16 00:27:10

回答

1

我做了一些測試,這可能也是其他人感興趣的。解決方案是由一個小例子排隊。

在Xcode中創建一個新的Cocoa項目,轉到xib並在窗口中添加一個標籤。我們將用它來證明概念。接下來,一些東西給你的應用程序委託。接口:

#import <Cocoa/Cocoa.h> 

@interface fileClickerAppDelegate : NSObject <NSApplicationDelegate> { 
NSWindow *window; 
NSTextField *fileName; 
} 

@property (assign) IBOutlet NSWindow *window; 
@property (assign) IBOutlet NSTextField *fileName; 

@end 

實施是非常直截了當:

#import "fileClickerAppDelegate.h" 

@implementation fileClickerAppDelegate 

@synthesize window; 
@synthesize fileName; 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 

} 

- (void)application:(NSApplication *)theApplication openFiles:(NSArray *)filenames { 

    [fileName setStringValue:[NSString stringWithFormat:@"Wow, even multiple files like %d :-)", [filenames count]]]; 
} 

@end 

有一個方法來保持眼睛:

應用:openFiles散。

猜猜它是做什麼的?它接收從點擊桌面或查找器上的項目或將文件拖到圖標上傳遞的文件列表。它將傳遞一個包含文件名的數組,以及路徑UNIX樣式。

我的測試並不需要在應用程序的plist中設置「文檔類型」,或者使用查找器進行花哨的註冊。當然,這可能會增加...

這應該解決你的問題,你可以做任何你想要的.deb文件(我認爲debian軟件包?)。

祝你好運!

生活

PS:只是不要忘記到的NSTextField掛接到GUI控制;-)否則,它會工作,但不會顯示任何內容....

+0

謝謝你太棒了!正是我在找的東西,和.deb我的意思是DEBIAN包。但是,應用程序如何知道我正在打開此文件類型? – drewsdunne 2012-03-04 02:40:21

+0

像應用程序不會顯示在finder中作爲可以打開此文件類型的應用程序。我必須手動搜索並打開它 – drewsdunne 2012-03-04 03:52:20

+0

你是什麼意思的「不顯示在發現者」?如果您所指的是「打開方式...」,您必須手動註冊應用程序類型。 首先,去你的plist並添加一個關鍵的「文檔類型」,這將添加一個數組與項目。小心使用正確的鑰匙!該數組包含文檔類型名稱的鍵,值應爲deb。目前處理程序的排名可以單獨保留(參考文檔)。 – 2012-03-04 08:32:01

0

請提供更多有關你在做什麼的信息,也許爲什麼它不起作用, G。崩潰轉儲,gdb輸出等。

如果您不告訴我們我在做什麼,很難猜測可能有什麼幫助。

+0

所以基本上我想我的應用程序打開一個文件,當你在你的桌面上單擊它,就好像它是一個單詞文檔文件,並運行我已經提出的一個動作提取它 – drewsdunne 2012-02-16 02:16:32

+0

我沒有任何代碼,我只是想成爲能夠點擊我的文件類型在發現者,並讓它在我的應用程序中打開並運行某個動作,然後關閉 – drewsdunne 2012-03-02 03:34:51

相關問題