LibRusLib
Четверг, 25.04.2024, 09:22
Приветствую Вас Гость | RSS
 
Главная ФорумРегистрацияВход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 22
  • 1
  • 2
  • 3
  • 21
  • 22
  • »
Архив - только для чтения
Форум » Архив "LibRus - Библиотекарь" » Version 1.16 (build 10.01.24) » Продолжаем работу (Продолжаем работу)
Продолжаем работу
drserjДата: Суббота, 23.01.2010, 20:31 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Репутация: 30
Статус: Offline
Итак, изменений и дополнений в новой версии много. Поскольку за последнее время особых проблем никто не нашел, надеюсь, багов стало меньше
Отписываемся о возникших проблемах, ежели таковые возникнут.


drSerj
 
ruporДата: Воскресенье, 24.01.2010, 03:38 | Сообщение # 2
Рядовой
Группа: Пользователи
Сообщений: 11
Репутация: 0
Статус: 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 smile

 
ShamsДата: Воскресенье, 24.01.2010, 06:24 | Сообщение # 3
Генерал-майор
Группа: Проверенные
Сообщений: 274
Репутация: 0
Статус: Offline
Класс! Все работает как часы. Особенно порадовали нежданные функции "Поиск новинок" и "Показывать только скачанное". Ну и панель инструментов, конечно.
 
andToxaДата: Воскресенье, 24.01.2010, 12:40 | Сообщение # 4
Подполковник
Группа: Проверенные
Сообщений: 148
Репутация: 0
Статус: Offline
Насчет "Показывать только скачанное": режим хороший, но был бы совсем идеальным, если бы в нем показывались и книги из локальной коллекции. А то книги вроде есть, а скачанными не считаются.

книга - лучший подарок!
 
drserjДата: Воскресенье, 24.01.2010, 13:09 | Сообщение # 5
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Репутация: 30
Статус: 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

Неплохо бы.. Но, честно говоря, не знаю как smile


drSerj
 
drserjДата: Воскресенье, 24.01.2010, 13:13 | Сообщение # 6
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Репутация: 30
Статус: Offline
Quote (andToxa)
Насчет "Показывать только скачанное": режим хороший, но был бы совсем идеальным, если бы в нем показывались и книги из локальной коллекции. А то книги вроде есть, а скачанными не считаются.

Дык, они и не могут считаться скачанными... Иначе, у меня все записи горели бы зеленым smile А если хочешь, что бы считались скачанными - распакуй дейли, кинь их на время в каталог скачиваемых файлов (можно все в один отдельный каталог) и актуализируй... Хотя, это жестоко...


drSerj
 
drserjДата: Воскресенье, 24.01.2010, 13:16 | Сообщение # 7
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Репутация: 30
Статус: Offline
Quote (Shams)
Ну и панель инструментов, конечно.

Ой, вот это и получился изврат.... Хорошо-хоть убирается с глаз... Ну не художник я иконки рисовать, 16х16 - это жесть... 32х32 - еще ничего, а мелкие - тут надо спецом быть, что б и вид имели и понять можно было - что изображено...


drSerj
 
ShamsДата: Воскресенье, 24.01.2010, 19:00 | Сообщение # 8
Генерал-майор
Группа: Проверенные
Сообщений: 274
Репутация: 0
Статус: Offline
Quote (drserj)
тут надо спецом быть, что б и вид имели и понять можно было - что изображено...

А по моему, вполне нормально. Главное - не нужно ползать по меню, вытаскивая постоянно используемые функции.
 
ruporДата: Воскресенье, 24.01.2010, 20:21 | Сообщение # 9
Рядовой
Группа: Пользователи
Сообщений: 11
Репутация: 0
Статус: Offline
Quote (andToxa)
что, согласись, вполне логично, ибо, текущая директория - именно директория, откуда запущен LibRusLib...

Quote (andToxa)
абсолютно правильно. ведь пакетные операции - это не только данный скрипт, а любой другой, пути к файлам которого могут располагаться где угодно.

Увы, не могу согласиться smile Это создает определенные неудобства при написании командных строк, как мы видим на примере "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
Репутация: 30
Статус: Offline
Quote (Shams)
А по моему, вполне нормально. Главное - не нужно ползать по меню, вытаскивая постоянно используемые функции.

Ну, хоткеи никто не отменял...


drSerj
 
ShamsДата: Понедельник, 25.01.2010, 05:39 | Сообщение # 11
Генерал-майор
Группа: Проверенные
Сообщений: 274
Репутация: 0
Статус: Offline
Quote (drserj)
Ну, хоткеи никто не отменял...

Склероз отменял sad
 
drserjДата: Понедельник, 25.01.2010, 09:26 | Сообщение # 12
Генералиссимус
Группа: Администраторы
Сообщений: 4693
Репутация: 30
Статус: Offline
а... ну это уважительная причина, по себе знаю smile

drSerj
 
JabbaДата: Понедельник, 25.01.2010, 16:47 | Сообщение # 13
Рядовой
Группа: Пользователи
Сообщений: 2
Репутация: 0
Статус: 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
Репутация: 30
Статус: Offline
Quote (Jabba)
Система Win 7 Ult Eng

проверял лично, именно на английской семерке - проблем нет.
Возможные проблемы - излишняя безопасность в семерке - запускать прогу надо от имени администратора. Второе - не надо ставить программу на диск С - по той же причине. на русской и английской семерках, на ХР и 2003 сервере при обновлении проблем не замечено.

Единственная проблема, которая была замечена - 4 нод, почему-то блокирует автозапуск апдейта, но в файлах вируса не находит. Скорее, даже не блокирует, а слишком долго проверяет и программа по таймауту отваливается. Так что, скорее всего, проблема у тебя.

Если будут возникать подобные проблемы - проще стянуть новую версию в архиве без инсталлятора и перезаписать имеющиеся файлы.


drSerj
 
JabbaДата: Понедельник, 25.01.2010, 19:38 | Сообщение # 15
Рядовой
Группа: Пользователи
Сообщений: 2
Репутация: 0
Статус: Offline
Да, вообщем-то, проблемы большой нет. Смутило, что старый апдейтер работает, а новый нет. Стоит KIS 2010, его отключение ничего не дает.
 
Форум » Архив "LibRus - Библиотекарь" » Version 1.16 (build 10.01.24) » Продолжаем работу (Продолжаем работу)
  • Страница 1 из 22
  • 1
  • 2
  • 3
  • 21
  • 22
  • »
Поиск:

Copyright LibRusLib © 2024