msiexec не работает, ссылаясь на неправильные параметры командной строки. При этом установка msi-пакетов всё же возможна с помощью msiexec /i Простой способ воспроизведения: wine start <пакет.msi>
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 сделать
Можешь поставить точку на этой баге?