Показать сообщение отдельно
Старый 07.12.2007, 17:02   #2  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Цитата:
Сообщение от 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.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0

Последний раз редактировалось Alex_KD; 07.12.2007 в 17:06.