Бутылка wine@eter-2 bottle bugs/8857 WINE@Etersoft SQL 2.0.3-eter8/3 Установлен гарант 7.07.2. Если устанавливать поверх версию 7.08.1, в конце установки (при запуске установки данных) появляется сообщение: "На дистрибутиве обнаружена новая версия программы и требуется обновить оболочку" При этом установки данных не происходит. Обновление невозможно. На windows установка данных проходит без подобных сообщений. В бутылке можно воспроизвести,запустив c:/Program Files/Garant-Server/datasetup.exe
Дистрибутивы здесь: 7.7.2 /var/ftp/pvt/Windows/Правовые/Гарант/772/cs_772 в конце установки запускается установка данных (ее можно также запустить datasetup.exe) Поверх ставим: 7.8.1 /var/ftp/pvt/Windows/Правовые/Гарант/7.07.8/cs в конце также запускается установка данных,в результате чего и появляется ошибка
У файлов version.txt datasetup.exe dataupd.exe download.exe и gararnt.exe не обновляются даты изменения, у всех остальных обновились. На windowws ситуация, на сколько можно судить, такая же. Установил отдельно версию 772 без данных, datasetup.exe работает. Поставил сверху 78163, datasetup.exe не работает. Поставил отдельно 78163 без данных, garant.exe и datasetup.exe не работают.
https://wiki.office.etersoft.ru/%D0%93%D0%B0%D1%80%D0%B0%D0%BD%D1%82
(В ответ на comment #2) > Поставил отдельно 78163 без данных, garant.exe и datasetup.exe не работают. Предварительно нужно убить работающий сервер гаранта (сгодиться wineserver -k) и только потом уже запускать garant.exe и datasetup.exe. Сообщения в таком случае не появляется, а значит сама по себе версия 778 работает нормально.
В случае установки 778 поверх 772 в трейсе проскакивает fixme:ntdll:NtLockFile I/O completion on lock not implemented yet err:winediag:FILE_CreateFile failed to open L"\\??\\C:\\" because of insufficient access rights В случае установки отдельно той и другой версии подобных вещей нет.
Работаю над багой
(В ответ на comment #6) > Работаю над багой Не, надо информативно. Что исследовал и где ничего не нашёл. Если записываешь, где проходил, потом хоть помнишь где был :) Вообще надо сделать кнопку «Ничего не сделал, зарплату не начислять» :) Или робота посадить комментарии в баги читать :)
В случае, когда версия 7.08.1 ставится поверх 7.07.2, *.exe файлы открываются с GENERIC_READ FILE_SHARE_READ. Записи в них не происходит, только чтение. Замена других файлов, происходит следующим образом: находится файл, удаляется, пытаются открыть, не получается, записывают новый. С *.exe файлами, просто при установке, так не делается, они сразу же открываются для чтения/записи. Более подробный лог, сделанный самой программой, получить не удалось.
Катран ответил, что запись файлов - это стандартный механизм службы MSI. Пытался ставить версию 7.08.1, затем вручную менять файл version.txt, затем снова поставить версию 7.08.1 - не помогло.
Установка msi2 не помогла. Интересно, что производители Гаранта говорят, что version.txt они никак не обрабатывают при установки одной версии поверх другой. Также они утверждают, что процедура записи файла - "стандартная процедура MSI". Трэйс по msi интересного ничего не дал.
(В ответ на comment #8) > В случае, когда версия 7.08.1 ставится поверх 7.07.2, *.exe файлы открываются > с GENERIC_READ FILE_SHARE_READ. Записи в них не происходит, только чтение. > Замена других файлов, происходит следующим образом: находится файл, удаляется, > пытаются открыть, не получается, записывают новый. С *.exe файлами, просто при > установке, так не делается, они сразу же открываются для чтения/записи. > Более подробный лог, сделанный самой программой, получить не удалось. Я понимаю ситуацию примерно так: Производится попытка установки, в реестре сведения о версии обновляются, version.txt несёт только справочную информацию, файлы .ini информации о весии не содержат. После установки видно, что изменено лишь несколько файлов, при запуске программа сообщает о том, что она всё ещё старой версии, при запуске установки данных видно, что версия дистрибутива(путь сохраняется в реестре) не совпадает с версией установленной программы, значит в данный момент программа ведёт себя правильно. При установке 7.08.1 поверх 7.07.2 периодически возникает сообщение для разных папок: trace:file:RemoveDirectoryW L"C:\\Program Files\\Garant-Server\\settings\\etaloncopy\\userdata\\" <манипуляции с адресом> trace:file:FILE_SetDosError errno = 39 Каталог не пуст, а также сообщения на тему: warn:ntdll:NtQueryAttributesFile L"\\??\\C:\\Program Files\\Garant-Server\\settings.new\\garant.ini" not found (c000003a) - не найден путь. Папки и файлы с суффиксом .new не создались...
Поигралась с правами на файлы. На примере version.txt, если дать право на запись для всех, то файл спокойно перезаписывается. Для всех файлов и папок запись для всех запрещена, но разрешена для пользователя wine.
(В ответ на comment #12) > Поигралась с правами на файлы. На примере version.txt, если дать право на > запись для всех, то файл спокойно перезаписывается. Для всех файлов и папок > запись для всех запрещена, но разрешена для пользователя wine. Никакого отношения права на файлы сюда не имеют. Если .wine и все все файлы в ней созданы под одним пользователем, все права там гарантированно правильные. И если уж нужно узнать про права, надо почитать об этом, а не экспериментировать. Например, возможность удалить файл или изменить информацию о нём зависит от прав записи на каталог, в котором находится файл, а не от прав на файл. Посколько каталог — это на самом деле такой файл, который содержит информацию о файлах в нём.
(В ответ на comment #13) > (В ответ на comment #12) > > Поигралась с правами на файлы. На примере version.txt, если дать право на > > запись для всех, то файл спокойно перезаписывается. Для всех файлов и папок > > запись для всех запрещена, но разрешена для пользователя wine. > Никакого отношения права на файлы сюда не имеют. > Если .wine и все все файлы в ней созданы под одним пользователем, все права там > гарантированно правильные. В правильности прав сомнений нет. У меня есть другой вопрос... У пользователя wine и группы users, как у владельца файлов и папок, есть полные права, значит программа пытается перезаписать не от этого имени, так?
(В ответ на comment #14) ... > В правильности прав сомнений нет. У меня есть другой вопрос... У пользователя > wine и группы users, как у владельца файлов и папок, есть полные права, значит http://www.opennet.ru/base/sys/file_access.txt.html > программа пытается перезаписать не от этого имени, так? В нашем случае программа (wine) запускается от имени пользователя, и шансов поменять пользователя, от которого она работает, нет. >warn:ntdll:NtQueryAttributesFile L"\\??\\C:\\Program Files\\Garant-Server\\settings.new\\garant.ini" not found (c000003a) А что означает код ошибки c0000003a ? $ grep 003A include/ntstatus.h #define STATUS_OBJECT_PATH_NOT_FOUND ((NTSTATUS) 0xC000003A) Мне кажется, что нет каталога settings.new в этот момент. Проверить это легко.
(В ответ на comment #15) ... > >warn:ntdll:NtQueryAttributesFile L"\\??\\C:\\Program > Files\\Garant-Server\\settings.new\\garant.ini" not found (c000003a) > А что означает код ошибки c0000003a ? > > $ grep 003A include/ntstatus.h > #define STATUS_OBJECT_PATH_NOT_FOUND ((NTSTATUS) 0xC000003A) > > Мне кажется, что нет каталога settings.new в этот момент. Проверить это легко. (comment #11) > warn:ntdll:NtQueryAttributesFile L"\\??\\C:\\Program > Files\\Garant-Server\\settings.new\\garant.ini" not found (c000003a) - не > найден путь. Папки и файлы с суффиксом .new не создались... Об этом и говорила я... Изменение прав меняет ситуацию...
(В ответ на comment #16) ... > > Мне кажется, что нет каталога settings.new в этот момент. Проверить это легко. > > (comment #11) > > warn:ntdll:NtQueryAttributesFile L"\\??\\C:\\Program > > Files\\Garant-Server\\settings.new\\garant.ini" not found (c000003a) - не > > найден путь. Папки и файлы с суффиксом .new не создались... > > Об этом и говорила я... Изменение прав меняет ситуацию... Изменение прав не может ничего менять, хотя бы потому, ты не указываешь команду, которой ты что-то меняла, и о чём речь, не ясно. Что-то у вас какие-то похожие темы с Сергеем: https://bugs.etersoft.ru/show_bug.cgi?id=9037#c18 Вы как-то обменяйтесь опытом, что ли.
(В ответ на comment #17) > Что-то у вас какие-то похожие темы с Сергеем: > https://bugs.etersoft.ru/show_bug.cgi?id=9037#c18 > > Вы как-то обменяйтесь опытом, что ли. Почитала, посмотрела... Что-то мне не показалась эта задача особо похожей... Патчи Сергея приняты, проблема осталась.
Да, совсем забыла... (В ответ на comment #17) > Изменение прав не может ничего менять, хотя бы потому, ты не указываешь > команду, > которой ты что-то меняла, и о чём речь, не ясно. chmod o+w <...>
> > Изменение прав не может ничего менять, хотя бы потому, ты не указываешь > > команду, > > которой ты что-то меняла, и о чём речь, не ясно. > > chmod o+w <...> В общем, давайте проверять ещё раз. Файлы, созданные под пользователем, не могут ему не принадлежать. Если там что-то необыкновенное, то надо хотя бы показать, что владелец файла не совпадает с пользователем. Думаю, проконсультироваться можно будет с Антоном.
(В ответ на comment #20) > В общем, давайте проверять ещё раз. > Файлы, созданные под пользователем, не могут ему не принадлежать. > Если там что-то необыкновенное, то надо хотя бы показать, > что владелец файла не совпадает с пользователем. > > Думаю, проконсультироваться можно будет с Антоном. Давайте... Чистая бутылка, меняю права: ничего не меняется. Запускаю хотя бы один раз из ветки winehq. Тогда при последующих запусках и через ww, и через wine, папки и файлы будут создаваться. Пока не выполнится wine --update... Думаю, пока рано мучить Антона...
Пытаюсь сравнить трейсы, чтобы понять, почему в одном случае файлы создаются, а в другом нет. Пока ничего интересного. Впрочем, версия программы в любом случае остается старая.
Обнаружила следующие строки: trace:msi:msi_get_property returning L"7.07.2.020" for property L"DISPLAYVERSION" trace:msi:COND_GetLiteral Got literal L"7.08.0.163" trace:msi:MSI_EvaluateConditionW 0 <- L"Installed AND NOT ( (ACTION ~= \"ADMIN\") OR (REMOVE ~= \"ALL\") OR (WixUI_InstallMode ~= \"Remove\") ) AND (DISPLAYVERSION > \"7.08.0.163\")" trace:msi:ITERATE_Actions Skipping action: L"Show.Error.NewVersionFound.OnImmediate" (condition is false) trace:msi:msiobj_release object 0xc839d8 destroyed Получается, что из-за невыполнения условия установка вообще не выполняется..?
Проверила это и другие условия - думаю, проблема не в них.
Нужно в кратчайшие сроки решить эту задачу, чётко сформулировав воспроизведение проблемы. Прошу Дмитрия, Сергея и Татьяну обсудить, кому сподручнее в ближайшую неделю рассмотреть и решить проблему.
Я считаю что надо не стесняться стараться задавать вопросы разработчикам Гаранта, особенно если есть конкретика. Зачем долго искать то, к чему у них есть исходный код?
Для тех, кто не пользуется багзиллой или не умеет пользоваться групповым редактированием при поиске, закрываем задачи, которые они должны были принять.