Имеется обработка, в которой с помощью команды ЗапуститьПриложение вызывается html файл. При запуске через wine, открывается firefox но с "левым" адресом в строке. Должен открываться нужный файл. Бутылка 1c77/1c77-base Обработка в C:\test\test.ert
Насколько понял для открытия html используется xdg-open из пакета xdg-utils. 1с7 передает в качестве аргумента xdg-open'у какой-то мусор (args - вывод из /usr/bin/xdg-open): $ww 1cv7s.exe args: 䌢尺整瑳睜栮浴≬ⰬㄭⰬⰬ /usr/bin/xdg-open: line 377: htmlview: команда не найдена winefile передает корректный путь до файла и все открывается: $ww winefile args: /net/wine/bottles/1c77/.wine-1c77-base/dosdevices/c:/test/w.html /usr/bin/xdg-open: line 377: htmlview: команда не найдена
(In reply to comment #1) > Насколько понял для открытия html > используется xdg-open из пакета xdg-utils. > > 1с7 передает в качестве аргумента xdg-open'у > какой-то мусор (args - вывод из /usr/bin/xdg-open): > > $ww 1cv7s.exe > args: 䌢尺整瑳睜栮浴≬ⰬㄭⰬⰬ > /usr/bin/xdg-open: line 377: htmlview: команда не найдена > > winefile передает корректный путь до файла и > все открывается: > > $ww winefile > args: /net/wine/bottles/1c77/.wine-1c77-base/dosdevices/c:/test/w.html > /usr/bin/xdg-open: line 377: htmlview: команда не найдена > У маня открывается через gvfs-open (т.к. использую в качестве рабочего стола GNOME), но по сути передаются теже кракозябры.
Для открытия url вызывается: C:\windows\system32\winebrowser.exe -nohome Сам url передается ему через DDE (Dynamic Data Exchange). Сейчас winebrowser считывает только юникодные строки из DDE. Насколько понимаю проблема в том, что 1с7 передает ASCII кодировку.
(In reply to comment #3) > Для открытия url вызывается: > > C:\windows\system32\winebrowser.exe -nohome > > Сам url передается ему через DDE (Dynamic Data Exchange). > Сейчас winebrowser считывает только юникодные > строки из DDE. > > Насколько понимаю проблема в том, что 1с7 > передает ASCII кодировку. > да, 1с7 работает только в кодировке 1251, другие не понимает.
Выложил патч. Решение заключается в том, чтобы проверять строку полученную через DDE с помощью IsTextUnicode. Если проверка не проходит - конвертировать ее в unicode.
(In reply to comment #5) > Выложил патч. > > Решение заключается в том, чтобы проверять > строку полученную через DDE с помощью > IsTextUnicode. Если проверка не проходит - > конвертировать ее в unicode. > а где можно получить патч? Для меня это критично.
> а где можно получить патч? Для меня это > критично. Патч войдет в следующую сборку WINE@Etersoft, которая будет доступна для скачивания на странице продукта нашего сайта.
Сборка будет завтра (09.04.10) к ночи доступна для скачивания по заказу сборки testing.
Принято. WINE@Etersoft 1.0.12 eter5/eter4
(In reply to comment #6) > а где можно получить патч? Для меня это > критично. > Вы можете заказать сборку testing на странице продукта
(In reply to comment #5) > Выложил патч. > > Решение заключается в том, чтобы проверять > строку полученную через DDE с помощью > IsTextUnicode. Если проверка не проходит - > конвертировать ее в unicode. > Проблема всё равно осталась, если в пути к файлу присутствует кириллица. Вывод консоли: err:seh:raise_exception Unhandled exception code c0000005 flags 0 addr 0x7bc45584 wine: Unhandled page fault on read access to 0x00000030 at address 0x60353e60 (thread 0014), starting debugger... Unhandled exception: page fault on read access to 0x00000030 in 32-bit code (0x60353e60). Register dump: CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b EIP:60353e60 ESP:0033fb60 EBP:0033fb98 EFLAGS:00210202( - 00 - -RI1) EAX:001221b8 EBX:60410550 ECX:00122980 EDX:0000002c ESI:0000c003 EDI:00000000 Stack dump: 0x0033fb60: 00000001 000701ca 00000000 00000000 0x0033fb70: 603527f0 00000000 00122d70 000801c8 0x0033fb80: 603e0940 00000601 603c6afb 60410550 0x0033fb90: 00122548 00000000 0033fbd8 6035604a 0x0033fba0: 001221b8 0000c003 000701ca 00000000 0x0033fbb0: 000b00ae 000701ca 00122548 00000000 Backtrace: =>0 0x60353e60 in user32 (+0x33e60) (0x0033fb98) 1 0x6035604a in user32 (+0x3604a) (0x0033fbd8) 2 0x603576a8 DdeNameService+0x2c8() in user32 (0x0033fc68) 3 0x639a3a00 wmain+0x700() in winebrowser (0x0033fec8) 4 0x639a3ee6 in winebrowser (+0x3ee6) (0x0033fef8) 5 0x7b876e2f in kernel32 (+0x56e2f) (0x0033ffe8) 0x60353e60: cmpl %esi,0x4(%edx) Modules: Module Address Debug info Name (56 modules) ELF 101000- 106000 Deferred libxfixes.so.3
Created attachment 1644 [details] Дамп ошибки, возникающий при открытии файла.
Переоткрываю багу. Проблема с кириллицей.
Created attachment 1645 [details] Новая версия обработки В моем случае значение переменное НИмяФайла: НИмяФайла = "U:\1C\БД Апрель\test.html" Исключить кириллицу не возможно, т.к. связано с большими трудностями. (хотя может тут пробел дело портит?)
Если исключить пробелы (создал базу с путем H:\База), то возникает такая ошибка: err:heap:HEAP_ValidateInUseArena Heap 0x110000: prev arena 0x122948 invalid for in-use 0x122978 gvfs-open: h:///%5C%D0%91%D0%B0%D0%B7%D0%B0%5Ctest.html%E5%89%86%E4%95%85x%11%E2%B5%A8%12EL32.dll: ошибка открытия адреса: Указанный адрес не поддерживается
Выложил еще один патч. Проблема в том, что из ddeString делаем unicode строку, но память под него выделена как для ASCII строки, т.е. в буфер ложим больше чем его размер. Поэтому память портилась (т.к. heap используется в других местах программы) и ссылка получалась битая. Решение - при преобразовании ddeString в unicode - заново выделять под него память. Проверял с кириллицей и пробелами в путях - должно работать.
wine 7.42/15 Бутылка 1c77/1c77-base Обработка в C:\test\test.ert html открывается Принята