Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 8375 - Установка 1CBarCode   Make a simular bug
Summary: Установка 1CBarCode
Status: CLOSED FIXED
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: Установка программ / MSI (show other bugs)
Version: 2.1
Hardware: PC All
: P2 normal
Target Milestone: ---
Deadline: 2012-05-03
Assignee: Dmitry Timoshkov
QA Contact: Konstantin Artyushkin
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 8408 9358
  Show dependency treegraph
 
In work:
Reported: 2012-04-11 12:24 MSK by Константин Кондратюк
Modified: 2015-11-05 09:27 MSK (History)
5 users (show)

See Also:
Заявки RT: 24139, 24627, 39857
Связано с:
Дата напоминания:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Константин Кондратюк 2012-04-11 12:24:48 MSK
При установке 1CBarCode.exe происходит ошибка. Графическое сообщение установщика:
"To run a silent install you must either specify a response dile or override this event (OnMsiSilentInstall()) and provide yout own implementation."
Comment 2 Константин Кондратюк 2012-04-11 12:27:54 MSK
Воспроизводится:
WINE@Etersoft 2.0.0 eter4.10/10
wine-vanilla 1.3.37
Comment 6 Svetlana Zhukova 2012-05-19 12:23:47 MSK
wine@eter-2 bottle bugs/8375
WINE@Etersoft SQL 2.0.1-eter2.12/
Ошибок нет.
Comment 7 Svetlana Zhukova 2012-05-21 15:54:10 MSK
(В ответ на comment #6)
> wine@eter-2 bottle bugs/8375
> WINE@Etersoft SQL 2.0.1-eter2.12/
> Ошибок нет.

eter2.12/6
Comment 13 Dmitry Timoshkov 2015-07-29 10:25:47 MSK
(Ответ Dmitry Timoshkov на комментарий12)
> Проблема с установкой воспроизводится как в ветке eter-2.1, так и ветках
> eterhack и winehq. Источник проблемы все тот же: setup.exe почему-то не
> устанавливает (а может устанавливает, но почему-то Custom Action handler
> это не видит) свойство ISSETUPDRIVEN=1. Мой хак принудительно устанавливает
> это свойство и установщик после этого завершается успешно. Адаптировал свой
> хак для ветки eter-2.1 и отправил его для включения.

Патч принят в ветку eter-2.1. Константин, пожалуйста протестируйте и сообщите
результат.
Comment 14 Konstantin Artyushkin 2015-07-31 17:21:35 MSK
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

Закрываю
Comment 15 Dmitry Timoshkov 2015-09-23 14:54:41 MSK
На 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.

Переоткрываю эту задачу. Как только мой патч будет принят, я удалю свой
предыдущий хак и приложу новый патч с правильным решением.
Comment 16 Dmitry Timoshkov 2015-10-06 13:48:42 MSK
(Ответ 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.
Comment 17 Dmitry Timoshkov 2015-10-07 13:31:04 MSK
(Ответ 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. Как только патч будет
принят (либо роботом либо Виталий приложит вручную) эту задачу можно будет
закрыть как решенную.
Comment 18 Dmitry Timoshkov 2015-10-08 14:35:36 MSK
(Ответ Dmitry Timoshkov на комментарий17)
> Патч с тестом приняты. Портировал патч для ветки eter-2.1 и вместе с ревертом
> старого хака отправил для принятия в ветку eter-2.1. Как только патч будет
> принят (либо роботом либо Виталий приложит вручную) эту задачу можно будет
> закрыть как решенную.

Патчи приняты. Константин, пожалуйста протестируйте.
Comment 19 Konstantin Artyushkin 2015-10-08 15:19:43 MSK
wine-etersoft-2.1.3-alt25.M70P.26

Проверил. Установка работает.
Comment 20 Konstantin Artyushkin 2015-10-08 15:20:02 MSK
Закрываю
Comment 21 Dmitry Timoshkov 2015-11-03 13:35:07 MSK
Патч, исправляющий установку 1CBarCode вызвал регрессию с установкой Microsoft
Office 2007 (https://bugs.winehq.org/show_bug.cgi?id=39544).

После небольшого исследования и поиска причины регрессии был написан новый
тест, воспроизводящий проблему. Дальнейшее изучение проблемы разбора строк
и атрибутов, содержащих двойные кавычки, показало, что и на самом деле мой
патч был неверен, так как исправлял не причину, а скорее последствия. Новый
патч вместе с ревертом предыдущего исправления отправлены в wine-patches.
Comment 22 Dmitry Timoshkov 2015-11-05 09:26:50 MSK
(Ответ Dmitry Timoshkov на комментарий21)
> Патч, исправляющий установку 1CBarCode вызвал регрессию с установкой
> Microsoft
> Office 2007 (https://bugs.winehq.org/show_bug.cgi?id=39544).
> 
> После небольшого исследования и поиска причины регрессии был написан новый
> тест, воспроизводящий проблему. Дальнейшее изучение проблемы разбора строк
> и атрибутов, содержащих двойные кавычки, показало, что и на самом деле мой
> патч был неверен, так как исправлял не причину, а скорее последствия. Новый
> патч вместе с ревертом предыдущего исправления отправлены в wine-patches.

Патчи приняты в winehq, портированы в eter-2.1 и так же приняты.
Comment 23 Dmitry Timoshkov 2015-11-05 09:27:30 MSK
Закрываю.