Где сохранить информацию о кросс-приложении на Mac - PullRequest
1 голос
/ 11 января 2012

У меня есть приложение A, которому нужно запустить приложение B.

Пользователь может выбрать, куда установить B. Это означает, что мне нужен способ, чтобы A знал путь к месту нахождения B.

B и A устанавливаются отдельно, и нет уверенности в том, какой из них будет установлен первым или даже в том, что оба установлены.

Это означает, что установщик B должен записать в какое-то общее публичное место путьгде B был установлен, так что A может позже прочитать это и найти B.

Мои приложения написаны на Java и могут быть установлены как на Windows, так и на Mac.

В Windows решение состоит в том, чтобы записать путь к реестру.Я новичок в Mac.Как правильно сделать это на Mac.

Где одно приложение может записать данные, которые может прочитать другое приложение?

Спасибо, Шахар

Ответы [ 4 ]

2 голосов
/ 11 января 2012

Мой ответ будет примерно таким:

Зависит от того, будет ли приложение работать в контексте для каждого пользователя или для каждого компьютера (т.е. для всех пользователей).

Это похоже на какое-то предпочтение или настройку, в которой вы хотите записать файл предпочтений в папку «Предпочтения» пользователя, которая обычно находится в /Users/_______/Library/Preferences/ (заполните _____ пробелом с именем учетной записи пользователя).

Я не уверен, что это будет работать с Java, хотя.Как установить приложение Java?Скачано из браузера или?

0 голосов
/ 17 января 2012

Обычно информация о приложениях, установленных на Mac, хранится в папке «Квитанции».

  • для Mac 10.6: / private / var / db / Receipts,
  • для Mac 10.5: / Библиотека / Квитанции /,

так что вам не нужно делать ничего другого в установщике B, вы можете просто пройти через вышеуказанную папку квитанций и найти соответствующий пакет (* .pkg) с любым языком в A, реальный путь к этому приложению находится в info.plist файле в папке содержимого этого файла .pkg.

надеюсь, это поможет.

0 голосов
/ 11 января 2012

Чтобы быть «родным», вы можете позвонить в Launch Services, чтобы найти приложение на основе его идентификатора пакета - для этого необходимо, чтобы приложение, которое нужно «найти», находилось в комплекте .app и имело правильный тип (com.yourname.appname ) идентификатор назначен. Вы должны быть в состоянии вызвать LSFindApplicationForInfo из сценария оболочки - для него, похоже, есть небольшая двоичная оболочка.

0 голосов
/ 11 января 2012

Вы можете изменить свой установщик для записи системной переменной среды, такой как PROD_B_HOME.Затем вы можете прочитать переменную из Java.

From: 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));
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...