Summary: | 1Cv77 + Кнопка "Печать" в окне диалога печати | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Mikhail Krylatykh <delayer> |
Component: | Печать ; Диалог печати | Assignee: | Денис Баранов <baraka> |
Status: | CLOSED FIXED | QA Contact: | Marat Sharipov <regan> |
Severity: | blocker | ||
Priority: | P1 | CC: | d.yacenko, lav, mid, svzhu, vitperov |
Version: | 1.0.12 | Keywords: | ИНТЕРРА |
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | Debian GNU/Linux | ||
Whiteboard: | |||
Заявки RT: | 18063, 18320 | Связано с: | |
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 443, 5991, 6947 | ||
Attachments: |
промежуточное решение проблемы печати админ. установки
с CUPS'ом без CUPS'a |
Description
Mikhail Krylatykh
2010-07-07 17:46:54 MSD
(In reply to comment #0) > wine12-eter8/6, Debian Lenny, 1Cv77 > Периодически (1-2 раза в день) при попытке > ... > смертельно, конечно, но очень неприятно. > У вас установка административная или обычная? Административная (In reply to comment #2) > Административная > Попробуйте установить на файл C:\windows\win.ini права 777 хорошо, понаблюдаю. (In reply to comment #4) > хорошо, понаблюдаю. > Ну как результаты? пока тихо, не звонят Не, осталась проблема. Также рандомно проявляется. какие то подвижки, идеи? (In reply to comment #8) > какие то подвижки, идеи? > Можно попробовать еще вариант занести всех пользователей в одну группу и поставить файл win.ini владельцем эту группу и разрешить изменение этой группе. Попробовать попробую, но разве это не те же яйца в профиль относильно chmod 777? (In reply to comment #10) > Попробовать попробую, но разве это не те же > яйца в профиль относильно chmod 777? > По идее те же, но возможно что то и как то меняется по другому. печатать стали больше, проблема стала проявляться чаще. Предложенные выше действия не лечат. Надо что-то более действеннее. eter7-12 Created attachment 1998 [details]
промежуточное решение проблемы печати админ. установки
Comment on attachment 1998 [details]
промежуточное решение проблемы печати админ. установки
Конечно не забываем устанавливать в системе принтер по умолчанию....
Мнения разделились, что называется ;) Права пробовали, не помогло, попробуем бесправие. А, забыл отписать сразу. Попробовал бесправие - на следующий же день у всех вся печать встала. Вернул 777, ожило. Странно, у нас уже месяц ни одной заявки. А шли каждые 20-30 минут. (В ответ на comment #13) > Created attachment 1998 [details] > промежуточное решение проблемы печати админ. установки Отсюда можно сделать вывод, что принтер пропадает, если в момент перестроения списка (при открытии диалога печати) с ним что-то не так. Каждый ли раз перестраивается список или только первый раз? Возможно, так и стоит воспроизводить проблему: 1. Запустить 1С 2. Посмотреть через диалог на список принтеров 3. Остановить CUPS 4. Посмотреть на список (в хорошем случае ничего не должно измениться). А вообще надо убрать использование win.ini, это глубокий атавизм. Проверь пожалуйста. Не забывай что режим установки административный. Created attachment 2091 [details]
с CUPS'ом
Created attachment 2092 [details]
без CUPS'a
При запущенном CUPS список принтеров отображается корректно, если CUPS остановить, то изменяются названия устройств в списке, количество устройств не изменяется. Также, все символы на русском в списке выводятся в неправильной кодировке. В приложении win.ini с включенном cups и выключенным. (В ответ на comment #23) ... > Также, все символы на русском в списке выводятся в неправильной кодировке. Про это отдельную багу со скриншотом. При запуске любой программы если очистить файл win.ini, то распечатать ничего невозможно. Нужно убрать использование этого файла, т.к. вся информация есть в реестре. Хотя с другой стороны этот файл нужен для совместимости с 16битными приложениями. (В ответ на comment #25) > При запуске любой программы если очистить файл win.ini, то распечатать ничего ... > Хотя с другой стороны этот файл нужен для совместимости с 16битными > приложениями. При правильной архитектуре Wine — не нужен. Но если нужен, предлагаю отключать его использование при наличии определённой переменной. Нашёл упоминание файла win.ini в исходном коде. Используется он только в kernel32/profile.c. Сомневаюсь, что надо удалять этот файл. Думаю лучше найти каким образом он используется при печати, и сделать так, чтобы работало без него Посмотрел места вызова функций из этого файла. Нашёл, что GetProfileStringA используется в WINSPOOL_SetDefaultPrinter Еще GetProfileStringW вызывается из GetDefaultPrinterW. Возможно проблема вызывается именно её поведением. Сначала она ищет принтер по умолчанию в реестре, а уже затем в файле win.ini. В реестре просматривается ветка HCU\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows У ключа Device должно быть значение принтера по умолчанию. Проверил на WinXP - оно там есть. Проверил в wine eterhack - тоже есть Проверил в wine на cellar - тоже есть. проверил в бутылке 1c77/1c77. Даже без изменения win.ini, при нажатии на кнопку Ok диалога печати ничего не происходит. В консоли: err:commdlg:PRINTDLG_ChangePrinterA DocumentProperties fails on "CUPS-PDF" fixme:commdlg:PRINTDLG_UpdatePrintDlgA No lpdm ptr? fixme:commdlg:PRINTDLG_WMCommandA Update printdlg was not successful! fixme:commdlg:PRINTDLG_UpdatePrintDlgA No lpdm ptr? Сразу перед этим вызывается обсуждавшаяся выше функция GetDefaultPrinterW Рассмотрел поведение GetDefaultPrinterW. Она читает данные именно из реестра. Думаю проблема не в ней, и стоит рассмотреть функцию PRINTDLG_ChangePrinterA. Проблема возникает в вызываемой ей DocumentPropertiesA. Передаваемые параметры: winspool:DocumentPropertiesA ((nil),(nil),CUPS-PDF,(nil),(nil),0) Проследил дальнейший вызов функций. Результат (-1) возвращает функция GDI_CallExtDeviceMode16 Происходит это потому, что проваливается вызов DRIVER_GetDriverName(). А вот она то как-раз и ищёт значение драйвера в win.ini. Обращения к реестру так и не происходит Добавил чтение из реестра. Проверил. Работает. Теперь надо оформить патч, приложить к 1.0.12 и отправить в winehq Патч приложен в eterhack и в eter-1.0.12 Отправил в WINEHQ, получил ответ о возможной утечке hKey. Переделал патч. Отправил снова. Попутно возник вопрос о правильности патча. По идее GDI_CallExtDeviceMode16 - 16-битная функция, которая не должна поддерживать работу с реестром. Если патч не примут, то надо подумать как бы от неё отказаться совсем Решение есть в основных репозиториях. Багу закрываю. Все комментарии по поводу отправки патча в WINEHQ будут вестись в отдельной баге #6947 Так проблема с неактивной кнопкой печати решена или нет? Сборку WINE@Etersoft с исправлениями уже доступна? Где ее взять? Проблема решена. По поводу сборок - вопросы к Денису Wine 8/18 Принято. |