Bug 1074

Summary: Не ставится локальный Гарант 7 F1
Product: WINE@Etersoft Reporter: Alexeev Alexey <alexeev>
Component: Установка программ / MSIAssignee: Виталий Перов <vitperov>
Status: CLOSED FIXED QA Contact:
Severity: major    
Priority: P5 CC: baraka, kondratyuk, lav, sonner, vitperov
Version: 1.0.8   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on: 156, 2234    
Bug Blocks: 419, 594, 769, 777, 2660, 2665, 3195    
Attachments: скрин1
скрин2
скрин3
Скрин лога

Description Alexeev Alexey 2008-01-18 13:10:54 MSK
Created attachment 247 [details]
скрин1

При попытке установки Гарант7 любой из трёх версий(Локальная, Сервер, Файл-Сервер), копирование файлов начинается и вроде бы проходит успешно, но в конце появляется сообщение, что установка завершена преждевременно(скрин1).
Если попытаться запустить garant.exe, то выскакивает ошибка, что файл garant.ini не найден(скрин2). В папке присутствуют файлы garant.ini.tmp и garant.ini.new, если любой из них переименовать в garant.ini, то первая ошибка не выскакивает, но появляется сообщение "Не могу найти файл "C:\Program Files\Garant-Nemesis\settings\garant.ini"(скрин3), но в Program Files папки Garant-Nemesis  нет вообще.
Одна и та же ошибка на трёх версиях Гаранта.
Wine 1.0.8.
Comment 1 Alexeev Alexey 2008-01-18 13:11:25 MSK
Created attachment 248 [details]
скрин2
Comment 2 Alexeev Alexey 2008-01-18 13:11:40 MSK
Created attachment 249 [details]
скрин3
Comment 3 Константин Кондратюк 2008-01-28 13:25:34 MSK
Посмотрю.
Гарант - традиционно моя задача.
Comment 4 Константин Кондратюк 2008-01-28 14:57:34 MSK
На первый взгляд - вообще чисто и без ошибок. Последние действия - над файлами msiXXXX.tmp - а потом сразу окно с ошибкой. Такое ощущение, что просто отсутствуют   fixme, err и даже trace в сбойных местах.
Comment 5 Константин Кондратюк 2008-03-09 21:54:16 MSK
Предположение саппорта - ошибка в SHFileOperation() пока не подтверждается.
Все вызовы функции возвращают ERROR_SUCCESS.
Comment 6 Виталий Перов 2008-04-07 19:10:19 MSD
Установщик безуспешно пытался найти mscoree.dll
Поставил вместо неё заглушку - результат не изменился
Comment 7 Виталий Перов 2008-04-07 19:30:58 MSD
А вообще mscoree в wine есть, просто установщик пытается проверить наличие самого файла.

Идёт обращение к функции GetCORSystemDirectory, которая является заглушкой.

Думаю надо поставить .Net Framework или взять нормальную mscoree.dll для проверки
Comment 8 Виталий Перов 2008-04-07 19:46:36 MSD
Скачал родную mscoree.dll - ничего не изменилось.

Сама GetCORSystemDirectory() возвращает директорию установленного .Net

А если .Net не установлен.....
Думаю надо протестировать данную функцию на Винде с .Net и без
Comment 9 Виталий Перов 2008-04-07 19:55:17 MSD
Ещё существует лог инсталлятора
Причину ошибки можно посмотреть в логе инсталлятора.
 Для 'включения' ведения лога, инсталлятор нужно запускать из командной
строки с параметром /log. Это касается как общего (f1setup.exe), так и
индивидуальных (\setup\f1[server|fileserver|local|client]setup*.exe)
инсталляторов. В результате, в каталоге для временных файлов пользователя
Windows (на который указывает системная переменная %temp%) будет создан файл
вида msi<случайное число>.log, в который и будет протоколироваться
информация о работе инсталлятора.
Comment 10 Виталий Перов 2008-04-07 20:24:19 MSD
Если посмотреть лог, то можно уведеть, что инсталлятор создаёт кучу временных файлов и котологов, а потом, в конце их удаляет.
Если заглянуть в установочный каталог, то там остаётся только 1 файл: settings.tmp
Comment 11 Виталий Перов 2008-04-07 20:28:19 MSD
где произошла сама ошибка - непонятно. Последние строки файла:
MSI (c) (11:13): Executing op: ComponentUnregister(ComponentId={6444A171-2496-4D7D-9E5C-DCF73E945233},ProductKey={6AC5411A-5F27-4CDB-9EED-3FA88FAE899D},BinaryType=0,)
MSI (c) (11:13): Executing op: ComponentUnregister(ComponentId={8057B849-0E43-42ED-AD04-017C6A54693E},ProductKey={6AC5411A-5F27-4CDB-9EED-3FA88FAE899D},BinaryType=0,)
MSI (c) (11:13): Executing op: ComponentRegister(ComponentId={30F950F8-E868-49ED-AB02-F2ECE2274F96},KeyPath=C:\Program Files\Garant-Local\settings-xml.tmp\,State=3,ProductKey={6AC5411A-5F27-4CDB-9EED-3FA88FAE899D},,SharedDllRefCount=0,BinaryType=0)
MSI (c) (11:13): Executing op: ComponentRegister(ComponentId={5BDEEF52-E8F0-4201-98B7-57725E2B6D76},KeyPath=C:\Program Files\Garant-Local\settings.bad.tmp\,State=3,ProductKey={6AC5411A-5F27-4CDB-9EED-3FA88FAE899D},,SharedDllRefCount=0,BinaryType=0)
MSI (c) (11:13): Executing op: End(Checksum=0,ProgressTotal=0)
MSI (c) (11:13): Error in rollback skipped.  Return: 5
MSI (c) (11:13): FEATURECACHE: Entering Invalidate
MSI (c) (11:13): Closing MSIHANDLE (82) of type 790536 for thread 19
MSI (c) (11:13): Unlocking Server
Завершение действия 20:05:29: INSTALL. Возвращенное значение 3.
MSI (c) (11:13): Decrementing counter to disable shutdown. If counter >= 0, shutdown will be denied.  Counter after decrement: -1
Завершение действия 20:05:29: ExecuteAction. Возвращенное значение 3.
MSI (c) (11:13): Doing action: CustomFatalError
Начало действия 20:05:29: CustomFatalError.
Действие 20:05:29: CustomFatalError. Dialog created
Comment 12 Виталий Перов 2008-04-07 20:55:57 MSD
(In reply to comment #5)
> Предположение саппорта - ошибка в SHFileOperation()
> пока не подтверждается.
> Все вызовы функции возвращают ERROR_SUCCESS.
> 

У меня почему-то эта функция вообще не вызывается
Comment 13 Виталий Перов 2008-04-07 21:28:05 MSD
попробовал использовать нативную shell32.dll. В консоле выдаёт:
err:thunk:_loadthunk (shell.dll, Shl3216_ThunkData16, shell32.dll): Unable to load 'shell.dll', error 2
и просит urlmon.dll
Comment 14 Виталий Перов 2008-04-07 21:33:29 MSD
при добавлении shell.dll пишет:
err:thunk:_loadthunk Unable to find thunk data 'Shl3216_ThunkData16' in shell.dll, required by shell32.dll (conflicting/incorrect DLL versions !?).

а при добавлении urlmon.dll просит ещё wininet.dll
Comment 15 Виталий Перов 2008-04-08 14:05:13 MSD
при использовании winexp установка продвигается значительно дальше
Comment 16 Виталий Перов 2008-04-08 14:41:33 MSD
при запуске через wwo говорит, что нужна новая версия Windows Installer
Comment 17 Виталий Перов 2008-04-08 14:47:20 MSD
хотя, скорее под win98 установка продвигается дальше: сначала идёт установка, а потом инсталлятор обрануживает ошибку, и делает откат, в итоге - в папке с Гарантом остаётся только 1 файл: settings.tpm

В случае с winxp файлы остаются. Т.е отката не происходит
Comment 18 Виталий Перов 2008-04-08 14:55:33 MSD
по файлу лога можно определить примерное место перехода установки в откат:

MSI (c) (11:13): Executing op: CustomActionSchedule(Action=CALLENTRY_Move.Main.Settings.To.Temp.Location.OnDeferred,ActionType=1025,Source=BinaryData,Target=MovePathName,CustomActionData=Description=Move main settings to temp location;If_NEQ_LValue="%NEWF
1USERSSAVEVERSION%";If_NEQ_RValue="%OLDF1USERSSAVEVERSION%";FromPathName=C:\Program Files\Garant-Local2\settings\;ToPathName=C:\Program Files\Garant-Local2\settings.tmp\)
MSI (c) (11:13): Creating MSIHANDLE (77) of type 790536 for thread 19
Action 12:54:56: MovePathName. Move main settings to temp location
MovePathName: Abort Exception {Error = 0x00000643}
Action ended 12:54:56: InstallFinalize. Return value 3.
Comment 19 Виталий Перов 2008-04-08 15:10:09 MSD
различие запуска в ww и winexp:

ww по умолчанию использует стороннюю msi.dll, а winxp - встроенную

со сторонней:
- не предлагается востановить, а устанавливается заново (скорее всего потому, что в прошлая установка выполнила почти полный откат)
- устанавливает, встречает ошибку, и почти полностью откатывается.

со встроеной:
- определяет, что программа уже установлена. Можно только восстановить или удалить.
- устанавливает, встречает ошибку, но отката не происходит
Comment 20 Виталий Перов 2008-04-08 17:50:28 MSD
Попробовал установить Гарант на винде, а потом скопировать в бутылку.

Ошибки о том, что он не может найти файл garant.ini не выскакивает ( если гарант будет именно в той папки, которая прописана в реестра), зато выскакивает сообщение: "Файлы данных отсутствуют или повреждены"
Comment 21 Виталий Перов 2008-04-08 20:00:01 MSD
На винде та же ошибка. Наверное БД отсутствует
Comment 22 Виталий Перов 2008-05-08 20:10:09 MSD
Действию Action=CALLENTRY_Move.Main.Settings.To.Temp.Location.OnDeferred
соответствует запуск внешней msihlp32.dll с функцией MovePathName
Comment 23 Виталий Перов 2008-05-08 20:23:59 MSD
Этой dll нет ни в Win98, ни в WinXP, даже google выдаёт 0 результатов.
В Win98 c установленным Гарантом её тоже нет
Comment 24 Виталий Перов 2008-05-08 20:37:37 MSD
Файл этот содержится в пакете установки (msi+cab), и видимо существует только в процессе установки.

Возможны 2 варианта:
1) он не распаковывается в процессе установки
2) из msihlp32.dll : MovePathName() вызывается какая-то функция, которая завершается с ошибкой
Comment 25 Константин Кондратюк 2008-06-09 16:29:57 MSD
Нужно уточнить, есть ли проблемы в новых сборках
Comment 26 Виталий Перов 2008-06-10 18:42:29 MSD
Получены исходники msihlp32.dll. Можно продолжать работу
Comment 27 Виталий Перов 2008-06-10 19:21:46 MSD
Код написан под Borland Delphi.
Если я не ошибаюсь, то там должны использоваться Борландовские высокоуровневые процедуры, а к системе обращаться только более низкоуровнеми процедурами.
Это значительно затрудняет отладку.

Возникла идея перекомпиллировать исходники, добавив в начале и в конце функции легко заметные текстовые строки. Таким образом можно будет найти все вызовы и сообщения системных функций рядом с местом ошибки
Comment 28 Виталий Перов 2008-06-10 22:12:35 MSD
точно сказать нельзя, но скорее всего ошибка появляется при вызове:
dllMovePathName => DoFileFolderOperation (FO_MOVE, f_FromPathName, f_ToPathName) => SHFileOperation (l_SHFileOpStruct)
SHFileOperation должна быть определена в ShellAPI
Comment 29 Виталий Перов 2008-06-11 13:06:17 MSD
SHFileOperation оказалась WINAPI функцией. Она должна копировать, перемещать и удалять 1 или несколько файлов
Comment 30 Виталий Перов 2008-06-11 13:52:41 MSD
Да, ошибка в этой функции. На 4-м вызове она возвращает код ошибки 1223, что соответствует ERROR_CANCELLED  (The operation was canceled by the user)
Comment 31 Константин Кондратюк 2008-06-11 13:56:10 MSD
Интересно, у тебя хоть какая-то причина обнаружилась.
У меня все 4 вызова возвращали ERROR_SUCCESS, при этом установка откатывалась.
Comment 32 Виталий Перов 2008-06-11 14:41:35 MSD
(In reply to comment #31)
> Интересно, у тебя хоть какая-то причина
> обнаружилась.
> У меня все 4 вызова возвращали ERROR_SUCCESS, при
> этом установка откатывалась.
> 
скорее всего эта ошибка не единственная. Если принудительно возвращать ERROR_SUCCESS, то установка идёт немного дальше, но всё-равно преждевременно завершается
Comment 33 Виталий Перов 2008-06-11 14:46:44 MSD
в 4-й раз SHFileOperation вызывается для перемещения файлов. Для этого внутри вызывается move_files. А там следующий код:
    if (!flFrom->dwNumFiles || !flTo->dwNumFiles)
        return ERROR_CANCELLED;
т.е. не реализовано перемещение более 1 файла
Comment 34 Виталий Перов 2008-06-11 14:48:28 MSD
ошибся... имел ввиду код
if (!(lpFileOp->fFlags & FOF_MULTIDESTFILES) &&
        flTo->dwNumFiles > 1 && flFrom->dwNumFiles > 1)
    {
        return ERROR_CANCELLED;
    }
Comment 35 Виталий Перов 2008-06-11 14:58:53 MSD
входные параметры FromNum=0 TuNum=1 FOF_MULTIDESTFILES=0.
Поэтому ошибка возвращается по условию
if (!flFrom->dwNumFiles || !flTo->dwNumFiles)
Comment 36 Виталий Перов 2008-06-11 15:36:56 MSD
Неправильно работает функция parse_file_list(). Она должна из строки формировать список файлов.
передаваемая строка 'L"C:\\Program Files\\Garant-Local226\\settings\\*.*"'.
Функция определяет, что там 0 файлов
Comment 37 Виталий Перов 2008-06-11 17:00:29 MSD
если имя файла содержит символы * или ?, то parse_file_list() запускает функцию
parse_wildcard_files, которая с помощью FindFirstFileW и FindNextFileW должна искать файлы в текущей директории
Comment 38 Виталий Перов 2008-06-11 17:12:55 MSD
FindFirstFile не находит там ни одного файла

file:FindFirstFileExW L"C:\\Program Files\\Garant-Local235\\settings\\*.*" 0 0x7e34e270 0 (nil) 0

По окончанию установки этой директории уже не существует. Возможно и не существовало.
Ещё возможно, что директория была пустая.
Думаю надо создать тест, и проверить поведение Windows и Wine в этих случаях
Comment 39 Виталий Перов 2008-06-12 08:58:17 MSD
добавил в shell32/testst тест, который показывает, что в случае копирования файлов из одной папки в другую с маской '*.*' функция SHFileOperation возвращает ошибку.

Таким образом функция проваливается, хотя гарантированно есть папка, а в ней лежат файлы.
Получается, что тест всё-таки надо было писать для FindFirstFile, который в данном случае не может найти ни единого файла 
Comment 40 Виталий Перов 2008-06-17 20:59:19 MSD
FindFirstFile работает без проблем.

Приведённый тест возвращает код ошибки при условии
    if ((lpFileOp->fFlags & FOF_MULTIDESTFILES) &&
        flFrom->dwNumFiles != flTo->dwNumFiles)

В нашем случае 3 входных файла и 1 выходной (который является директорией).
Думаю просто функция не умеет обрабатывать случай, когда в качестве выходного пути используется директория.

Ещё попутно заметил, что во входные файлы при раскрытии '*.*' кроме файлов попадают ещё и директории.
Необходимо проверить как в данном случае поступает Windows: перемещает только файлы в текущем каталоге, или перемещает всё дерево
Comment 41 Виталий Перов 2008-06-17 21:52:53 MSD
В принципе в функции реализована обработка таких ситуаций, но при условии, что бит FOF_MULTIDESTFILES не выставлен.

по MSDN бит должен быть выставлен в случае, если указано несколько файлов назначения или одна папка.

при исправлении некоторых условий тест проходит

Comment 42 Виталий Перов 2008-06-17 21:53:47 MSD
но Гарант всё-равно не ставится.
Возникает ошибка, когда количество входных файлов = 0. Т.е копирование из пустой директории.
Думаю необходимо создать тест и на эту багу
Comment 43 Виталий Перов 2008-06-18 14:19:05 MSD
После исправления этой ошибки возникла ещё одна ошибка:
Попытка копировать 3 файла в 0:
FROM=L"C:\\Program Files\\Garant-Local3\\settings\\*.*
TO=L"C:\\Program Files\\Garant-Local3\\settings.tmp\\*.*

папка settings.tmp - пустая, поэтому и получается 0 файлов

Думаю в данном случае ещё до вызова parse_file_list следует убирать из пути TO '*.*'. 
Comment 44 Виталий Перов 2008-06-18 20:24:21 MSD
При удалении из пути назначения '*.*' SHFileOperation работает нормально.

Но Гарант по-прежнему не устанавливается
Comment 45 Виталий Перов 2008-06-19 16:12:30 MSD
После вмесения изменений функция SHFileOperation вызывается уже не 4 раза а 9. Завершается функция успешно.

Но, если сравнить 2 лог файла установки до и после исправлений, то они ничем не отличаются!

Последние строки:
Action 15:50:42: RemovePathName. Remove temp settings
Action 15:50:43: MovePathName. Move main settings to temp location

Очевидно, что ошибка возникает в той же операции.

Возможно (но маловероятно), что операция возвращает ERROR_SUCCESS, однако нужные файлы не копирует, а затем следует проверка в функции MovePathName, которая и завершает программу аварийно.
Comment 46 Виталий Перов 2008-06-19 17:02:47 MSD
Ещё возможно преждевременное завершение из-за отсутствия реализаций некоторых операций msi:

fixme:msi:msi_unimplemented_action_stub RemoveRegistryValues -> 1 ignored L"RemoveRegistry" table values
fixme:msi:msi_unimplemented_action_stub RemoveShortcuts -> 8 ignored L"Shortcut" table values
fixme:msi:msi_unimplemented_action_stub RemoveFolders -> 43 ignored L"CreateFolder" table values
Comment 47 Виталий Перов 2008-06-19 20:27:23 MSD
Created attachment 494 [details]
Скрин лога

Как видно из скрина, сразу после завершения SHFileOperation выполняется комманда

DllThread CustomAction (47), которая завершается с кодом 1603.
В итоге установка завершается с ошибкой
Comment 48 Виталий Перов 2008-06-19 20:57:18 MSD
Этот СustomAction ни о чём не говорит. Т.к при использовании встроенной msi.dll числа могут быть другими.

При использвании нативной msi.dll получается следующий лог:

RemovePathName: Return Results {Error = 0x00000000 (IsConditionTrue = Yes), PathName = `C:\Program Files\Garant-Local\settings.tmp\`}
Action 20:49:49: CALLENTRY_Move.Main.Settings.To.Temp.Location.OnDeferred. 
Action 20:49:49: MovePathName. Move main settings to temp location
MovePathName: Abort Exception {Error = 0x00000643}
Action ended 20:49:49: InstallFinalize. Return value 3.
Action 20:49:49: Rollback. Rolling back action:
Rollback: CALLENTRY_Move.Main.Settings.To.Temp.Location.OnDeferred
Rollback: CALLENTRY_Remove.Temp.Settings.OnDeferred
Comment 49 Виталий Перов 2008-06-19 21:07:02 MSD
при запуске аналогичным образом, но без всех исправлений сделанных в SHFileOperation получается абсолютно идентичный лог установки
Comment 50 Виталий Перов 2008-06-19 21:39:48 MSD
в MovePathName Abort() вызывается в 2-х местах:
1) Если SHFileOperation вернула не 0
2) Если (операция либо перемещение либо удаление) и (from указано как *.*) и (директория откуда производилась операция существует) и ( операция RemoveDir прошла с ошибкой)

Думаю проблемы могут быть в RemoveDir. Эта функция Delphi.
Необходимо проверить какие системные функции она использует
Comment 51 Виталий Перов 2008-06-20 13:36:08 MSD
RemoveDir использует системную функцию WINAPI RemoveDirectory.
Которая завершается с ошибкой потому, что директория не пустая. А происходит это по следующей причине:
SHFileOperation запускается для перенесения настроек из папки FROM = L"C:\\Program Files\\Garant-Local\\settings\\*.*" в папку TO = L"C:\\Program Files\\Garant-Local\\settings.tmp"
при этом фунция рекурсивно вызывает себя для перемещения субдиректорий.

В итоге, после вызова все файлы перемещаются, а дерево каталогов остаётся, поэтому  RemoveDirectory не может удалить L"C:\\Program Files\\Garant-Local\\settings" 

Comment 52 Виталий Перов 2008-06-20 13:50:33 MSD
для перемещения папок move_files() использует вспомогательную функцию move_dir_to_dir, которая для этого вызывает SHFileOperation
в параметрах передаётся исходная директория с маской '*.*', но после перемещения исходна директория не удаляется.

При вызове в конце RemoveDirectory ГАРАНТ УСТАНАВЛИВАЕТСЯ!
Comment 53 Глеб Кордюков 2008-08-07 12:38:26 MSD
В чем может быть проблема?

Скачал по этой, присланной мне ссылке:
ftp://updates.etersoft.ru/pub/download/WINE@Etersoft/27AD-259D-5g3s3kg2es/Network-1.0.9/ArchLinux/2007.08/wine-etersoft-network-1.0.9.tar.gz
(версия под archlinux), но Гарант все равно не ставится.
Устанавливаю в режиме Клиент-Сервер.
Получаю:

Мастер установки бла-бла v7.01.0.013 был преждебременно завершен по 
причине ошибки.
Затем диалоговое окно:
An error occured installing the package. Windows Installer returned "1627".


Вот листинг консоли установки:
"
$ winexp f1setup.exe
Running in NT environment...
err:wineusb:ServiceMain bad hardware ID
err:wineusb:ServiceMain bad hardware ID
fixme:msi:msi_unimplemented_action_stub MigrateFeatureStates -> 2 
ignored L"Upgrade" table values
fixme:msi:msi_unimplemented_action_stub MigrateFeatureStates -> 2 
ignored L"Upgrade" table values
fixme:msi:ACTION_CustomAction Rollback only action... rollbacks not 
supported yet
fixme:msi:ACTION_CustomAction Rollback only action... rollbacks not 
supported yet
fixme:msi:ACTION_CustomAction Rollback only action... rollbacks not 
supported yet
fixme:msi:ACTION_CustomAction Rollback only action... rollbacks not 
supported yet
fixme:msi:ACTION_CustomAction Rollback only action... rollbacks not 
supported yet
fixme:msi:ACTION_CustomAction Rollback only action... rollbacks not 
supported yet
fixme:msi:ACTION_CustomAction Rollback only action... rollbacks not 
supported yet
fixme:msi:ACTION_CustomAction Rollback only action... rollbacks not 
supported yet
fixme:msi:ACTION_CustomAction Rollback only action... rollbacks not 
supported yet
fixme:msi:msi_unimplemented_action_stub DeleteServices -> 2 ignored 
L"ServiceControl" table values
fixme:msi:msi_unimplemented_action_stub RemoveRegistryValues -> 2 
ignored L"RemoveRegistry" table values
fixme:msi:msi_unimplemented_action_stub RemoveShortcuts -> 9 ignored 
L"Shortcut" table values
fixme:msi:msi_unimplemented_action_stub RemoveFolders -> 44 ignored 
L"CreateFolder" table values
err:rpc:I_RpcReceive we got fault packet with status 0x3e6
err:msi:ITERATE_InstallService Failed to create service 
L"GARANT.Application.Server": 998
err:msi:ITERATE_StartService Failed to open service 
L"GARANT.Application.Server"
err:msi:ITERATE_Actions Execution halted, action L"InstallFinalize" 
returned 1627
err:msi:ITERATE_Actions Execution halted, action L"ExecuteAction" 
returned 1627
Comment 54 Виталий Перов 2008-08-08 14:16:53 MSD
Да, действительно, установка серверной версии завершается с ошибкой. Локальная версия устанавливается без проблем.
Comment 55 Виталий Перов 2008-08-08 16:09:10 MSD
ошибка возникает при выполнения действия
Action 15:40:16: StartServices. Starting services
в консоле:
err:msi:ITERATE_StartService Failed to open service L"GARANT.Application.Server"
Comment 56 Виталий Перов 2008-09-02 18:50:10 MSD
при выборе канала service:
trace:service:svcctl_OpenServiceW (L"GARANT.Application.Server", 0x10)
err:ntdll:RtlpWaitForCriticalSection section 0x110688 "?" wait timed out in thread 0023, blocked by 0013, retrying (60 sec)

дальнейшее завершение программы только по Ctrl+С
Comment 57 Виталий Перов 2008-09-02 20:04:16 MSD
проблема в svcctl_OpenServiceW: она либо повисает, ожидая выхода из критической секции, либо возвращает ошибку 1060 (Service doesn't exist)
Comment 58 Виталий Перов 2008-10-16 19:27:05 MSD
Проверил после обновления исходников wine.
Программа стала вести себя по-другому.
Теперь:
err:msi:ITERATE_Actions Execution halted, action L"InstallFinalize" returned 1603

Очень похоже на предыдущую багу с SHFileOperation().
Проверил: патч исправляющий ту багу приложен.
Comment 59 Виталий Перов 2008-10-16 19:47:28 MSD
Ошибка возникает при срабатывании условия:
    if (!(lpFileOp->fFlags & FOF_MULTIDESTFILES) &&
        !flFrom->bAnyDirectories &&
        flFrom->dwNumFiles > flTo->dwNumFiles)
    {
        return ERROR_CANCELLED;
    }

при этом from=0 to=1
Comment 60 Виталий Перов 2008-10-17 14:52:29 MSD
Локальный Гарант устанавливается.
Думаю следует перенести установку Клиент-серверного Гаранта в новую багу