Summary: | Не устанавливается .NET 2.0 | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Константин Кондратюк <kondratyuk> |
Component: | Установка программ / MSI | Assignee: | Виталий Перов <vitperov> |
Status: | CLOSED FIXED | QA Contact: | |
Severity: | major | ||
Priority: | P2 | CC: | alexeev, andrey.chichak, baraka, chemtech, johnrdoe63, lav, mibori, night, pav |
Version: | 1.0.9 | ||
Target Milestone: | выпуск 1.0.9 | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | 9384, 9421 | Связано с: | |
Дата напоминания: | |||
Bug Depends on: | 807, 3269 | ||
Bug Blocks: | 3157, 469, 641, 1217, 1665, 3248, 3286, 3287 | ||
Deadline: | 2008-10-20 | ||
Attachments: |
лог
Ошибка при установке через wine |
Description
Константин Кондратюк
2008-10-18 00:20:43 MSD
Андрей, если найдёшь способ корректно установить, то напиши в багу рецепт в первую очередь. У меня воспроизводится на сизифе. Ошибка возникает из-за невозможности записи файлов во временные папки IXPOxx.TMP в \windows\temp\ Например: warn:file:CreateFileW Unable to create file L"C:\\windows\\temp\\IXP011.TMP\\LocData.ini" (status c0000034) И дальнейший откат происходит из-за невозможности найти файлы там же: warn:file:wine_nt_to_unix_file_name L"advapi32.dll" not found in /net/wine/.wine-night/dosdevices/c:/windows/temp/IXP010.TMP По warn+file в консоле: .... warn:file:wine_nt_to_unix_file_name L"\\??\\C:\\windows\\system32\\GDI32.dll" -> "/net/wine/.wine-night/dosdevices/c:/windows/system32/gdi32.dll" required a case-insensitive search warn:file:wine_nt_to_unix_file_name L"\\??\\C:\\windows\\system32\\GDI32.dll" -> "/net/wine/.wine-night/dosdevices/c:/windows/system32/gdi32.dll" required a case-insensitive search warn:file:wine_nt_to_unix_file_name L"advapi32.dll" not found in /net/wine/.wine-night/dosdevices/c:/windows/temp/IXP011.TMP warn:file:wine_nt_to_unix_file_name L"advapi32.dll" not found in /net/wine/.wine-night/dosdevices/c:/windows/temp/IXP011.TMP warn:file:wine_nt_to_unix_file_name L"advapi32.dll" not found in /net/wine/.wine-night/dosdevices/c:/windows/temp/IXP011.TMP warn:file:wine_nt_to_unix_file_name L"advapi32.dll" not found in /net/wine/.wine-night/dosdevices/c:/windows/temp/IXP011.TMP warn:file:wine_nt_to_unix_file_name L"USER32.dll" not found in /net/wine/.wine-night/dosdevices/c:/windows/temp/IXP011.TMP warn:file:wine_nt_to_unix_file_name L"USER32.dll" not found in /net/wine/.wine-night/dosdevices/c:/windows/temp/IXP011.TMP warn:file:wine_nt_to_unix_file_name L"\\??\\C:\\windows\\system32\\USER32.dll" -> "/net/wine/.wine-night/dosdevices/c:/windows/system32/user32.dll" required a case-insensitive search warn:file:wine_nt_to_unix_file_name L"\\??\\C:\\windows\\system32\\USER32.dll" -> "/net/wine/.wine-night/dosdevices/c:/windows/system32/user32.dll" required a case-insensitive search warn:file:wine_nt_to_unix_file_name L"x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.2600.2982_none_deadbeef\\COMCTL32.dll" not found in /net/wine/.wine-night/dosdevices/c:/windows/winsxs warn:file:wine_nt_to_unix_file_name L"SHELL32.dll" not found in /net/wine/.wine-night/dosdevices/c:/windows/temp/IXP011.TMP warn:file:wine_nt_to_unix_file_name L"SHELL32.dll" not found in /net/wine/.wine-night/dosdevices/c:/windows/temp/IXP011.TMP warn:file:wine_nt_to_unix_file_name L"\\??\\C:\\windows\\system32\\SHELL32.dll" -> "/net/wine/.wine-night/dosdevices/c:/windows/system32/shell32.dll" required a case-insensitive search warn:file:wine_nt_to_unix_file_name L"\\??\\C:\\windows\\system32\\SHELL32.dll" -> "/net/wine/.wine-night/dosdevices/c:/windows/system32/shell32.dll" required a case-insensitive search .... Вообще WINEDEBUG=warn+file начинается со строчек warn:file:wine_nt_to_unix_file_name L"wineboot.exe" not found in /net/wine/.wine-night/dosdevices/c:/windows/system32 warn:file:wine_nt_to_unix_file_name L"wineboot.exe" not found in /net/wine/.wine-night/dosdevices/c:/windows/system32 warn:file:CreateFileW Unable to create file L"C:\\windows\\system32\\wineboot.exe" (status c0000034) warn:file:wine_nt_to_unix_file_name L"wineboot.exe" not found in /net/wine/.wine-night/dosdevices/c:/windows/system32 warn:file:wine_nt_to_unix_file_name L"wineboot.exe.manifest" not found in /net/wine/.wine-night/dosdevices/c:/windows/system32 warn:file:wine_nt_to_unix_file_name L"wininit.ini" not found in /net/wine/.wine-night/dosdevices/c:/windows warn:file:CreateFileW Unable to create file L"C:\\windows\\wininit.ini" (status c0000034) На последней сборке воспроизводится. *** Bug 1465 has been marked as a duplicate of this bug. *** Должен устанавливаться с помощью winetricks! http://appdb.winehq.org/objectManager.php?sClass=version&iId=3754 Если он может работать сейчас, то нужно это узнать сейчас. В оригинальном вайне + winetricks работает сейчас. Странно, что мы не сделали это к релизу 1.0.9, проблема была замечена ещё в rc. Не удалось заставиь установиться ни какими обманами =) Если устанавливать через winetricks установка прерывается и в консоли: err:seh:setup_exception_record stack overflow 816 bytes in thread 0031 eip 0043f1fa esp 00241000 stack 0x240000-0x241000-0x340000 Устанавливая версию W2000 как рекомендуется и пытаясь установиьт просто через wine получаем лог(в атаче). Created attachment 953 [details]
лог
*** Bug 2862 has been marked as a duplicate of this bug. *** Подробней об установке можно почитать на: http://appdb.winehq.org/objectManager.php?sClass=version&iId=3754 Но так, как там описывается у меня не получилось. В "чистом" wine устанавливается, но только через winexp. Причём наличие l_intl.nls на ход установки никак не влияет 1) Устанавливать надо не только через winexp, ещё нужно выбрать версию виндовс 98 вместо 2000 2) В ветке eterwine тоже не работает 3) При различных параметрах программа ведёт себя по-разному. Сейчас в ветке eterwine установка даже не запускается. Падает при старте программы Создаётся такое впечатление, что установка .Net 2.0 у нас никогда и не работала. Примерно в районе версии 1.0 появляется ошибка: установка входит в критическую секцию, и останавливает выполнение. Отсюда вывод: существует в eterwine патч, вызываеющий багу, но путём отката найти его никак нельзя Проблемы с падением были вызваны загрузкой нативной secur32.dll (бага 3269) Проблема с откатом установки решились благодаря патчу Антона (бага 807). Сейчас установка .Net 2.0 проходит без проблем. Вот только не удаётся проверить правильность установки. (Необходимо найти программу, написанную на .net, которая успешно запускается в "чистом" wine) Проверил в чистой бутылке - устанавливается. Вот только установка проходит подозрительно быстро. (In reply to comment #16) > Проверил в чистой бутылке - > устанавливается. > Вот только установка проходит > подозрительно быстро. > Видимо через winexp запускал. Так она вообще не начинаетс=) Вылетает на err:seh:setup_exception_record stack overflow 952 bytes in thread 0037 eip 7bc6d0c3 esp 00240f78 stack 0x240000-0x241000-0x340000 Через wine установка начинается, но в процессе вываливается ошибка (Скриншот). Бутылка bugs/2666-test Есть программа Paint-NET, корректность установленного .NET можно проверять на ней. Лежит в /Other Сборка wine 1.0.10 alt10.1/alt6 Created attachment 1087 [details]
Ошибка при установке через wine
Устанавливать надо обязательно со встронной msi.dll, а это через winexp Со сторонней раньше падало в самом начале, теперь почему-то работает. Тепрь падает при запуске через winexp. Последнее, что грузится - msvcrt.dll. Так что проблема где-то в "лишних" dll, которые winexp загружает нативными. Если запускать через WINEDLLOVERRIDES="msi=b" wine dotnetf2.exe, то программа успешно устанавливается. Проверить можно на простой тестовой программе /var/ftp/pub/Windows/Tests/DotNetTests/HelloWorld. Более сложные программы пока не работают, но это уже другая проблема. Итак, выводы: * Устанавливать надо через WINEDLLOVERRIDES="msi=b" wine dotnetf2.exe * Перестала падать сторонняя msi.dll, но она прерывает установку, а значит проблема не в ней! И теперь можно посмотреть правильный код ошибки + правильный код customAction. И, возможно, вместо хака к баге #807 нормально исправить проблему. * при использовании winexp какая-то из загружаемых встроенных dll вызывает падение, хорошо бы в этом разобраться по-подробней. Если делать хорошо, то надо найти что мешает сторонней msi.dll нормально работать. Если делать плохо, то всё уже работает (см предыдущий комментарий). Фрагмент лога при при установке: Action 17:36:10: ProcessAssembly. Установка сборок ProcessAssembly: Сборка: C:\windows\Microsoft.NET\Framework\v2.0.50727\Microsoft.VisualBasic.Vsa.dll 03/20/09 17:36:10 DDSet_Status: Loading mscoree.dll 03/20/09 17:36:10 DDSet_Status: Loading fusion.dll using LoadLibraryShim() ===================================================== Exception code: C0000005 ACCESS_VIOLATION Function: 0xab2012e ===================================================== Registers: EAX:00000000 EBX:00000000 ECX:79E7837F EDX:0AB20058 ESI:00000000 EDI:000000A0 CS:EIP:0073:0AB2012E SS:ESP:007B:0210D338 EBP:0210D3A8 DS:007B ES:007B FS:0033 GS:003B Flags:00210206 Call stack: Address Frame 0AB2012E 0210D3A8 0xab2012e -- 0x79F89194 0x00000000 0x33C395D7 0x000000A0 MSI (c) (08:54): Closing MSIHANDLE (1209) of type 790531 for thread 84 MSI (c) (08:54): Closing MSIHANDLE (1208) of type 790536 for thread 84 MSI (c) (08:54): Leaked MSIHANDLE (1211) of type 790531 for thread 95 MSI (c) (08:54): Closing MSIHANDLE (1211) of type 790531 for thread 95 MSI (c) (08:54): Leaked MSIHANDLE (1210) of type 790531 for thread 95 MSI (c) (08:54): Closing MSIHANDLE (1210) of type 790531 for thread 95 MSI (c) (08:54): Note: 1: 2769 2: CA_InstallAssemblyDef.3643236F_FC70_11D3_A536_0090278A1BB8 3: 2 DEBUG: Error 2769: Custom Action CA_InstallAssemblyDef.3643236F_FC70_11D3_A536_0090278A1BB8 did not close 2 MSIHANDLEs. Программа установки обнаружила непредвиденную ошибку при установке данного пакета. Возможно пакет установлен неверно. Код ошибки 2769. Аргументы: CA_InstallAssemblyDef.3643236F_FC70_11D3_A536_0090278A1BB8, 2, Action ended 17:36:11: InstallFinalize. Return value 7. Скорей всего проблема в функции LoadLibraryShim(). Сейчас она полузаглушка Ой, поспешил с выводами. LoadLibraryShim() находится в mscoree.dll, и при установке .net никак не может вызываться встроенная функция (In reply to comment #20) > Если делать хорошо, то надо найти что > мешает сторонней msi.dll нормально работать. Откуда вдруг взялась сторонняя msi.dll ? Непосредственно перед откатом установки загружаются: trace:loaddll:load_native_dll Loaded L"C:\\windows\\temp\\MSIc6e1.tmp" at 0x10000000: native trace:loaddll:free_modref Unloaded module L"C:\\windows\\temp\\MSIc6e1.tmp" : native trace:loaddll:load_native_dll Loaded L"C:\\windows\\temp\\MSIc714.tmp" at 0x504f0000: native trace:loaddll:free_modref Unloaded module L"C:\\windows\\temp\\MSIc714.tmp" : native trace:loaddll:load_native_dll Loaded L"C:\\windows\\temp\\MSIc721.tmp" at 0x10000000: native trace:loaddll:load_native_dll Loaded L"C:\\setup\\mscoree.dll" at 0x79000000: native trace:loaddll:load_builtin_dll Loaded L"C:\\windows\\system32\\psapi.dll" at 0x7e0e0000: builtin trace:loaddll:load_builtin_dll Loaded L"C:\\windows\\system32\\dbghelp.dll" at 0x7e070000: builtin trace:loaddll:load_builtin_dll Loaded L"C:\\windows\\system32\\fusion.dll" at 0x7e0c0000: builtin trace:loaddll:free_modref Unloaded module L"C:\\windows\\system32\\psapi.dll" : builtin trace:loaddll:free_modref Unloaded module L"C:\\windows\\system32\\dbghelp.dll" : builtin trace:loaddll:free_modref Unloaded module L"C:\\windows\\system32\\fusion.dll" : builtin trace:loaddll:load_native_dll Loaded L"C:\\windows\\winsxs\\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd\\MSVCR80.dll" at 0x78130000: native trace:loaddll:load_native_dll Loaded L"C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\fusion.dll" at 0x60610000: native trace:loaddll:load_native_dll Loaded L"C:\\windows\\Microsoft.NET\\Framework\\v2.0.50727\\mscorwks.dll" at 0x79e70000: native trace:loaddll:load_native_dll Loaded L"C:\\windows\\system32\\Imagehlp.dll" at 0x76ac0000: native trace:loaddll:free_modref Unloaded module L"C:\\windows\\temp\\MSIc721.tmp" : native (In reply to comment #22) > (In reply to comment #20) > > Если делать хорошо, то надо найти что > > мешает сторонней msi.dll нормально работать. > Откуда вдруг взялась сторонняя msi.dll ? > при запуске через wine используется сторонняя. Просто если при использовании сторонней возникает такая же ошибка (возможно не такая же, проверить сложно), то значит дело не в msi.dll. А сейчас проблема решена хаком для msi.dll. Думаю правильно будет найти действительную причину, и откатить хак. Судя по логу, загружается встроенная fusion.dll: trace:loaddll:load_builtin_dll Loaded L"C:\\windows\\system32\\fusion.dll" at 0x7e0c0000: builtin По умолчанию загружается сторонняя fusion.dll. Если явно указывать загружать встроенную, то установка завершается успешно. Опять же вожникает проблема: Если не работает сторонняя fusion.dll, значит ей что-то мешает. по каналу file и по каналу shell видно, что после загрузки fusion.dll ещё выполняется много вызовов функций. Но определить что конкретно не нравится сторонней fusion.dll не получается. Сделал патч, отменяющий загрузку сторонней fusion.dll по умолчанию. Теперь по умолчания используется встроенная. Теперь есть 2 способа установки .Net: 1) Через WINEDLLOVERRIDES="msi=b" wine dotnetfx2.exe. 2) Просто через wine (будет доступен в сборке с новым патчем). С использованием встроенной msi.dll (способ 1) установка проходит подозрительно быстро, но в итоге всё корректно устанавливается. Отличий от второго способа пока не нашёл. Отдельный вопрос - запуск программ. .Net стал устанавливаться, но программы по-прежнему не удаётся запустить. (баги 3286, 3287 и 3289). К сожалению пока нет способа проверить правильность установки. Все файлы на месте, но программы по-прежнему не запускаются. Думаю эту багу следует закрыть, а по запуску программ есть отдельная бага Проверил на установке dotNet1.1. С новым патчем установка не проходит. Надо сторонний fusion.dll И ещё, со сторонней msi.dll установка тоже не проходит. В итоге, после отката патча должен работать только один способ: WINEDLLOVERRIDES="msi=b" wine dotnetfx2.exe Ещё дополнение: При установке появляется: Возможно этим и объясняется быстрота установки. err:msi:HANDLE_CustomType34 Unable to execute command L"\"C:\\windows\\Microsoft.NET\\Framework\\netfxsbs20.exe\" /install" Такого файла там нет. есть только *sbs10.exe Ещё небольшое добавление: Сейчас при создании бутылки изменилась конфигурация wine по умолчанию. Теперь запускается только через: WINEDLLOVERRIDES="secur32.dll" wwxp dotnetfx2.exe. Но установка по-прежнему проходит не полностью. > WINEDLLOVERRIDES="secur32.dll" wwxp dotnetfx2.exe.
Ошибся, поторопился. Должно быть:
WINEDLLOVERRIDES="secur32=b" wwxp dotnetfx2.exe.
Можно предположить, что файл netfxsbs20.exe по какой-то причине не копируется. Проверил трейс по каналу file. Упоминание данного файла встречается только перед вызовом: err:msi:HANDLE_CustomType34 Unable to execute command L"\"C:\\windows\\Microsoft.NET\\Framework\\netfxsbs20.exe\" /install" Пробовал установку с использованием сторонней msi.dll. Файла netfxsbs20.exe в нужном месте также не оказалось. Проверил в винде. Там тоже нет этого файла. Можно предположить, что его там и не должно быть. Значит проблема в том, что одно невыполненное действие отменяет всю установку. Надо найти соответствующее место отмены. пока добрался до функций ACTION_PerformAction и ACTION_PerformUIAction. (In reply to comment #32) > Можно предположить, что файл netfxsbs20.exe по > какой-то причине не копируется. > > Проверил трейс по каналу file. Упоминание > данного файла встречается только перед > вызовом: > err:msi:HANDLE_CustomType34 Unable to execute command > L"\"C:\\windows\\Microsoft.NET\\Framework\\netfxsbs20.exe\" /install" При установке из MSI у нас сплошь и рядом проблема, когда файл, который запускается из целевого каталога, на самом деле находится в исходном. (In reply to comment #34) > При установке из MSI у нас сплошь и рядом > проблема, когда файл, который запускается > из целевого каталога, на самом деле > находится в исходном. > Проверил. В папке с установкой такого файла нет (In reply to comment #33) > Можно предположить, что его там и не должно > быть. > Значит проблема в том, что одно > невыполненное действие отменяет всю > установку. > Надо найти соответствующее место отмены. > > пока добрался до функций ACTION_PerformAction и > ACTION_PerformUIAction. > Ошибся. Команда не выполняется, но всё-равно возвращает ERROR_SUCCESS. Проблема в другом. Пробовал распаковать сборку с помощью Advanced Installer. - файла netfxsbs20.exe там не обнаружил. Как написано по этому поводу в appdb.winehq: "This message is harmless and expected" Нашёл проблему. Для запуска программ надо скопировать сторонний файл l_intl.nls в папку system32. На установку это никак не влияет, но программы не запускались именно из-за этого. Итак устанавливать надо: 1) коммандой WINEDLLOVERRIDES="secur32=b" wwxp dotnetfx2.exe 2) после установки скопировать сторонний файл l_intl.nls в папку system32 В связи с закрытием баги #3287 появился другой (и единственно правильный на даннный момент) метод установки: 1) Сначала необходимо установить dotNet1.1 2) Только после этого устанавливать dotNet2.0 файл l_intl.nls копировать не надо. WINEDLLOVERRIDES="secur32=b" использовать пока надо, но в ближашее время это должно быть исправлено *** Bug 4126 has been marked as a duplicate of this bug. *** |