Summary: | Не работает msiexec | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Константин Кондратюк <kondratyuk> |
Component: | Общее | Assignee: | Константин Кондратюк <kondratyuk> |
Status: | CLOSED FIXED | QA Contact: | Vitaly Lipatov <lav> |
Severity: | major | ||
Priority: | P2 | CC: | lav |
Version: | 1.0.4 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 190, 488 | ||
Attachments: |
Description
Константин Кондратюк
2006-10-31 15:15:35 MSK
Created attachment 77 [details]
Происходит ошибка при установке (wine c:\downloads\InstMsiA.exe).
Вызывается функция GetCORSystemDirectory, которая не реализована в wine.
Патч добавляет эту функцию, но всё равно происходит падение.
При блокировании библиотеки mscoree.dll ошибка не проявляется.
Временное решение - исключать mscoree.dll из сборки (или блокировать).
Также существует какая-то зависимость от того, какая версия windows включена в winecfg. Нужно попробовать разные варианты, но желательно, чтобы по умолчанию стояла 2000 или XP. Получилось установить msiexec с конфигурацией XP по умолчанию. 1. Нужно добавить msiexec.exe в список приложений и установить для него версию win98. 2. Блокировать mscoree.dll в приложениях по умолчанию. Нужно включить эти изменения в 1.0.5. Тогда можно будет перевести багу в состояние LATER. Ситуацию с mscoree.dll нужно проконтролировать в следующих версиях wine. Добавление msiexec в список приложений - лишь частное решение. Другие установщики не работают, ссылаясь на повреждённый Installer. В 1.0.5 оставляем версию windows по умолчанию 98. mscoree.dll исключаем из сборки. Нужно разобраться, почему не работает wine start файл.msi и исправить это. У меня подозрение, что вайновскому msiexec ключ /i не нужен, а виндовому - нужен. Я даже уверен в этом, потому что через winexp - работает. Кстати, в релизе в winexp ошибка, связанная именно с msi. на сервере я её исправил. Нужно устранить причину, поскольку в документации описан способ wine start файл.msi И вайновский, и виндовый msiexec работают только с ключом /i. Без него вайновский msiexec сообщает: Product code on commandline unimplemented as of yet Через wine start и просто через wine должен запускаться именно msiexec /i. Что и попробую сделать... Строка wine.inf, отвечающая за кусок реестра с msiexec /i HKCR,Msi.Package\shell\Open\command,,2,"msiexec /i %1" Запись в реестре: [Software\\Classes\\Msi.Package\\shell\\Open\\command] 1166800110 @="\"C:\\windows\\system32\\msiexec.exe\" /i \"%1\" %*" Запись в реестре, с которой начинает работать через wine start: [Software\\Classes\\Msi.Package\\shell\\Open\\command] 1166800110 @="\"C:\\windows\\system32\\msiexec.exe\" /i \"%1\"" Также работает строка без "лишних" кавычек: @="C:\\windows\\system32\\msiexec.exe /i %1" Строка в Windows аналогична той, что заносится в реестр в закрытой части. Т.е. wine неправильно обрабатывает строку (в открытой части строка имеет вид "msiexec /i %1" и проблема незаметна). Убрал часть командной строки, содержащуюю пустой параметр "". Решение не идеальное, но пока сойдёт. Надеюсь, скоро решение будет более правильным и кардинальным... Нужно ещё: 1. багу повесить 2. патч на wine.inf сделать Можешь поставить точку на этой баге? |