2014-05-25 32 views
0

我正在構建一個桌面應用程序,它在安裝過程中創建一個服務(守護進程)。哪裏存儲不應該移動的服務(OSX應用程序安裝)?

但是,在註冊服務之前,我想將此服務的文件安裝到與應用程序的目錄不同的位置 - 用戶可能想要將應用程序從應用程序目錄中移出,並且如果服務更改位置在操作系統的下一個開始,它將不會被找到,我的應用程序將無法找到它。

我應該在哪裏安裝服務?

在此先感謝。

更新:

是 「〜/資源庫/服務」 正確的地方?

或者,也許,「/ Drivename /圖書館/服務」爲多用戶使用?

回答

1

這個問題有一個術語含糊不清,它可能會導致你一些困難,以確定在哪裏找到你的文件。

在OSX中,一個服務可以有兩個方面的含義,其中之一是與該響應的應用中服務菜單項執行的代碼,這就是存儲在各種/Library/Services/System/Library/Services~/Library/Services目錄,所以你不想把它們放在那裏。

守護程序控制文件放置

假設大約一個守護進程(你在你的消息的文本明確提到),那麼你會想將它放在LaunchAgentLaunchDaemon目錄和使用一個launchd爲您啓動守護進程。對於launchd目的,代理程序按用戶運行,守護程序按系統運行(差異在於運行多少個副本)。

對於單個用戶使用並在用戶登錄時啓動的守護程序/服務,其配置文件可能存儲在~/Library/LaunchAgents中,這將允許系統在用戶登錄到系統時將其踢出。如果您需要隨時可用的內容(即在系統啓動時啓動),則需要獲取權限並安裝在/Library/LaunchDaemons位置。

這就是配置文件,用於launchd的故事,但它並沒有解決直接在哪裏把可執行文件,以避免它們被斷開連接,如果用戶重新定位/Applications文件夾以外的應用問題。

守護程序可執行文件放置

這些天,較少的用戶正在應用了/Applications文件夾,除非他們有意卸載或禁用它們,所以你可能希望避免試圖阻止這一點。相反,啓動應用程序時,應驗證守護程序是否正在運行,如果不是,請使用應用程序的內部Library文件夾作爲launchd配置引用的代碼的存儲庫來安裝並激活相應的launchd配置。

如果您選擇單獨存儲它們,則應將它們放入~/Library/Application Support/(your app's id)/Library/Application Support/(your app's id),具體取決於您是按用戶安裝還是按計算機安裝。通常,後者是優選的。

+0

非常感謝。 –

相關問題