07.12.2007, 16:31 | #1 |
Участник
|
Архивирование файлов
Добрый вечер!
Есть задача заархивировать из аксапты определенный файл в заданный каталог, а затем исходный файл удалить. В связи с этим ряд вопросов: 1. Сам процесс архива? winAPI::shellExecute правильно? Это наверное самый легкий момент, однако если у кого есть готовая строка с парметрами для винрара, то лишним не будет 2. Не очень хочется указывать в вышеприведенной функции абсолютное имя запускаемой программы (архиватора). Его могут на разных машинах установить в разные места. Информация о программах в винде есть. Можно как-то извернуться и прописать то место, где заданная программа находится согласно реестру винды? 3. Если файл большой, то процесс архивирования может занять определенное время, а по программе после архивирования идет удаление. Аксапта будет ждать пока файл не запакуется или начнет сразу его убивать, вызывая при этом ошибку? Если "да", то как этого избежать? |
|
07.12.2007, 17:02 | #2 |
Участник
|
Цитата:
Сообщение от 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. |
|
07.12.2007, 17:33 | #3 |
Участник
|
А почему бы не воспользоваться dll-кой 7-zip?
Конечно поразбираться с ней придется, зато вышеперечисленных проблем нет, красиво, бесплатно. |
|
07.12.2007, 17:39 | #4 |
Участник
|
Можно не добавлять в арзив а перемещать туда. rar m ....
|
|
07.12.2007, 17:51 | #5 |
Участник
|
Спасибо за ответы, почти все получилось, кроме вопроса с реестром. Не разобрался пока как подставить значение этого ключа
X++: HKEY_LOCAL_MACHINE\SOFTWARE\Classes\WinRAR\shell\open\command Цитата:
Можно не добавлять в арзив а перемещать туда. rar m ....
|
|
07.12.2007, 17:55 | #6 |
Участник
|
А по перекрестным посмотреть
например, WInApi::showMruAllowed X++: static client boolean showMruAllowed() { #winAPI container reg = conNull(); int value; int handle; handle = WinAPI::regOpenKey(#HKEY_CURRENT_USER, 'Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Comdlg32', #KEY_READ); reg = WinAPI::regGetValue(handle, 'NoFileMru'); WinAPI::regCloseKey(handle); if (reg == conNull()) { // The item is not found, so Most Recently Used menus are allowed return true; } else { // If the value is true, MRUs are not allowed [ value ] = reg; return (value != true); } } |
|
07.12.2007, 18:57 | #7 |
Участник
|
Цитата:
- открываем МСДН и смотрим нужную ф-ю. - ищем пример в АОТе - гугл никто не отменял Неужели сложно PS туториал или описание гдето было по этим ф-ям касательно использования через Аксу. Вроде в блогах гдето видел.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
10.12.2007, 17:57 | #8 |
Участник
|
Спасибо еще раз, все сработало!
Alex_KD, вопрос не в сложности, лени или нежелании думать своими мозгами, а в скорости. Конечно, можно потратить на эти вопросы гораздо больше времени и найти все самому, но на форуме информацию можно получить куда быстрее. |
|
10.12.2007, 23:40 | #9 |
Участник
|
Помогло - хорошо
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
11.12.2007, 16:16 | #10 |
Пенсионер
|
Цитата:
1. Сильнее запоминается 2. В качестве знания приобретается не решение, а "путь" нахождения решения, что в дальнейшем позволит быстрее находить подобные решения (к вопросу о скорости) 3. Накапливаются пути нахождения решения, применение которых в различных комбинациях дают основы к развитию системного мышления и нахождения нестандартных решений. 4..... ничего личного просто "...к вопросу о..." том, что частенько многие на форуме, которые зная решение, подсказывают пути их решения тем самым приносят вопрошающему гораздо больше пользы, чем просто ответ, хотя многие вопрошающие этого не понимают.
__________________
Законы природы еще никто не отменял! А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ Последний раз редактировалось blokva; 11.12.2007 в 16:18. |
|
|
За это сообщение автора поблагодарили: mazzy (5). |
|
Похожие темы | ||||
Тема | Ответов | |||
Печать самих файлов PDF | 9 | |||
сортировка файлов | 12 | |||
Как получить список файлов заданной папки | 3 | |||
И.... еще раз про архивирование... | 5 | |||
WinApi. Удаление файлов глючит. | 10 |
|