2012-01-11 55 views
1

我有一个需要启动应用程序B.何处保存跨应用程序信息的MAC

用户应用程序A可以选择安装B.这意味着,我需要一种方法,以知道在哪里的路径B位于。

B和A是分开安装的,不能保证哪个将被首先安装,甚至不能安装。

这意味着B的安装人员来写一些常用的公共场所,其中B安装所以A可以在以后阅读,找到B的路径

我的应用程序是用Java编写的,并在可能被同时安装Windows和Mac。

在windows上,解决方案是编写注册表的路径。我是Mac新手。在Mac上执行此操作的正确方法是什么?

一个应用程序可以在哪里写入另一个应用程序可以读取的数据?

感谢, 沙哈尔

+0

我至少会为每个操作系统设置默认路径,这样用户不一定必须选择安装位置,然后程序可以搜索这些初始默认值。 – Max 2012-01-11 14:53:00

回答

2

我的答案是这样的:

取决于如果应用程序是要在每个用户的上下文或每台计算机(即对所有用户)上下文中运行。

这看起来像是某种偏好或设置,您希望将首选项文件写入用户的“首选项”文件夹中,该文件夹通常位于/Users/_______/Library/Preferences/(使用用户的帐户名填写_____空白处)。

我不确定这是否会从Java工作。 Java应用程序如何安装?从浏览器下载或?

+0

该应用程序为所有用户安装一次,并为每个用户(其UI应用程序)运行。用户从磁盘而不是从互联网安装应用程序。 – Shahar 2012-01-11 15:01:16

+0

我认为'Preferences'应该只包含'plist'文件。如果你想要自由格式数据的目录(可能在跨平台的应用程序),我会建议'〜/ Library/Application Support/ 2012-01-11 15:11:53

+0

Hi @EdwardThomson;当然,'应用程序支持'也可以工作(我不记得在任何地方,苹果喜欢'Preferences'中的所有文件都是plist,tho)。如果Shahar从磁盘安装,他可能会使用特定于Mac的PackageMaker安装程序(whee!),然后他可以暂时拥有根/管理权限以将设置文件安装到'/ Library/Application Support /'(或'/ Library/Preferences“),这是设置在机器的所有*用户之间共享的地方。 – 2012-01-11 15:52:42

0

您可以修改安装程序以编写像PROD_B_HOME这样的系统环境变量。然后你可以从Java读取变量。

来源:http://docs.oracle.com/javase/tutorial/essential/environment/env.html

在Java平台上,应用程序使用System.getEnv来获取环境变量的值。如果没有参数,getEnv将返回java.util.Map的只读实例,其中映射关键字是环境变量名称,映射值是环境变量值。这表现在EnvMap例如:

import java.util.Map; 

public class EnvMap { 
    public static void main (String[] args) { 
     Map<String, String> env = System.getenv(); 
     for (String envName : env.keySet()) { 
      System.out.format("%s=%s%n", 
           envName, 
           env.get(envName)); 
     } 
    } 
} 
0

要“本地人”,你可以叫发射服务发现基于其捆绑ID的应用程序 - 这需要应用程序被“发现”是在.app捆绑并且具有分配的适当的(com.yourname.appname类型)标识符。你应该可以从shell脚本中调用LSFindApplicationForInfo - 它似乎有一个小的二进制包装器。

0

通常,安装在Mac上的应用程序的信息存储在“收据”文件夹下。

  • 为Mac 10.6:/私营/无功/ DB /收据,
  • 为Mac 10。5:/库/收益/,

所以你不必做任何事情B的安装程序中的不同,你可以简单地去通过上面的收据文件夹,找到相关的包(* .pkg)的任何A中的语言,该应用程序的真实路径可以在该.pkg文件的内容文件夹下的info.plist文件中找到。

希望它有帮助。

相关问题