Summary: | Починить установку Гарант 7.09.1.019-local в winevanilla wine-1.7.38 | ||
---|---|---|---|
Product: | [Сторонние программы (Other programs)] Гарант | Reporter: | Danil Michailov <danil> |
Component: | Прочее | Assignee: | Dmitry Timoshkov <dtimoshkov> |
Status: | CLOSED FIXED | QA Contact: | Danil Michailov <danil> |
Severity: | minor | ||
Priority: | P4 | CC: | akv, dtimoshkov, lav |
Version: | не указана | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | Linux | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 10157 | ||
Attachments: | MovePathName |
Description
Danil Michailov
2015-03-11 16:22:17 MSK
По идее разработчику (т.е. мне) с этой задачей делать нечего, это чисто механический поиск регрессии: http://wiki.winehq.org/RegressionTesting Для контекста привожу копию своего комментария к задаче 10157: http://bugs.etersoft.ru/show_bug.cgi?id=10157#c18 ============================================================================ (Ответ Danil Michailov на комментарий16) > > Если установка работала в одной из предыдущих версий wine, то нужно провести > > поиск регресси. Инструкции здесь: http://wiki.winehq.org/RegressionTesting > > У меня нет информации работала ли когда-то Гарант под wine-vanilla > Нашел только в сомнительном источнике что с нашим хаком работал не известный > Гарант на wine-vanilla 1.0.10 > http://reatlat.blogspot.ru/2009/08/wine-etersoft.html Этот "сомнительный источник" напрямую цитирует комментарии из http://bugs.etersoft.ru/show_bug.cgi?id=156 При исследовании гарантовского установщика под официальным wine, выяснилось, что при использовании +relay установщик начинает сообщать о совершенно другой ошибке, на этот раз об отсутсвии необходимого языкового пакета установщика. При этом +profile показывает, что без +relay GetPrivateProfile* спокойно читает настройки из файла f1setup.ini (в котором видимо должны находиться языковые настройки установщика), а с +relay GetPrivateProfile* не находят этого файла. При чем файл f1setup.ini не существует в принципе. Его просто нет. После многочисленных попыток выяснить причину этого поведения оказалось, что установщик обернут в старый добрый Молебокс, который уже столько убил времени и нервов при исследовании проблем с самим Гарантом. Видимо Молебокс "виртуализирует" доступ к файлу f1setup.ini. Отключение трассировки в +relay ntdll.* позволило обойти проблему с f1setup.ini. Причина по которой установщик прерывает свою дальнейшую работу в том, что он получает ошибку от SHFileOperation. Багзилла etersoft просто кишит багами о Гаранте + SHFileOperation. При этом практически ни одина из этих багов не содержит исчерпывающего описания проблемы, хотя большинство из этих задач отмечены как решенные либо как дубликаты других решенных задач. Одна из задач в которой есть хоть какая-то информация - это задача 1074. Хотя git ветки eter-2.1 содержит несколько вариантов патчей для решения задачи 1074, с этими патчами творится полный хаос: есть и реверты, есть и новые хаки. Зато нет ни одного теста или попытки отправить исправления в официальный wine. Но что более интересно, копирование файла dlls/shell32/shlfileop.c целиком из eter-2.1 поверх этого же файла в wine-git не решают проблему с ошибками SHFileOperation и установщик Гаранта продолжает завершаться с ошибкой. Видимо исследование проблему нужно начинать с самого начала. ============================================================================ К ошибке приводит следующий вызов SHFileOperation: SHFILEOPSTRUCT shfo; shfo.wFunc = FO_MOVE; shfo.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI | FOF_SILENT; shfo.pFrom = "C:\\Program Files\\Garant Local\\settings\\*.*\0"; shfo.pTo = "C:\\Program Files\\Garant Local\\settings.tmp\\*.*\0"; SHFileOperation(&shfo); Тест показывает, что этот же вызов так же заканчивается неудачей под Windows7. При чем если убрать завершающий "\\*.*" из строки shfo.pTo, то SHFileOperation успешно выполняет свою работу. Т.е. SHFileOperation в wine работает правильно. Одной из причин неудачи может быть эти завершающие "\\*.*", но как именно они попадают в результирующий буфер пока непонятно, к тому же похоже, что Молебокс перехватывает и виртуализирует в том числе API из kernel32 и shell32, поэтому вполне возможно, что это может быть и результатом работы Молебокса. (Ответ Dmitry Timoshkov на комментарий3)
> К ошибке приводит следующий вызов SHFileOperation:
>
> SHFILEOPSTRUCT shfo;
> shfo.wFunc = FO_MOVE;
> shfo.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI |
> FOF_SILENT;
> shfo.pFrom = "C:\\Program Files\\Garant Local\\settings\\*.*\0";
> shfo.pTo = "C:\\Program Files\\Garant Local\\settings.tmp\\*.*\0";
> SHFileOperation(&shfo);
>
> Тест показывает, что этот же вызов так же заканчивается неудачей под
> Windows7.
> При чем если убрать завершающий "\\*.*" из строки shfo.pTo, то
> SHFileOperation
> успешно выполняет свою работу. Т.е. SHFileOperation в wine работает
> правильно.
> Одной из причин неудачи может быть эти завершающие "\\*.*", но как именно
> они попадают в результирующий буфер пока непонятно, к тому же похоже, что
> Молебокс перехватывает и виртуализирует в том числе API из kernel32 и
> shell32,
> поэтому вполне возможно, что это может быть и результатом работы Молебокса.
Анализ вызовов API предшествующих терпящему неудачу SHFileOperation
показал, что перед ним установщик Гаранта проверяет версию shell32.dll
с помощью GetFileVersion* API. Поэтому появилась идея протестировать
поведение SHFileOperation с вышеприведенным фрагментом под XP, возможно
эта проверка версии shell32 означает, что поведение этого API в разных
версиях Windows отличается. Мои ожидания не оправдались, SHFileOperation
в вышеприведенном тесте ведет себя одинаково под Windows7 и XP.
P.S.
Пришлось повозиться с восстановлением работоспособности virtualbox после
очередного обновления ядра altlinux, интересно, эти ребята вообще не
тестируют ядра перед публикацией?
(Ответ Dmitry Timoshkov на комментарий4)
> Анализ вызовов API предшествующих терпящему неудачу SHFileOperation
> показал, что перед ним установщик Гаранта проверяет версию shell32.dll
> с помощью GetFileVersion* API. Поэтому появилась идея протестировать
> поведение SHFileOperation с вышеприведенным фрагментом под XP, возможно
> эта проверка версии shell32 означает, что поведение этого API в разных
> версиях Windows отличается. Мои ожидания не оправдались, SHFileOperation
> в вышеприведенном тесте ведет себя одинаково под Windows7 и XP.
После очередного раунда медитации над логами было решено пропустить шаг
с SHFileOperation и посмотреть, как установщик поведет себя дальше. Для
этого был приложен небольшой хак, заменяющий строку pTo содержащую *.*
на такую же, но без *.*. С этим хаком SHFileOperation завершается удачей,
но тем не менее установщик все так же сообщает об ошибке. Дальнейшее
исследование логов показало, что теперь виной этому терпящий неудачу
вызов RemoveDirectory(""C:\\Program Files\\Garant Local\\settings"),
который вызывается установщиком почти сразу после SHFileOperation.
Как оказалось, RemoveDirectory не может удалить директорию потому что
она не пустая, в ней остается вложенная директория, оставшаяся после
вызова SHFileOperation. И вот это уже реальный баг SHFileOperation.
(Ответ Dmitry Timoshkov на комментарий5)
> После очередного раунда медитации над логами было решено пропустить шаг
> с SHFileOperation и посмотреть, как установщик поведет себя дальше. Для
> этого был приложен небольшой хак, заменяющий строку pTo содержащую *.*
> на такую же, но без *.*. С этим хаком SHFileOperation завершается удачей,
> но тем не менее установщик все так же сообщает об ошибке. Дальнейшее
> исследование логов показало, что теперь виной этому терпящий неудачу
> вызов RemoveDirectory(""C:\\Program Files\\Garant Local\\settings"),
> который вызывается установщиком почти сразу после SHFileOperation.
> Как оказалось, RemoveDirectory не может удалить директорию потому что
> она не пустая, в ней остается вложенная директория, оставшаяся после
> вызова SHFileOperation. И вот это уже реальный баг SHFileOperation.
Добавил тест, воспроизводящий проблему с SHFileOperation. Но пока
не получилось эту проблему исправить, так как мои изменеия в коде
ведут к неудачам в существующих тестах. Вызывает дополнительные
затруднения в понимании происходящего то, что имена файлов и
директорий в существующих тестах сбивают с толку, например test4.txt -
это имя вложенной директории и вовсе не файла как может показаться.
Пока не решил точно, но склоняюсь к тому, чтобы одним из первых шагов
удалить эту путаницу из тестов.
(Ответ Dmitry Timoshkov на комментарий6) > Добавил тест, воспроизводящий проблему с SHFileOperation. Но пока > не получилось эту проблему исправить, так как мои изменеия в коде > ведут к неудачам в существующих тестах. Нашел довольно простое решение проблемы с SHFileOperation, которое не ломает существующие тесты и упрощает код, перемещающий директории. Отправил патчи с тестом и исправлением в wine-patches. С моим исправлением и дополнительным хаком для SHFileOperation (установщик вызывает его еще один раз с флагом FO_MOVE, но для других директорий) установка Гаранта завершается успешно (остается открытым окно отладчика с сообщением об ошибке, но похоже, что оно ни на что не влияет). При этом в логе установки не видно ни малейшей попытки установить Flash, поэтому направление дальнейших шагов по изучению этой проблемы пока неясны. В продолжение исследования источника проблемы с неудачей SHFileOperation нашел место в установщике, из которого выполняется проблемный вызов: это обработчик msi action "MovePathName" из msihlp32.dll, который распаковывается msi.dll во временный файл при установке. Исследование API вызовов из этого DLL под wine в значительной мере затруднено из-за Молебокса. Можно будет попробовать дизассемблировать эту DLL и постараться понять, что она делает и почему. > Вызывает дополнительные > затруднения в понимании происходящего то, что имена файлов и > директорий в существующих тестах сбивают с толку, например test4.txt - > это имя вложенной директории и вовсе не файла как может показаться. > Пока не решил точно, но склоняюсь к тому, чтобы одним из первых шагов > удалить эту путаницу из тестов. Путаницу с использованием имени test4.txt удалить не получится по той причине, что это имя используется специально для тестирования флага FOF_FILESONLY с маской test?.txt. Поэтому от этого шага пришлось отказаться. (Ответ Dmitry Timoshkov на комментарий7)
...
> Исследование API вызовов из этого
> DLL под wine в значительной мере затруднено из-за Молебокса. Можно будет
> попробовать дизассемблировать эту DLL и постараться понять, что она делает
> и почему.
Если нужен установщик, не завёрнутый в Молебокс, мы можем запросить его у Гаранта.
Если есть вопросы по коду, написанному Гарантом, можно запросить у них комментарии.
(Ответ Vitaly Lipatov на комментарий8) > > Исследование API вызовов из этого > > DLL под wine в значительной мере затруднено из-за Молебокса. Можно будет > > попробовать дизассемблировать эту DLL и постараться понять, что она делает > > и почему. > Если нужен установщик, не завёрнутый в Молебокс, мы можем запросить его у > Гаранта. Да, это было бы полезно попросить установщик без Молебокса. > Если есть вопросы по коду, написанному Гарантом, можно запросить у них > комментарии. Если код обработчика "MovePathName" из msihlp32.dll написан Гарантом, то было бы достаточным увидеть его исходник, или как минимум кусок, вызывающий SHFileOperation(FO_MOVE). (Ответ Dmitry Timoshkov на комментарий9)
> > Если есть вопросы по коду, написанному Гарантом, можно запросить у них
> > комментарии.
>
> Если код обработчика "MovePathName" из msihlp32.dll написан Гарантом, то
> было бы достаточным увидеть его исходник, или как минимум кусок, вызывающий
> SHFileOperation(FO_MOVE).
Ну и конечно же было бы неплохо спросить исходя из каких критериев
устанавливается Flash и почему он может не устанавливаться под Wine.
(Ответ Dmitry Timoshkov на комментарий7) > Нашел довольно простое решение проблемы с SHFileOperation, которое > не ломает существующие тесты и упрощает код, перемещающий директории. > Отправил патчи с тестом и исправлением в wine-patches. Патчи с тестом и исправлением для SHFileOperation приняты. > С моим исправлением и дополнительным хаком для SHFileOperation (установщик > вызывает его еще один раз с флагом FO_MOVE, но для других директорий) > установка Гаранта завершается успешно (остается открытым окно отладчика > с сообщением об ошибке, но похоже, что оно ни на что не влияет). При этом > в логе установки не видно ни малейшей попытки установить Flash, поэтому > направление дальнейших шагов по изучению этой проблемы пока неясны. > > В продолжение исследования источника проблемы с неудачей SHFileOperation > нашел место в установщике, из которого выполняется проблемный вызов: это > обработчик msi action "MovePathName" из msihlp32.dll, который распаковывается > msi.dll во временный файл при установке. Исследование API вызовов из этого > DLL под wine в значительной мере затруднено из-за Молебокса. Можно будет > попробовать дизассемблировать эту DLL и постараться понять, что она делает > и почему. Сопоставление дизассемблированного кода "MovePathName" из msihlp32.dll с relay логом пока ничего существенного не дало, изучать дельфийский код в дизассемблере еще то удовольствие. Created attachment 3181 [details]
MovePathName
гарант прислал кусочек кода
(Ответ Konstantin Artyushkin на комментарий12)
> Создано attachment 3181 [details]
> MovePathName
>
> гарант прислал кусочек кода
Этот фрагмент кода подтвердил, что установщик Гаранта проверяет Product
Version из ресурсов shell32 и если версия ниже 4.0 добавляет *.* к пути,
передаваемому SHFileOperation. Патч, исправляющий версию в ресурсах shell32
и делающий все числа в соответствие версии shell32 из XP полностью решает
проблему с неудачами SHFileOperation. Этот патч отправлен в wine-patches.
Остаются два нерешенных вопроса:
1. исключение в конце установки (нефатальное)
2. установка плагина Flash не производится
На второй вопрос котелось бы получить хоть какую-то информацию от
разработчиков Гаранта.
Скачал не молебоксную версию от гаранта лежит по адресу /var/ftp/pvt/Windows/garant/7_10_1/desktop-private/ В папке apps есть файл FLASH.ocx. Какую именно информацию нужно запросить у Гаранта по поводу установки flash? (Ответ Konstantin Artyushkin на комментарий14)
> Скачал не молебоксную версию от гаранта
> лежит по адресу /var/ftp/pvt/Windows/garant/7_10_1/desktop-private/
>
Переименовал в /var/ftp/pvt/Windows/garant/7_10_1_no-molebox/desktop-private чтобы не путаться
(Ответ Dmitry Timoshkov на комментарий13) > (Ответ Konstantin Artyushkin на комментарий12) > > Создано attachment 3181 [details] > > MovePathName > > > > гарант прислал кусочек кода > > Этот фрагмент кода подтвердил, что установщик Гаранта проверяет Product > Version из ресурсов shell32 и если версия ниже 4.0 добавляет *.* к пути, > передаваемому SHFileOperation. Патч, исправляющий версию в ресурсах shell32 > и делающий все числа в соответствие версии shell32 из XP полностью решает > проблему с неудачами SHFileOperation. Этот патч отправлен в wine-patches. Патч принят. Теперь установка Гаранта завершается успешно при выполнении в официальном Wine. > Остаются два нерешенных вопроса: > 1. исключение в конце установки (нефатальное) Пока непонятно, что является источником исключения, установщик Гаранта пытается открыть с помощью RegOpenKey ключ реестра (в котором судя по имени можгут находиться настройки или данные Гаранта), но этого ключа нет в реестре, и RegOpenKey возвращает ошибку, сразу после этого происходит исключение при доступе к памяти, но winedbg по какой-то причине не может запуститься, и установка просто заканчивается. (Ответ Konstantin Artyushkin на комментарий14)
> Скачал не молебоксную версию от гаранта
> лежит по адресу /var/ftp/pvt/Windows/garant/7_10_1/desktop-private/
>
> В папке apps есть файл FLASH.ocx.
>
> Какую именно информацию нужно запросить у Гаранта по поводу установки flash?
Хотелось бы узнать на основании чего установщик принимает решение
устанавливать или нет плагин Flash, и что требуется для его установки.
Вот еще несколько вопросов:
1. Возможно Flash просто не включен в этот дистрибутив Гаранта?
2. Требует ли установка Flash наличия IE какой-то определенной версии или
проверяется какая-то определенная функциональность?
3. Возможно ли проверить установку Flash без установки всего Гаранта?
(Ответ Konstantin Artyushkin на комментарий15)
> > Скачал не молебоксную версию от гаранта
> > лежит по адресу /var/ftp/pvt/Windows/garant/7_10_1/desktop-private/
> >
>
> Переименовал в /var/ftp/pvt/Windows/garant/7_10_1_no-molebox/desktop-private
> чтобы не путаться
Permission denied.
(Ответ Dmitry Timoshkov на комментарий18)
> (Ответ Konstantin Artyushkin на комментарий15)
> > > Скачал не молебоксную версию от гаранта
> > > лежит по адресу /var/ftp/pvt/Windows/garant/7_10_1/desktop-private/
> > >
> >
> > Переименовал в /var/ftp/pvt/Windows/garant/7_10_1_no-molebox/desktop-private
> > чтобы не путаться
>
> Permission denied.
Возможно ди как-то более оперативно решать такого рода проблемы?
Новое место /var/ftp/tmp/akv/7_10_1_no-molebox/desktop-private (Ответ Konstantin Artyushkin на комментарий20) > Новое место > > /var/ftp/tmp/akv/7_10_1_no-molebox/desktop-private Что там должно лежать? Дистрибутив Гаранта, пригодный для установки? Уже установленный гарант? setup.exe или что-то похожее там отсутствует, есть garant.exe, при попытке выполнения которого выводится окно с ошибкой о невозможности выполнить apps\winNT\F1ConsultingChecker.run. Такого файла в директории apps\winNT действительно нет, хотя присутствует манифест F1ConsultingChecker.run. При этом apps\win9X\F1ConsultingChecker.run существует. (Ответ Konstantin Artyushkin на комментарий14) > Скачал не молебоксную версию от гаранта > лежит по адресу /var/ftp/pvt/Windows/garant/7_10_1/desktop-private/ > > В папке apps есть файл FLASH.ocx. Такого файла там нет. Похоже, что при копировании не хватило места на диске. (Ответ Dmitry Timoshkov на комментарий16)
> > Остаются два нерешенных вопроса:
> > 1. исключение в конце установки (нефатальное)
>
> Пока непонятно, что является источником исключения, установщик Гаранта
> пытается открыть с помощью RegOpenKey ключ реестра (в котором судя по
> имени можгут находиться настройки или данные Гаранта), но этого ключа нет
> в реестре, и RegOpenKey возвращает ошибку, сразу после этого происходит
> исключение при доступе к памяти, но winedbg по какой-то причине не может
> запуститься, и установка просто заканчивается.
Продолжаю исследовать проблему с генерацией исключения в конце установки,
пока сложно сказать что-то определенное, но есть теория, что Молебокс по
какой-то причине не может вернуть или сгенерировать виртуальный путь из
реестра, возможно Wine не вызывает один из перехваченных API, может причина
в чем-то другом. Возможно причина и не в Молебоксе.
(Ответ Konstantin Artyushkin на комментарий20)
> Новое место
>
> /var/ftp/tmp/akv/7_10_1_no-molebox/desktop-private
Давайте попробуем так :
/var/ftp/pvt/Windows/garant/7_10_1_no-molebox/desktop-private.r00
/var/ftp/pvt/Windows/garant/7_10_1_no-molebox/desktop-private.rar
504 Мб после распаковки
(Ответ Dmitry Timoshkov на комментарий21) > (Ответ Konstantin Artyushkin на комментарий20) > > Новое место > > > > /var/ftp/tmp/akv/7_10_1_no-molebox/desktop-private > > Что там должно лежать? Дистрибутив Гаранта, пригодный для установки? Уже > установленный гарант? setup.exe или что-то похожее там отсутствует, есть > garant.exe, при попытке выполнения которого выводится окно с ошибкой о > невозможности выполнить apps\winNT\F1ConsultingChecker.run. Такого файла > в директории apps\winNT действительно нет, хотя присутствует манифест > F1ConsultingChecker.run. При этом apps\win9X\F1ConsultingChecker.run > существует. > Столкнулся с такой же проблемой при попытке копировать в бутылку. > (Ответ Konstantin Artyushkin на комментарий14) > > Скачал не молебоксную версию от гаранта > > лежит по адресу /var/ftp/pvt/Windows/garant/7_10_1/desktop-private/ > > > > В папке apps есть файл FLASH.ocx. > > Такого файла там нет. Похоже, что при копировании не хватило места на диске. Согласен - нету. При этом в pvt есть. Лучше наверно, архивом качать. (Ответ Konstantin Artyushkin на комментарий23)
> > /var/ftp/tmp/akv/7_10_1_no-molebox/desktop-private
>
> Давайте попробуем так :
> /var/ftp/pvt/Windows/garant/7_10_1_no-molebox/desktop-private.r00
> /var/ftp/pvt/Windows/garant/7_10_1_no-molebox/desktop-private.rar
>
> 504 Мб после распаковки
Так что же такое в этом архиве?
(Ответ Dmitry Timoshkov на комментарий25)
> Так что же такое в этом архиве?
Та самая не молебоксаня версия Гаранта.
(Ответ Konstantin Artyushkin на комментарий26) > > Так что же такое в этом архиве? > > Та самая не молебоксаня версия Гаранта. Повторю свой вопрос еще раз: (Ответ Dmitry Timoshkov на комментарий21) > Что там должно лежать? Дистрибутив Гаранта, пригодный для установки? Уже > установленный гарант? (Ответ Dmitry Timoshkov на комментарий27)
> > Что там должно лежать? Дистрибутив Гаранта, пригодный для установки? Уже
> > установленный гарант?
Уже установленный.
Ответный вопрос: Что нужно ждать?
(Ответ Konstantin Artyushkin на комментарий28)
> > > Что там должно лежать? Дистрибутив Гаранта, пригодный для установки? Уже
> > > установленный гарант?
>
> Уже установленный.
>
> Ответный вопрос: Что нужно ждать?
В рамках данной задачи решается проблема с установкой Гаранта, в задаче 10157 -
с установкой Flash установщиком Гаранта, зачем нам уже установленный Гарант?
(Ответ Dmitry Timoshkov на комментарий29)
о ждать?
>
> В рамках данной задачи решается проблема с установкой Гаранта, в задаче
> 10157 -
> с установкой Flash установщиком Гаранта, зачем нам уже установленный Гарант?
Отлично. Какие на данный момент проблемы с установкой? Из прочитанного выше вижу, что есть какое-то исключение в конце установки. Можно задать вопрос в гарант, только надо сформулировать красиво.
По поводу Flash будем решать в другой баге.
(Ответ Konstantin Artyushkin на комментарий30) > > В рамках данной задачи решается проблема с установкой Гаранта, в задаче > > 10157 - > > с установкой Flash установщиком Гаранта, зачем нам уже установленный Гарант? > > Отлично. Какие на данный момент проблемы с установкой? Из прочитанного выше > вижу, что есть какое-то исключение в конце установки. Константин, прочитайте пожалуйста все комментарии в этой задаче и найдите объяснение, для чего нам нужен установщик Гаранта без Молебокса. > Можно задать вопрос в > гарант, только надо сформулировать красиво. Пока не о чем спрашивать. (Ответ Dmitry Timoshkov на комментарий31)
>
> Константин, прочитайте пожалуйста все комментарии в этой задаче и найдите
> объяснение, для чего нам нужен установщик Гаранта без Молебокса.
Может ещё кроссворды разгадывать начнём? Не нужен - так и скажите.
Из Гаранта написали нету молебоксных установщиков:
"Только вот что такое немолебоксенная версия установщиков - инсталлятор не молебоксится, молебоксится устанавливаемое содерджимое. Содержимое могу дать (скажите только, какая именно версия поставки интересует - локальная, ф-с, к-с, все и т.д.)"
Содержимое и дали.
Ещё какие загадки будем разгадывать?
(Ответ Konstantin Artyushkin на комментарий32) > > Константин, прочитайте пожалуйста все комментарии в этой задаче и найдите > > объяснение, для чего нам нужен установщик Гаранта без Молебокса. > > Может ещё кроссворды разгадывать начнём? Не нужен - так и скажите. > Из Гаранта написали нету молебоксных установщиков: Установщик /var/ftp/pvt/Windows/garant/7.09.1.019/local совершенно точно содержит обертку-виртуализатор. Это может быть и не Молебокс, а что-то другое, но по логам поведение очень похоже на запуск уже установленного Гаранта: тот же самопальный импорт-резолвер, тот же самый набор API для перехвата из ntdll. Еще раз подчеркну - речь идет именно об установщике, в рамках этой задачи решается проблема установщика. Сотрудник Гаранта, отвечавший на запрос, может быть просто не в курсе. > "Только вот что такое немолебоксенная версия установщиков - инсталлятор не > молебоксится, молебоксится устанавливаемое содерджимое. Содержимое могу дать > (скажите только, какая именно версия поставки интересует - локальная, ф-с, > к-с, все и т.д.)" > > Содержимое и дали. Я не помню, чтобы просил содержимое. Пожалуйста всегда уточняйте вопрос, если есть сомнения или непонимание. Еще раз повторю свой ответ на вопрос Виталия нужна ли мне для исследования проблемы немолебоксная версия установщика Гаранта: Да, мне нужен такой *установщик* Гаранта, без навесных пакеров/криптеров/ обфускаторов/виртуализаторов. Из-за сомнений в том, что действительно ли установщик Гаранта содержит Молебокс, пришлось провести мини-исследование. 1. Действительно protection_id.exe (протестировано несколько версий) не может найти и идентифицировать присутствие защиты ни f1setup.exe, ни в запускаемых им языковых версиях установщика (en-us или ru-ru). 2. Аналогично, protection_id.exe не видит присутсвия Молебокса и в установленном Гаранте (протестирована куча .exe, .run и .dll), хотя Молебокс в установленном Гаранте присутствует на 100%. Это лишь показывает, что protection_id.exe не панацея при определении наличии защиты в PE .exe. 3. При этом логи запуска установленного Гаранта (с Молебоксом) и f1setup.exe очень похожи: присутсвуют тот же список перехватов API из ntdll, тот же алгоритм создания переходников API, те же обертки API, использующие msvcrt.dll а не статически слинкованный C-runtime. Поэтому я могу лишь подтвердить свое утверждение, что f1setup.exe действительно содержит Молебокс (или что-то очень на него похожее). (Ответ Dmitry Timoshkov на комментарий22)
> > > Остаются два нерешенных вопроса:
> > > 1. исключение в конце установки (нефатальное)
> >
> > Пока непонятно, что является источником исключения, установщик Гаранта
> > пытается открыть с помощью RegOpenKey ключ реестра (в котором судя по
> > имени можгут находиться настройки или данные Гаранта), но этого ключа нет
> > в реестре, и RegOpenKey возвращает ошибку, сразу после этого происходит
> > исключение при доступе к памяти, но winedbg по какой-то причине не может
> > запуститься, и установка просто заканчивается.
>
> Продолжаю исследовать проблему с генерацией исключения в конце установки,
> пока сложно сказать что-то определенное, но есть теория, что Молебокс по
> какой-то причине не может вернуть или сгенерировать виртуальный путь из
> реестра, возможно Wine не вызывает один из перехваченных API, может причина
> в чем-то другом. Возможно причина и не в Молебоксе.
Исключение в конце установки может быть связано с попыткой установщика либо
соединиться с удаленным сервером, либо с попыткой установить дополнительные
базы. Где-то я уже видел упоминание подобной проблемы при завершении работы
установщика Гаранта. Пока дальнейшего прогресса нет.
Так как других задач пока нет, то продолжу работать над этой.
Создана новая версия баги по актуальному Гаранту 7.10 http://bugs.etersoft.ru/show_bug.cgi?id=10484 Я бы сказал, что задача скорее решена, чем недействительна. Основная проблема с становкой была решена. Если Вы считаете, что оставшаяся проблема с исключением в конце установки к этой задаче не имеет отношения или вообще неинтересна - пусть будет так. (Ответ Dmitry Timoshkov на комментарий38)
> Я бы сказал, что задача скорее решена, чем недействительна. Основная
> проблема с становкой была решена. Если Вы считаете, что оставшаяся
> проблема с исключением в конце установки к этой задаче не имеет
> отношения или вообще неинтересна - пусть будет так.
Проблема интересна, но только в контексте версии 7.10. Оказалось, что 7.09 не имеет актуальности.
(Ответ Vitaly Lipatov на комментарий39)
> > Я бы сказал, что задача скорее решена, чем недействительна. Основная
> > проблема с становкой была решена. Если Вы считаете, что оставшаяся
> > проблема с исключением в конце установки к этой задаче не имеет
> > отношения или вообще неинтересна - пусть будет так.
> Проблема интересна, но только в контексте версии 7.10. Оказалось, что 7.09
> не имеет актуальности.
Тогда хотелось бы еще раз попросить версию установщика без молебокса (или
что там у них используется) для упрощения исследования проблем.
(Ответ Dmitry Timoshkov на комментарий40)
>
> Тогда хотелось бы еще раз попросить версию установщика без молебокса (или
> что там у них используется) для упрощения исследования проблем.
Вот тут версия Гаранта 7.10.1.004 без molebox (F1Setup.exe) :
/var/ftp/pvt/Windows/Правовые/Гарант/garant_7.10.1/no_molebox_installer/
А *.msi и *.cab и так незамолебокшены. (Ответ гаранта)
Закрыто |