Summary: | Установка 1CBarCode | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Константин Кондратюк <kondratyuk> |
Component: | Установка программ / MSI | Assignee: | Dmitry Timoshkov <dtimoshkov> |
Status: | CLOSED FIXED | QA Contact: | Konstantin Artyushkin <akv> |
Severity: | normal | ||
Priority: | P2 | CC: | akv, dtimoshkov, kondratyuk, lav, svzhu |
Version: | 2.1 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | 24139, 24627, 39857 | Связано с: | |
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 8408, 9358 | ||
Deadline: | 2012-05-03 |
Description
Константин Кондратюк
2012-04-11 12:24:48 MSK
Воспроизводится: WINE@Etersoft 2.0.0 eter4.10/10 wine-vanilla 1.3.37 wine@eter-2 bottle bugs/8375 WINE@Etersoft SQL 2.0.1-eter2.12/ Ошибок нет. (В ответ на comment #6) > wine@eter-2 bottle bugs/8375 > WINE@Etersoft SQL 2.0.1-eter2.12/ > Ошибок нет. eter2.12/6 (Ответ Dmitry Timoshkov на комментарий12)
> Проблема с установкой воспроизводится как в ветке eter-2.1, так и ветках
> eterhack и winehq. Источник проблемы все тот же: setup.exe почему-то не
> устанавливает (а может устанавливает, но почему-то Custom Action handler
> это не видит) свойство ISSETUPDRIVEN=1. Мой хак принудительно устанавливает
> это свойство и установщик после этого завершается успешно. Адаптировал свой
> хак для ветки eter-2.1 и отправил его для включения.
Патч принят в ветку eter-2.1. Константин, пожалуйста протестируйте и сообщите
результат.
Swine 2.1 bugs/8375 Установка закончилась без ошибок. После установки появились файлы c:/Program Files/1C/1CBarCode: 1CBarCod.cnt 1CBarCod.dll 1CBARCOD.HLP ReadMe.txt В реестре по адресу появилась запись HKEY_CLASSES_ROOT\CLSID\{44F02ECA-3C4A-4473-AD07-B0DB9048AD9F} о файле C:\Program Files\1C\1CBarCode\1CBarCod.dll Закрываю На wineconf мне удалось обсудить множество интересующих меня вопросов и одним из них была проблема, описанная в этой задаче. Ханс предположил, что возможным источником проблемы может быть неверное взаимодействие между клиентом и сервером MSI, ведущее к тому, что одна из сторон не видит свойство, установленное на другой стороне. Это предположение подтвердить не получилось. Другое предложение по выяснению источника проблемы предложил Focht (псевдоним, за которым скрывается разработчик, исследующий наиболее сложные проблемы в wine, это его хобби): запустить установщик в Windows с отладочными ключами (оказывается MSI в windows имеет поддерку создания очень подробных логов) и посмотреть в логе, где и кем устанавливается интересующее меня свойство и передается ли оно дальше по цепочке. Это был очень полезный совет, и с помощью него мне удалось выяснить, что свойство ISSETUPDRIVEN=1 корректно передается в InstallProductA как параметр командной строки, но из-за того, что debugstr_w() в wine обрезает очень длинные строки, то это свойстсво просто не было видно в отладочном логе +msi wine, и поэтому я считал, что оно должно устанавливаться как-то иначе, например посредством API MsiSetProperty. Как только стало понятно, что свойстсво ISSETUPDRIVEN=1 передается в качестве параметра командной строки, то почти сразу удалось выяснить, что проблема находится в парсере командной строки в msi.dll: установщик 1CBarCode передавал строку, содержащую двойные кавычки в свойстве ARPCOMMENTS="Элемент управления предназначен для формирования и печати штрихкодов в системе программ ""1С:Предприятие"" 8.0" и это вело к тому, что все свойства, заданные в командной строке после ARPCOMMENTS просто лепились в конец строки ARPCOMMENTS и не распознавались. Как только это стало понятно, то было найдено простое исправление, полностью решающее проблему с разбором командной строки и как результат рещающее проблему с установщиком 1CBarCode. Переоткрываю эту задачу. Как только мой патч будет принят, я удалю свой предыдущий хак и приложу новый патч с правильным решением. (Ответ Dmitry Timoshkov на комментарий15)
> На wineconf мне удалось обсудить множество интересующих меня вопросов и
> одним из них была проблема, описанная в этой задаче. Ханс предположил, что
> возможным источником проблемы может быть неверное взаимодействие между
> клиентом и сервером MSI, ведущее к тому, что одна из сторон не видит
> свойство, установленное на другой стороне. Это предположение подтвердить
> не получилось. Другое предложение по выяснению источника проблемы предложил
> Focht (псевдоним, за которым скрывается разработчик, исследующий наиболее
> сложные проблемы в wine, это его хобби): запустить установщик в Windows с
> отладочными ключами (оказывается MSI в windows имеет поддерку создания
> очень подробных логов) и посмотреть в логе, где и кем устанавливается
> интересующее меня свойство и передается ли оно дальше по цепочке. Это был
> очень полезный совет, и с помощью него мне удалось выяснить, что свойство
> ISSETUPDRIVEN=1 корректно передается в InstallProductA как параметр
> командной строки, но из-за того, что debugstr_w() в wine обрезает очень
> длинные строки, то это свойстсво просто не было видно в отладочном логе
> +msi wine, и поэтому я считал, что оно должно устанавливаться как-то иначе,
> например посредством API MsiSetProperty. Как только стало понятно, что
> свойстсво ISSETUPDRIVEN=1 передается в качестве параметра командной строки,
> то почти сразу удалось выяснить, что проблема находится в парсере командной
> строки в msi.dll: установщик 1CBarCode передавал строку, содержащую двойные
> кавычки в свойстве
> ARPCOMMENTS="Элемент управления предназначен для формирования и печати
> штрихкодов в системе программ ""1С:Предприятие"" 8.0"
> и это вело к тому, что все свойства, заданные в командной строке после
> ARPCOMMENTS просто лепились в конец строки ARPCOMMENTS и не распознавались.
> Как только это стало понятно, то было найдено простое исправление, полностью
> решающее проблему с разбором командной строки и как результат рещающее
> проблему с установщиком 1CBarCode.
>
> Переоткрываю эту задачу. Как только мой патч будет принят, я удалю свой
> предыдущий хак и приложу новый патч с правильным решением.
Патч до сих пор не принят и комментариев к нему нет. Возможно причина
тому - отсутствие теста, подтверждающего правильность исправления. Хотя
я не спец по написанию тестов для msi, решил все-таки попробовать создать
тест, воспроизводящий проблему. После изучения существующих тестов нашел
максимально простой тест, использующий MsiInstallProduct и задающий
свойство установки через командную строку. Скопировал этот тест и добавил
перед свойством в командной строке еще одно свойство, содержащее двойные
кавычки: вполне ожидаемо тест заканчивается неудачей под wine. Отправил
тест и исправление в wine-patches.
(Ответ Dmitry Timoshkov на комментарий16)
> > На wineconf мне удалось обсудить множество интересующих меня вопросов и
> > одним из них была проблема, описанная в этой задаче. Ханс предположил, что
> > возможным источником проблемы может быть неверное взаимодействие между
> > клиентом и сервером MSI, ведущее к тому, что одна из сторон не видит
> > свойство, установленное на другой стороне. Это предположение подтвердить
> > не получилось. Другое предложение по выяснению источника проблемы предложил
> > Focht (псевдоним, за которым скрывается разработчик, исследующий наиболее
> > сложные проблемы в wine, это его хобби): запустить установщик в Windows с
> > отладочными ключами (оказывается MSI в windows имеет поддерку создания
> > очень подробных логов) и посмотреть в логе, где и кем устанавливается
> > интересующее меня свойство и передается ли оно дальше по цепочке. Это был
> > очень полезный совет, и с помощью него мне удалось выяснить, что свойство
> > ISSETUPDRIVEN=1 корректно передается в InstallProductA как параметр
> > командной строки, но из-за того, что debugstr_w() в wine обрезает очень
> > длинные строки, то это свойстсво просто не было видно в отладочном логе
> > +msi wine, и поэтому я считал, что оно должно устанавливаться как-то иначе,
> > например посредством API MsiSetProperty. Как только стало понятно, что
> > свойстсво ISSETUPDRIVEN=1 передается в качестве параметра командной строки,
> > то почти сразу удалось выяснить, что проблема находится в парсере командной
> > строки в msi.dll: установщик 1CBarCode передавал строку, содержащую двойные
> > кавычки в свойстве
> > ARPCOMMENTS="Элемент управления предназначен для формирования и печати
> > штрихкодов в системе программ ""1С:Предприятие"" 8.0"
> > и это вело к тому, что все свойства, заданные в командной строке после
> > ARPCOMMENTS просто лепились в конец строки ARPCOMMENTS и не распознавались.
> > Как только это стало понятно, то было найдено простое исправление, полностью
> > решающее проблему с разбором командной строки и как результат рещающее
> > проблему с установщиком 1CBarCode.
> >
> > Переоткрываю эту задачу. Как только мой патч будет принят, я удалю свой
> > предыдущий хак и приложу новый патч с правильным решением.
>
> Патч до сих пор не принят и комментариев к нему нет. Возможно причина
> тому - отсутствие теста, подтверждающего правильность исправления. Хотя
> я не спец по написанию тестов для msi, решил все-таки попробовать создать
> тест, воспроизводящий проблему. После изучения существующих тестов нашел
> максимально простой тест, использующий MsiInstallProduct и задающий
> свойство установки через командную строку. Скопировал этот тест и добавил
> перед свойством в командной строке еще одно свойство, содержащее двойные
> кавычки: вполне ожидаемо тест заканчивается неудачей под wine. Отправил
> тест и исправление в wine-patches.
Патч с тестом приняты. Портировал патч для ветки eter-2.1 и вместе с ревертом
старого хака отправил для принятия в ветку eter-2.1. Как только патч будет
принят (либо роботом либо Виталий приложит вручную) эту задачу можно будет
закрыть как решенную.
(Ответ Dmitry Timoshkov на комментарий17)
> Патч с тестом приняты. Портировал патч для ветки eter-2.1 и вместе с ревертом
> старого хака отправил для принятия в ветку eter-2.1. Как только патч будет
> принят (либо роботом либо Виталий приложит вручную) эту задачу можно будет
> закрыть как решенную.
Патчи приняты. Константин, пожалуйста протестируйте.
wine-etersoft-2.1.3-alt25.M70P.26 Проверил. Установка работает. Закрываю Патч, исправляющий установку 1CBarCode вызвал регрессию с установкой Microsoft Office 2007 (https://bugs.winehq.org/show_bug.cgi?id=39544). После небольшого исследования и поиска причины регрессии был написан новый тест, воспроизводящий проблему. Дальнейшее изучение проблемы разбора строк и атрибутов, содержащих двойные кавычки, показало, что и на самом деле мой патч был неверен, так как исправлял не причину, а скорее последствия. Новый патч вместе с ревертом предыдущего исправления отправлены в wine-patches. (Ответ Dmitry Timoshkov на комментарий21)
> Патч, исправляющий установку 1CBarCode вызвал регрессию с установкой
> Microsoft
> Office 2007 (https://bugs.winehq.org/show_bug.cgi?id=39544).
>
> После небольшого исследования и поиска причины регрессии был написан новый
> тест, воспроизводящий проблему. Дальнейшее изучение проблемы разбора строк
> и атрибутов, содержащих двойные кавычки, показало, что и на самом деле мой
> патч был неверен, так как исправлял не причину, а скорее последствия. Новый
> патч вместе с ревертом предыдущего исправления отправлены в wine-patches.
Патчи приняты в winehq, портированы в eter-2.1 и так же приняты.
Закрываю. |