2014-05-25 29 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

非常感谢。 –

相关问题