Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как запустить дочерний процесс на Маке?


giveaway

Вопрос

Рекомендуемые сообщения

  • 1
4 часа назад, giveaway сказал:

Хочу чтобы мое приложение под Мак запускало unrar с ключом для распаковки архивов. Как это вообще сделать?

Пытаетесь обновить свой проект?

Ссылка на комментарий
  • 0

Пока все пишу прежний. Под Мак просто ужас, а не программирование)

Приложение должно уметь распаковывать архивы rar. Для Мака unrar есть только в виде командной строки. Поэтому нужен запуск дочернего процесса.

Изменено пользователем giveaway
Ссылка на комментарий
  • 0
48 минут назад, giveaway сказал:

Пока все пишу прежний. Под Мак просто ужас, а не программирование)

Приложение должно уметь распаковывать архивы rar. Для Мака unrar есть только в виде командной строки. Поэтому нужен запуск дочернего процесса.

да, нет. Я про то, что вы пытаетесь скачать обновление своей же программы разархивировать и заменить? Или вы не это пытаетесь сделать?

Ссылка на комментарий
  • 0

А нет, не обновление. Скачиваются сторонние файлы. Программа представляет собой некоторую смесь качалки и распаковщика для полных ламеров, у которых данные операции почему-то очень часто вызывают проблемы.

Ссылка на комментарий
  • 0

Вот пример как у меня идет добавление в архив используя zip в MacOS:

function ZipAdd(AArchName, AFileName: String): boolean;
{$IFDEF MACOS}
var
  s, sRoot, sFileName, sArchName: String;
{$ENDIF}
begin
  Result := False;

{$IFDEF MACOS}
  try
    if DirectoryExists(AFileName) then
    begin
      if AFileName[AFileName.Length] = PathDelim then
        System.Delete(AFileName, AFileName.Length, 1);
      sRoot := ExtractFilePath(AFileName);
      AFileName := AFileName.Remove(0, sRoot.Length);
      s := Format('pushd "%s"; zip -r "%s" "%s"; popd', [sRoot, AArchName, AFileName]);
      _system(PAnsiChar(UTF8String(s)));
    end
    else
    begin
      s := Format('zip -j "%s" "%s"', [AArchName, AFileName]);
      _system(PAnsiChar(UTF8String(s)));
    end;

    Result := FileExists(AArchName);
  except
    Result := False;
  end;
{$ENDIF}
end;

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

Изменено пользователем dnekrasov
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...