Bug 2746

Summary: Unable to create InstallDriver instance
Product: WINE@Etersoft Reporter: Patsev Anton <chemtech>
Component: Установка программ / MSIAssignee: Anton Rudnev <mibori>
Status: CLOSED FIXED QA Contact:
Severity: major    
Priority: P1 CC: kondratyuk, lav
Version: 1.0.9   
Target Milestone: ---   
Hardware: PC   
OS: Debian GNU/Linux   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 2710    

Description Patsev Anton 2008-10-28 11:01:17 MSK
При установке 1С Предприятия 8.0 появляется вот такая ошибка:

1608: Unable to create InstallDriver instance
Return code: -2147221021

winelog:

...
Программа проверки WINE@Etersoft. 09.10.08 (c) 2005, 2006, 2007, 2008 Etersoft

Проверяем libwine.so.1... ИМЕЕТСЯ. (версия 20080705)
Проверяем /usr/bin/winelog ... пакет WINE@Etersoft: УСТАНОВЛЕН
Проверяем libwine-etersoft.so.1... NETWORK ИМЕЕТСЯ (сборка 0x211)
-------
WINE@Etersoft 1.0 Network (1.0.9), registration number is XXXX-B0A8.
Legality check is available on the page http://sales.etersoft.ru/product/.
-------
Проверяем libcups.so.2... ИМЕЕТСЯ.
Проверяем libfreetype.so.6...ИМЕЕТСЯ (версия 2.2.1)
Установлено соединение с Икс-сервером на :1003.0
Расширение GLX имеется (3D поддерживается)
Используемая модель потоков (thread): pthread (NPTL)
Ядро: Linux, версия: 2.6.18-6-686
Максимальное число файловых дескрипторов в системе: 50593 (3872 используется)
Максимально доступное количество открытых файлов для одного процесса: 1024
Число тиков таймера в секунду (CLK_TCK): 100
Нет ограничений виртуальной памяти
Количество бит для смещения в файле: 64
Установка блокировки на смещение более 512Мб прошла успешно
Установка блокировки на смещение более 4Гб прошла успешно
Текущая локаль: ru_RU.UTF-8
...
trace:loaddll:load_native_dll Loaded L"C:\\Program Files\\Common Files\\InstallShield\\Driver\\7\\Intel 32\\IDriver.exe" at 0x400000: native
...
fixme:rpc:alloc_serverprotoseq protseq "mswmsg" not supported - около 100 сообщений
...
fixme:rpc:I_RpcServerStopListening (): stub
Comment 1 Patsev Anton 2008-10-28 12:51:47 MSK
Версия 1С Предприятие 8.0: 8.0.18.2
Comment 2 Vitaly Lipatov 2008-11-02 12:53:26 MSK
Какую проблему вызывает эта ошибка?
Comment 3 Patsev Anton 2008-11-03 05:15:48 MSK
Не устанавливается.
Comment 4 Vitaly Lipatov 2008-11-03 10:32:20 MSK
Устанавливаете командой
$ winexp setup.exe ?
Comment 5 Patsev Anton 2008-11-05 10:27:47 MSK
Устанавливаю:

winexp autorun.exe 
Running in NT environment...
fixme:msg:pack_message msg 14 (WM_ERASEBKGND) not supported yet
ALSA lib seq_hw.c:457:(snd_seq_hw_open) open /dev/snd/seq failed: No such file or directory
ALSA lib seq_hw.c:457:(snd_seq_hw_open) open /dev/snd/seq failed: No such file or directory
fixme:storage:StgCreateDocfile Storage share mode not implemented.
fixme:rpc:RpcMgmtWaitServerListen not waiting for server calls to finish
fixme:rpc:RpcImpersonateClient (0x15bfec8): stub
fixme:ole:NdrClearOutParameters (0x33c698,0x7e6e75ba,0x15c86e0): stub
fixme:rpc:RpcRevertToSelfEx (0x15bfec8): stub
fixme:rpc:RpcImpersonateClient (0x15d22b0): stub
fixme:rpc:RpcRevertToSelfEx (0x15d22b0): stub
fixme:rpc:RpcImpersonateClient (0x15d24c0): stub
fixme:rpc:RpcRevertToSelfEx (0x15d24c0): stub
fixme:rpc:RpcImpersonateClient (0x15d26f0): stub
fixme:rpc:RpcRevertToSelfEx (0x15d26f0): stub
fixme:msi:msi_unimplemented_action_stub MsiUnpublishAssemblies -> 2 ignored L"MsiAssembly" table values
fixme:msi:msi_unimplemented_action_stub UnregisterTypeLibraries -> 3 ignored L"TypeLib" table values
fixme:msi:msi_unimplemented_action_stub UnregisterClassInfo -> 1 ignored L"AppId" table values
fixme:msi:msi_unimplemented_action_stub UnregisterProgIdInfo -> 9 ignored L"ProgId" table values
fixme:msi:msi_unimplemented_action_stub RemoveShortcuts -> 12 ignored L"Shortcut" table values
fixme:rpc:RpcImpersonateClient (0x15fe270): stub
fixme:rpc:RpcRevertToSelfEx (0x15fe270): stub
fixme:msi:MsiGetMode 2 6
fixme:rpc:RpcImpersonateClient (0x15ff068): stub
fixme:rpc:RpcRevertToSelfEx (0x15ff068): stub
fixme:rpc:RpcImpersonateClient (0x15ff068): stub
fixme:rpc:RpcRevertToSelfEx (0x15ff068): stub
fixme:msi:install_assembly Manifest unhandled
fixme:msi:install_assembly Win32 assemblies not handled
fixme:msi:install_assembly Manifest unhandled
fixme:msi:install_assembly Win32 assemblies not handled
fixme:rpc:RpcImpersonateClient (0x1602380): stub
err:ole:CoGetClassObject class {f618c514-dfb8-11d1-a2cf-00805fc79235} not registered
err:ole:CoGetClassObject class {f618c514-dfb8-11d1-a2cf-00805fc79235} not registered
err:ole:create_server class {f618c514-dfb8-11d1-a2cf-00805fc79235} not registered
fixme:ole:CoGetClassObject CLSCTX_REMOTE_SERVER not supported
err:ole:CoGetClassObject no class object {f618c514-dfb8-11d1-a2cf-00805fc79235} could be created for context 0x17
err:ole:CoGetClassObject class {f618c514-dfb8-11d1-a2cf-00805fc79235} not registered
err:ole:CoGetClassObject class {f618c514-dfb8-11d1-a2cf-00805fc79235} not registered
err:ole:create_server class {f618c514-dfb8-11d1-a2cf-00805fc79235} not registered
fixme:ole:CoGetClassObject CLSCTX_REMOTE_SERVER not supported
err:ole:CoGetClassObject no class object {f618c514-dfb8-11d1-a2cf-00805fc79235} could be created for context 0x17
fixme:netapi32:NetUserAdd ((null), 1, 0x33b468, 0x33b460) stub!
fixme:netapi32:NetUserGetLocalGroups ((null), L"USER1CV8SERVER", 0, 00000001, 0x33b43c -1, 0x33b444, 0x33b490) stub!


И 1С выдает ошибку:

При регистрации COM+ приложения произошла ошибка (код ошибки = 8ad). Вам необходимо зарегестировать это приложение вручную.

Comment 6 Vitaly Lipatov 2008-11-05 10:40:40 MSK
Только сейчас заметил что 8.0.
А почему autorun? Там же наверное есть и собственно дистрибутив с setup.exe?
Comment 7 Константин Кондратюк 2008-11-07 09:10:19 MSK
1C 8.0 установилась нормально под winexp.
А вот обновление до 8.0.18.2 вываливается с ошибкой msi.

err:msi:ACTION_InstallFiles compressed file wasn't extracted (L"C:\\Program Files\\1cv8\\bin\\ru\\BP.res")
err:msi:ITERATE_Actions Execution halted, action L"InstallFinalize" returned 1603
Comment 8 Anton Rudnev 2008-11-10 14:46:27 MSK
после обновления вайна поведение изменилось.

Теперь с той же ошибкой 1603 вываливается на другом файле (wbase.dll)
Ясно одно -- после выполнения msi_cabextract() остаются не распакованы те файлы, которые уже существовали в Program Files

Так, если wbase.dll удалить из Program Files, то msi_cabextract() изменит его состояние на msifs_installed и программа завершится с ошибкой 1603 уже на другом файле.

Также, похоже, что проблема никак не связана с регистром литер в имени файла.
Comment 9 Anton Rudnev 2008-11-10 20:11:41 MSK
для проведения экспериментов на extrac32 /E Data1.cab взял два файла
BP.dll -- который всегда создаётся
BP.res -- который никогда не создаётся

функция, которая вызывает CreateFile для создания файла - это sc_cb_open в setupcab.c . Она же и возвращает хэндл, полученный от CreateFile.

Функция CreateFile и для первого и для второго файла вызывается абсолютно идентично. Вот куски лога полученного за один extrac32-запуск:

для BP.dll с проверкой существования файла ди после вызова CreateFile:
***sc_cb_open("BP.dll", 8101, 180) before CreateFileA(), file_exist->no
***sc_cb_open("BP.dll", 8101, 180) before CreateFileA(ioflag=40000000, sharing=3, sa={nLength=c, bInheritHandle = 1}, creation=4)
CreateFileW -> L"BP.dll" GENERIC_WRITE FILE_SHARE_READ FILE_SHARE_WRITE  creation 4 attributes 0x80
***sc_cb_open("BP.dll", 8101, 180) after CreateFileA(), file_exist->yes
***sc_cb_open("BP.dll", 8101, 180) ret -> 44

для BP.res с проверкой существования файла до и после вызова CreateFile:
***sc_cb_open("BP.res", 8101, 180) before CreateFileA(), file_exist->no
***sc_cb_open("BP.res", 8101, 180) before CreateFileA(ioflag=40000000, sharing=3, sa={nLength=c, bInheritHandle = 1}, creation=4)
CreateFileW -> L"BP.res" GENERIC_WRITE FILE_SHARE_READ FILE_SHARE_WRITE  creation 4 attributes 0x80
***sc_cb_open("BP.res", 8101, 180) after CreateFileA(), file_exist->no
***sc_cb_open("BP.res", 8101, 180) ret -> 44

Соответственно в обоих случаях она возвращает хэндл.
Как видно из куска одного лога, разница между вызовами в том, что в первом случае она создаёт файл, а во втором -- нет.
Comment 10 Anton Rudnev 2008-11-11 17:53:09 MSK
несмотря на исследование в http://bugs.etersoft.ru/show_bug.cgi?id=2873
установка обновления под виндой происходит нормально (с установкой BP.res ёмкостью 12288 байт).

Вероятно, в процессе установки под виндой используются какие-то другие способы распаковки.
Comment 11 Anton Rudnev 2008-11-12 16:39:03 MSK
Патч - http://lists.etersoft.ru/pipermail/wine-patches/2008-November/000077.html
В функции ACTION_InstallFiles, после того, как функция FDICopy распаковывает Data1.cab, на дублирующимся файле не ставится file->stat в msifs_installed
Патч добавляет проверку существования файла в этом случае, и не допускает прерывание процесса инсталляции, если файл уже существует.