我有应用程序A需要启动应用程序B.
用户可以选择安装B的位置。这意味着我需要一种方法让A知道B所在的路径。
B和A是单独安装的,不能保证首先安装哪一个,甚至安装两个。
这意味着B的安装程序必须在某个公共场所写入安装B的路径,以便A稍后可以读取并找到B.
我的应用程序是用Java编写的,可能同时安装在Windows和Mac上。
在Windows上,解决方案是将路径写入注册表。我是Mac的新手。在Mac上执行此操作的正确方法是什么。
一个应用程序在哪里写入另一个应用程序可以读取的数据?
谢谢, 沙哈尔
答案 0 :(得分:2)
我的回答是:
取决于应用程序是在每用户上下文还是每台计算机(即所有用户)上下文中运行。
这似乎是某种偏好或设置,您希望将偏好文件写入用户的“偏好设置”文件夹,该文件夹通常位于/Users/_______/Library/Preferences/
(填写_____
空白处使用用户的帐户名称。)
我不确定这是否适用于Java。如何安装Java应用程序?从浏览器下载或?
答案 1 :(得分: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));
}
}
}
答案 2 :(得分:0)
要成为“本机”,您可以调用Launch Services来查找基于其Bundle ID的应用程序 - 这要求“找到”的应用程序位于.app
包中且具有正确的({{ 1}} type)已分配的标识符。您应该能够从shell脚本中调用com.yourname.appname
- 似乎有一个小的二进制包装器。
答案 3 :(得分:0)
通常,安装在Mac上的应用程序信息存储在“收据”文件夹下。
所以你不必在B的安装程序中做任何不同的事情,你可以简单地浏览上面的收据文件夹并找到A中任何语言的相关包(* .pkg),该应用程序的真实路径可以可以在.pkg文件的内容文件夹下的 info.plist 文件中找到。
希望它有所帮助。