Цитата:
Сообщение от
Smith
Добрый вечер!
Есть задача заархивировать из аксапты определенный файл в заданный каталог, а затем исходный файл удалить. В связи с этим ряд вопросов:
1. Сам процесс архива? winAPI::shellExecute правильно? Это наверное самый легкий момент, однако если у кого есть готовая строка с парметрами для винрара, то лишним не будет

Для винрара все параметры есть в хелпе. Вот например:
Код:
Заархивировать все файлы из текущей и вложенных папок в
самораспаковывающийся непрерывный архив, разделённый на тома
save.part1.exe, save.part2.rar, save.part3.rar, … размером по 362000 байт, и
добавить к каждому тому информацию для восстановления:
WinRAR a –r –v362 –s –sfx –rr save
Цитата:
2. Не очень хочется указывать в вышеприведенной функции абсолютное имя запускаемой программы (архиватора). Его могут на разных машинах установить в разные места. Информация о программах в винде есть. Можно как-то извернуться и прописать то место, где заданная программа находится согласно реестру винды?
Путь до винрара есть в реестре. Например:
Код:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WinRAR\shell\open\command
Цитата:
3. Если файл большой, то процесс архивирования может занять определенное время, а по программе после архивирования идет удаление. Аксапта будет ждать пока файл не запакуется или начнет сразу его убивать, вызывая при этом ошибку? Если "да", то как этого избежать?
Попробуйте заархивировать большой файл и увидете что она там делает.
Вообще есть параметр boolean _waitForCompletion = false в winAPI::shellExecute.