Я использую Mac OS Lion с версией Java 1.6.0_26
Я делаю небольшое приложение для Mac на Java с главным меню для пользователя, чтобы он мог выбрать несколько вариантов.
Одним из них является установка приложения с использованием .pkg
Все работало нормально с этими командами:
File instFolder = new File(System.getProperty("user.dir") + "/foldername/appInstaller.pkg");
String s = "open "+ instFolder.toString();
Process p = Runtime.getRuntime().exec(s);
Затем я понял, что есть проблема, когда Foldername имеетпробелы или если я скопирую этот java-файл с необходимыми подпапками на USB-накопитель с именем «NO NAME» (или именем с пробелами).
Поскольку s станет чем-то вроде:
open / Volumes / NO NAME / имя_фолдера / appInstaller.pkg
или
open / Users / user1 / Desktop / имя папки / appInstaller.pkg
Поэтому при запускеВ процессе p команда завершится, когда на пути появится первый пробел
open / Volumes / NO
или
open / Users / user1 / Desktop / folder
Чтобы попытаться это исправить, я изменил определение s примерно так:
String s = "open "+ "\"" + instFolder.toString() + "\"";
ЭтоСверху работает нормально.Странно то, что если я скопирую значение s (после создания переменной s) и вставлю его в терминал, оно будет работать:
open "/ Users / user1 / Desktop / имя папки / appInstaller.pkg"
но запуск его с Java не работает.
Не могли бы вы мне помочь, пожалуйста?
Спасибо.