2012-01-11 2 views
1

У меня есть приложение, что необходимо для запуска приложения B.Где сохранить перекрестное данные приложения на макинтош

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

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

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

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

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

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

Спасибо, Shahar

+0

Я бы по крайней мере имел пути по умолчанию для каждой ОС, поэтому пользователю необязательно выбирать, куда будут проходить установки, а затем ваша программа может выполнять поиск по умолчанию. – Max

ответ

2

Мой ответ был бы что-то вроде:

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

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

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

+0

Приложения устанавливаются один раз для всех пользователей и запускаются для каждого пользователя (его пользовательского интерфейса). Пользователь устанавливает приложение с диска, а не из Интернета. – Shahar

+0

Я бы сказал, что 'Preferences' должен содержать только файлы plist. Если вам нужен каталог для данных свободной формы (вероятно, в кросс-платформенном приложении), я бы предложил '~/Library/Application Support/' –

+0

Hi @EdwardThomson; Конечно, «Поддержка приложений» также будет работать (я не помню, чтобы видеть, где Apple предпочитает, чтобы все файлы в «Предпочтениях» были plist, tho). Если Shahar устанавливает с диска, он потенциально может использовать установщик PackageMaker для Mac (whee!), А затем он может мгновенно получить доступ к root/admin для установки файлов настроек в '/ Library/Application Support /' (или '/ Library/Preferences'), которые являются местами для настроек, которые будут доступны всем * всем * пользователям машины. –

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

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

0

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

  • для Mac 10.6:/частных/VAR/дб/Квитанции,
  • для Mac 10.5:/Library/Receipts /,

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

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

Смежные вопросы