Bug 2666

Summary: Не устанавливается .NET 2.0
Product: WINE@Etersoft Reporter: Константин Кондратюк <kondratyuk>
Component: Установка программ / MSIAssignee: Виталий Перов <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: 469, 1665, 3157, 641, 1217, 3248, 3286, 3287    
Deadline: 2008-10-20   
Attachments: лог
Ошибка при установке через wine

Description Константин Кондратюк 2008-10-18 00:20:43 MSD
Сборка eter25/alt8
В свободной сборке - вылет в дебаггер.

С закрытой частью
$ winexp dotnetfx2.exe
fixme:advapi:DecryptFileA "C:\\windows\\temp\\IXP000.TMP\\" 00000000
err:seh:setup_exception_record stack overflow 816 bytes in thread 002a eip 0043f1fa esp 00241000 stack 0x240000-0x241000-0x340000

$ wine dotnetfx2.exe
Выполняется, но возникает ошибка, и установка откатывается, удаляя установленные уже файлы.
Comment 1 Константин Кондратюк 2008-10-18 00:22:14 MSD
Андрей, если найдёшь способ корректно установить, то напиши в багу рецепт в первую очередь.
У меня воспроизводится на сизифе.
Comment 2 Andrey Vusik 2008-10-18 15:18:05 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
Comment 3 Andrey Vusik 2008-10-18 15:20:35 MSD
По 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
....
Comment 4 Andrey Vusik 2008-10-18 15:34:06 MSD
Вообще 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)
Comment 5 Andrey Vusik 2008-11-08 19:16:24 MSK
На последней сборке воспроизводится.
Comment 6 Константин Кондратюк 2008-12-04 11:34:15 MSK
*** Bug 1465 has been marked as a duplicate of this bug. ***
Comment 7 Константин Кондратюк 2008-12-04 15:05:28 MSK
Должен устанавливаться с помощью winetricks!

http://appdb.winehq.org/objectManager.php?sClass=version&iId=3754
Comment 8 Константин Кондратюк 2008-12-04 17:22:02 MSK
Если он может работать сейчас, то нужно это узнать сейчас. В оригинальном вайне + winetricks работает сейчас. Странно, что мы не сделали это к релизу 1.0.9, проблема была замечена ещё в rc.
Comment 9 Денис Баранов 2008-12-05 20:41:10 MSK
Не удалось заставиь установиться ни какими обманами =)

Если устанавливать через winetricks установка прерывается и в консоли:

err:seh:setup_exception_record stack overflow 816 bytes in thread 0031 eip 0043f1fa esp 00241000 stack 0x240000-0x241000-0x340000

Устанавливая версию W2000 как рекомендуется и пытаясь установиьт просто через wine получаем лог(в атаче).
Comment 10 Денис Баранов 2008-12-05 20:41:39 MSK
Created attachment 953 [details]
лог
Comment 11 Денис Баранов 2009-01-08 16:36:35 MSK
*** Bug 2862 has been marked as a duplicate of this bug. ***
Comment 12 Виталий Перов 2009-01-10 20:01:53 MSK
Подробней об установке можно почитать на:
http://appdb.winehq.org/objectManager.php?sClass=version&iId=3754

Но так, как там описывается у меня не получилось.

В "чистом" wine устанавливается, но только через winexp. Причём наличие l_intl.nls на ход установки никак не влияет
Comment 13 Виталий Перов 2009-01-16 17:02:03 MSK
1) Устанавливать надо не только через winexp, ещё нужно выбрать версию виндовс 98 вместо 2000

2) В ветке eterwine тоже не работает

3) При различных параметрах программа ведёт себя по-разному.
Сейчас в ветке eterwine установка даже не запускается. Падает при старте программы
Comment 14 Виталий Перов 2009-01-16 18:50:57 MSK
Создаётся такое впечатление, что установка .Net 2.0 у нас никогда и не работала.
Примерно в районе версии 1.0 появляется ошибка: установка входит в критическую секцию, и останавливает выполнение.
Отсюда вывод: существует в eterwine патч, вызываеющий багу, но путём отката найти его никак нельзя
Comment 15 Виталий Перов 2009-01-16 22:04:22 MSK
Проблемы с падением были вызваны загрузкой нативной secur32.dll (бага 3269)

Проблема с откатом установки решились благодаря патчу Антона (бага 807).

Сейчас установка .Net 2.0 проходит без проблем.
Вот только не удаётся проверить правильность установки.
(Необходимо найти программу, написанную на .net, которая успешно запускается в "чистом" wine)
Comment 16 Виталий Перов 2009-01-16 22:51:42 MSK
Проверил в чистой бутылке - устанавливается.
Вот только установка проходит подозрительно быстро.
Comment 17 Andrey Vusik 2009-03-03 14:43:17 MSK
(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
Comment 18 Andrey Vusik 2009-03-03 14:44:05 MSK
Created attachment 1087 [details]
Ошибка при установке через wine
Comment 19 Виталий Перов 2009-03-16 13:13:14 MSK
Устанавливать надо обязательно со встронной 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 вызывает падение, хорошо бы в этом разобраться по-подробней.
Comment 20 Виталий Перов 2009-03-20 17:50:50 MSK
Если делать хорошо, то надо найти что мешает сторонней 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().
Сейчас она полузаглушка
Comment 21 Виталий Перов 2009-03-20 17:52:48 MSK
Ой, поспешил с выводами.
LoadLibraryShim() находится в mscoree.dll, и при установке .net никак не может вызываться встроенная функция
Comment 22 Vitaly Lipatov 2009-03-20 18:12:41 MSK
(In reply to comment #20)
> Если делать хорошо, то надо найти что
> мешает сторонней msi.dll нормально работать.
Откуда вдруг взялась сторонняя msi.dll ?
Comment 23 Виталий Перов 2009-03-20 18:19:04 MSK
Непосредственно перед откатом установки
загружаются:

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
Comment 24 Виталий Перов 2009-03-20 18:22:22 MSK
(In reply to comment #22)
> (In reply to comment #20)
> > Если делать хорошо, то надо найти что
> > мешает сторонней msi.dll нормально работать.
> Откуда вдруг взялась сторонняя msi.dll ?
> 

при запуске через wine используется сторонняя.

Просто если при использовании сторонней возникает такая же ошибка (возможно не такая же, проверить сложно), то значит дело не в msi.dll. А сейчас проблема решена хаком для msi.dll. Думаю правильно будет найти действительную причину, и откатить хак.
Comment 25 Виталий Перов 2009-03-20 19:13:28 MSK
Судя по логу, загружается встроенная fusion.dll:
trace:loaddll:load_builtin_dll Loaded L"C:\\windows\\system32\\fusion.dll" at
0x7e0c0000: builtin

По умолчанию загружается сторонняя fusion.dll.
Если явно указывать загружать встроенную, то установка завершается успешно.

Опять же вожникает проблема:
Если не работает сторонняя fusion.dll, значит ей что-то мешает.
Comment 26 Виталий Перов 2009-03-20 19:56:23 MSK
по каналу file и по каналу shell видно, что после загрузки fusion.dll ещё выполняется много вызовов функций. Но определить что конкретно не нравится сторонней fusion.dll не получается.
Comment 27 Виталий Перов 2009-03-20 21:35:50 MSK
Сделал патч, отменяющий загрузку сторонней fusion.dll по умолчанию. Теперь по умолчания используется встроенная.

Теперь есть 2 способа установки .Net:
1) Через WINEDLLOVERRIDES="msi=b" wine dotnetfx2.exe.
2) Просто через wine (будет доступен в сборке с новым патчем).

С использованием встроенной msi.dll (способ 1) установка проходит подозрительно быстро, но в итоге всё корректно устанавливается. Отличий от второго способа пока не нашёл.

Отдельный вопрос - запуск программ. .Net стал устанавливаться, но программы по-прежнему не удаётся запустить. (баги 3286, 3287 и 3289).

К сожалению пока нет способа проверить правильность установки. Все файлы на месте, но программы по-прежнему не запускаются.
Думаю эту багу следует закрыть, а по запуску программ есть отдельная бага
Comment 28 Виталий Перов 2009-03-21 13:27:12 MSK
Проверил на установке dotNet1.1.
С новым патчем установка не проходит. Надо сторонний fusion.dll

И ещё, со сторонней msi.dll установка тоже не проходит.

В итоге, после отката патча должен работать только один способ:
WINEDLLOVERRIDES="msi=b" wine dotnetfx2.exe
Comment 29 Виталий Перов 2009-03-21 17:43:20 MSK
Ещё дополнение: При установке появляется:
Возможно этим и объясняется быстрота установки.

err:msi:HANDLE_CustomType34 Unable to execute command L"\"C:\\windows\\Microsoft.NET\\Framework\\netfxsbs20.exe\" /install"

Такого файла там нет. есть только *sbs10.exe
Comment 30 Виталий Перов 2009-03-24 17:58:46 MSK
Ещё небольшое добавление:
Сейчас при создании бутылки изменилась конфигурация wine по умолчанию.

Теперь запускается только через:
WINEDLLOVERRIDES="secur32.dll" wwxp dotnetfx2.exe.

Но установка по-прежнему проходит не полностью.
Comment 31 Виталий Перов 2009-03-24 18:08:57 MSK
> WINEDLLOVERRIDES="secur32.dll" wwxp dotnetfx2.exe.
Ошибся, поторопился. Должно быть:
WINEDLLOVERRIDES="secur32=b" wwxp dotnetfx2.exe.

Comment 32 Виталий Перов 2009-03-24 19:19:09 MSK
Можно предположить, что файл netfxsbs20.exe по какой-то причине не копируется.

Проверил трейс по каналу file. Упоминание данного файла встречается только перед вызовом:
err:msi:HANDLE_CustomType34 Unable to execute command L"\"C:\\windows\\Microsoft.NET\\Framework\\netfxsbs20.exe\" /install"
Comment 33 Виталий Перов 2009-03-24 20:03:08 MSK
Пробовал установку с использованием сторонней msi.dll.
Файла netfxsbs20.exe в нужном месте также не оказалось.

Проверил в винде. Там тоже нет этого файла.

Можно предположить, что его там и не должно быть.
Значит проблема в том, что одно невыполненное действие отменяет всю установку.
Надо найти соответствующее место отмены.

пока добрался до функций ACTION_PerformAction и ACTION_PerformUIAction.
Comment 34 Vitaly Lipatov 2009-03-24 22:04:39 MSK
(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 у нас сплошь и рядом проблема, когда файл, который запускается из целевого каталога, на самом деле находится в исходном.
Comment 35 Виталий Перов 2009-03-30 12:48:00 MSD
(In reply to comment #34)
> При установке из MSI у нас сплошь и рядом
> проблема, когда файл, который запускается
> из целевого каталога, на самом деле
> находится в исходном.
> 
Проверил. В папке с установкой такого файла нет
Comment 36 Виталий Перов 2009-03-30 14:13:20 MSD
(In reply to comment #33)
> Можно предположить, что его там и не должно
> быть.
> Значит проблема в том, что одно
> невыполненное действие отменяет всю
> установку.
> Надо найти соответствующее место отмены.
> 
> пока добрался до функций ACTION_PerformAction и
> ACTION_PerformUIAction.
> 

Ошибся. Команда не выполняется, но всё-равно возвращает ERROR_SUCCESS.
Проблема в другом.

Пробовал распаковать сборку с помощью Advanced Installer. - файла netfxsbs20.exe там не обнаружил.

Как написано по этому поводу в appdb.winehq: "This message is harmless and expected"


Comment 37 Виталий Перов 2009-03-30 14:18:02 MSD
Нашёл проблему.
Для запуска программ надо скопировать сторонний файл l_intl.nls в папку system32.
На установку это никак не влияет, но программы не запускались именно из-за этого.

Итак устанавливать надо:
1) коммандой WINEDLLOVERRIDES="secur32=b" wwxp dotnetfx2.exe
2) после установки скопировать сторонний файл l_intl.nls в папку system32
Comment 38 Виталий Перов 2009-04-03 13:55:37 MSD
В связи с закрытием баги #3287 появился другой (и единственно правильный на даннный момент) метод установки:
1) Сначала необходимо установить dotNet1.1
2) Только после этого устанавливать dotNet2.0
файл l_intl.nls копировать не надо.
WINEDLLOVERRIDES="secur32=b" использовать пока надо, но в ближашее время это должно быть исправлено
Comment 39 Виталий Перов 2009-08-09 19:49:00 MSD
*** Bug 4126 has been marked as a duplicate of this bug. ***