wine12-eter8/6, Debian Lenny, 1Cv77 Периодически (1-2 раза в день) при попытке распечатать любой документ и открытии она диалога печати оказывается неактивной кнопка "Печать". Если 1С перезапустить, печатать становится можно. Однако через некоторое количество документов проблема проявляется снова, и лечится аналогично. Не смертельно, конечно, но очень неприятно.
(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 Принято.