Продолжаем работу
| |
drserj | Дата: Суббота, 23.01.2010, 20:31 | Сообщение # 1 |
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Статус: Offline
| Итак, изменений и дополнений в новой версии много. Поскольку за последнее время особых проблем никто не нашел, надеюсь, багов стало меньше Отписываемся о возникших проблемах, ежели таковые возникнут.
drSerj
|
|
| |
rupor | Дата: Воскресенье, 24.01.2010, 03:38 | Сообщение # 2 |
Рядовой
Группа: Пользователи
Сообщений: 11
Статус: Offline
| При "пакетной обработке" не выставляется в качестве рабочей директории стартовая директория запускаемой программы. Например: "D:\Books_e\LibRusLib\Script\fb2lrf_c.exe -i %F -o %f.lrf -s default_styles.sini" ищет default_styles.sini в директории, откуда запущен LibRusLib - и, конечно, не находит так как его там нет. Если специфицировать "D:\Books_e\LibRusLib\Script\fb2lrf_c.exe -i %F -o %f.lrf -s D:\Books_e\LibRusLib\Script\default_styles.sini" то пакетная обработка начинает работать. Нельзя ли правильно выставлять lpCurrentDirectory при выдаче CreateProcess либо считая ее всегда такой-же как и путь запускаемой программы, либо позволить вводить этот путь в диалоге настроек пакетной обработки как сделано в shortcut propierties в Windows - "Start In"? Добавлено (24.01.2010, 02:38) --------------------------------------------- Можно ли сделать так, чтобы окно процесса пакетной обработки не прыгало на экран? Например выставив wShowWindow в CreateProcess в SW_HIDE и указав в dwFlags STARTF_USESHOWWINDOW? Еще неплохо было бы редиректнуть output этих программ а то очень трудно понять когда возникает ошибка - STARTF_USESTDHANDLES в тех же dwFlags
|
|
| |
Shams | Дата: Воскресенье, 24.01.2010, 06:24 | Сообщение # 3 |
Генерал-майор
Группа: Проверенные
Сообщений: 274
Статус: Offline
| Класс! Все работает как часы. Особенно порадовали нежданные функции "Поиск новинок" и "Показывать только скачанное". Ну и панель инструментов, конечно.
|
|
| |
andToxa | Дата: Воскресенье, 24.01.2010, 12:40 | Сообщение # 4 |
Подполковник
Группа: Проверенные
Сообщений: 148
Статус: Offline
| Насчет "Показывать только скачанное": режим хороший, но был бы совсем идеальным, если бы в нем показывались и книги из локальной коллекции. А то книги вроде есть, а скачанными не считаются.
книга - лучший подарок!
|
|
| |
drserj | Дата: Воскресенье, 24.01.2010, 13:09 | Сообщение # 5 |
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Статус: Offline
| Quote (rupor) "D:\Books_e\LibRusLib\Script\fb2lrf_c.exe -i %F -o %f.lrf -s default_styles.sini" ищет default_styles.sini в директории, откуда запущен LibRusLib - и, конечно, не находит так как его там нет. что, согласись, вполне логично, ибо, текущая директория - именно директория, откуда запущен LibRusLib... Quote (rupor) Если специфицировать "D:\Books_e\LibRusLib\Script\fb2lrf_c.exe -i %F -o %f.lrf -s D:\Books_e\LibRusLib\Script\default_styles.sini" то пакетная обработка начинает работать. абсолютно правильно. ведь пакетные операции - это не только данный скрипт, а любой другой, пути к файлам которого могут располагаться где угодно. Quote (rupor) Нельзя ли правильно выставлять lpCurrentDirectory при выдаче CreateProcess либо считая ее всегда такой-же как и путь запускаемой программы, либо позволить вводить этот путь в диалоге настроек пакетной обработки как сделано в shortcut propierties в Windows - "Start In"? Вот тебе функция запуска скрипта. Что ты хочешь тут изменить? function TMAINFORM.RunScript(prg,param: string):Boolean; var SEInfo: TShellExecuteInfo; ExitCode: DWORD; begin FillChar(SEInfo, SizeOf(SEInfo), 0); SEInfo.cbSize := SizeOf(TShellExecuteInfo); with SEInfo do begin fMask := SEE_MASK_NOCLOSEPROCESS; Wnd := Application.Handle; lpFile := PChar(prg); lpParameters := PChar(Param); // lpDirectory := PChar(StartInString); nShow := SW_SHOWNORMAL; end; if ShellExecuteEx(@SEInfo) then begin repeat Application.ProcessMessages; sleep(1); Application.ProcessMessages; GetExitCodeProcess(SEInfo.hProcess, ExitCode); until (ExitCode <> STILL_ACTIVE) or Application.Terminated; end else ShowMessage('Ошибка запуска '+prg); end; Quote (rupor) Можно ли сделать так, чтобы окно процесса пакетной обработки не прыгало на экран? Например выставив wShowWindow в CreateProcess в SW_HIDE и указав в dwFlags STARTF_USESHOWWINDOW? nShow := SW_SHOWNORMAL; ты про это ? Не знаю, хорошая ли это идея... Если не видеть, что процесс идет... Обрати внимание - буквально во всех программах, где вызывается консоль - она выбрасывается на передний план... Наверно, не просто так... Quote (rupor) Еще неплохо было бы редиректнуть output этих программ а то очень трудно понять когда возникает ошибка - STARTF_USESTDHANDLES в тех же dwFlags Неплохо бы.. Но, честно говоря, не знаю как
drSerj
|
|
| |
drserj | Дата: Воскресенье, 24.01.2010, 13:13 | Сообщение # 6 |
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Статус: Offline
| Quote (andToxa) Насчет "Показывать только скачанное": режим хороший, но был бы совсем идеальным, если бы в нем показывались и книги из локальной коллекции. А то книги вроде есть, а скачанными не считаются. Дык, они и не могут считаться скачанными... Иначе, у меня все записи горели бы зеленым А если хочешь, что бы считались скачанными - распакуй дейли, кинь их на время в каталог скачиваемых файлов (можно все в один отдельный каталог) и актуализируй... Хотя, это жестоко...
drSerj
|
|
| |
drserj | Дата: Воскресенье, 24.01.2010, 13:16 | Сообщение # 7 |
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Статус: Offline
| Quote (Shams) Ну и панель инструментов, конечно. Ой, вот это и получился изврат.... Хорошо-хоть убирается с глаз... Ну не художник я иконки рисовать, 16х16 - это жесть... 32х32 - еще ничего, а мелкие - тут надо спецом быть, что б и вид имели и понять можно было - что изображено...
drSerj
|
|
| |
Shams | Дата: Воскресенье, 24.01.2010, 19:00 | Сообщение # 8 |
Генерал-майор
Группа: Проверенные
Сообщений: 274
Статус: Offline
| Quote (drserj) тут надо спецом быть, что б и вид имели и понять можно было - что изображено... А по моему, вполне нормально. Главное - не нужно ползать по меню, вытаскивая постоянно используемые функции.
|
|
| |
rupor | Дата: Воскресенье, 24.01.2010, 20:21 | Сообщение # 9 |
Рядовой
Группа: Пользователи
Сообщений: 11
Статус: Offline
| Quote (andToxa) что, согласись, вполне логично, ибо, текущая директория - именно директория, откуда запущен LibRusLib... Quote (andToxa) абсолютно правильно. ведь пакетные операции - это не только данный скрипт, а любой другой, пути к файлам которого могут располагаться где угодно. Увы, не могу согласиться Это создает определенные неудобства при написании командных строк, как мы видим на примере "D:\Books_e\LibRusLib\Script\fb2lrf_c.exe -i %F -o %f.lrf -s default_styles.sini" . Неоправданно длинная командная строка и необходимость ее коррекции каждый раз, когда изменяется место, откуда запускается программа. Кроме того, это может создавать проблемы при поиске DLLs. Альтернативой могло бы быть введение нового параметра, дающего полный стартовый путь - "... -s %pdefault_styles.ini", но стандартным в Windows является указание "Start In" директории. Нетривиальная пакетная программа предполагает свою иерархию директорий для правильной работы. Quote (andToxa) nShow := SW_SHOWNORMAL; ты про это ? Не знаю, хорошая ли это идея... Если не видеть, что процесс идет... Обрати внимание - буквально во всех программах, где вызывается консоль - она выбрасывается на передний план... Наверно, не просто так... Да, я про это. Дело в том, что в LibRusLib уже имеется диалог, показывающий прогресс пакетной обработки. Выпрыгивающее окно закрывает его, а прочесть в консоли все равно ничего нельзя успеть. Если я обрабатываю 50 книг - мой экран мигает 50 раз. Выглядит это весьма и весьма странно. Я не знаю, о каких программах вызывающих консоль идет речь, но ни одно IDE (включаая и Delphi) не мигает консолью во время билда например. Интересной альтернативой было бы создание и запуск командного файла содержащего обработку всех книг - тогда окно было бы одно, я правда не уверен, что это имеет смысл. Quote (andToxa) Неплохо бы.. Но, честно говоря, не знаю как smile Я бы вообще не использовал ShellExecute - не понятно зачем нужна функциональность интеграции с Windows Explorer, которая все равно не используется. Вместо этого я бы выдал CreateProcess (не помню есть ли в Delphi или надо звать Windows API) - а там установка своих handles для stdout и stderr - стандартная функциональность, как и проверка кода возврата. Вот где то так...
|
|
| |
drserj | Дата: Воскресенье, 24.01.2010, 21:43 | Сообщение # 10 |
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Статус: Offline
| Quote (Shams) А по моему, вполне нормально. Главное - не нужно ползать по меню, вытаскивая постоянно используемые функции. Ну, хоткеи никто не отменял...
drSerj
|
|
| |
Shams | Дата: Понедельник, 25.01.2010, 05:39 | Сообщение # 11 |
Генерал-майор
Группа: Проверенные
Сообщений: 274
Статус: Offline
| Quote (drserj) Ну, хоткеи никто не отменял... Склероз отменял
|
|
| |
drserj | Дата: Понедельник, 25.01.2010, 09:26 | Сообщение # 12 |
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Статус: Offline
| а... ну это уважительная причина, по себе знаю
drSerj
|
|
| |
Jabba | Дата: Понедельник, 25.01.2010, 16:47 | Сообщение # 13 |
Рядовой
Группа: Пользователи
Сообщений: 2
Статус: Offline
| Привет. У меня проблема с апдейтом. Система Win 7 Ult Eng. Программа скачивает апдейтер LibRusLib Update 1.16.0.100124.exe. Тот скачивает пакет с апдейтом, показывает файлы в пакете. При нажатии кнопки Дальше выскакивает сообщение "Can't Identify OS version". Нажимаю Ok, вторая попытка нажать Дальше - пишет TEasyDataset.OpenTable - table "goUpdaterFiles" does not exist. Все, дальше окна со списком комплекта апдейта не проходит. При этом попробовал обновить предыдущим апдейтером LibRusLib Update 1.15.0.91028.exe - все прошло нормально. Теперь программу посмотрю.
|
|
| |
drserj | Дата: Понедельник, 25.01.2010, 18:28 | Сообщение # 14 |
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Статус: Offline
| Quote (Jabba) Система Win 7 Ult Eng проверял лично, именно на английской семерке - проблем нет. Возможные проблемы - излишняя безопасность в семерке - запускать прогу надо от имени администратора. Второе - не надо ставить программу на диск С - по той же причине. на русской и английской семерках, на ХР и 2003 сервере при обновлении проблем не замечено. Единственная проблема, которая была замечена - 4 нод, почему-то блокирует автозапуск апдейта, но в файлах вируса не находит. Скорее, даже не блокирует, а слишком долго проверяет и программа по таймауту отваливается. Так что, скорее всего, проблема у тебя. Если будут возникать подобные проблемы - проще стянуть новую версию в архиве без инсталлятора и перезаписать имеющиеся файлы.
drSerj
|
|
| |
Jabba | Дата: Понедельник, 25.01.2010, 19:38 | Сообщение # 15 |
Рядовой
Группа: Пользователи
Сообщений: 2
Статус: Offline
| Да, вообщем-то, проблемы большой нет. Смутило, что старый апдейтер работает, а новый нет. Стоит KIS 2010, его отключение ничего не дает.
|
|
| |
|