Bug 2107

Summary: extrac32 не распаковывает самораспаковывающиеся cab-файлы
Product: WINE@Etersoft Reporter: Vitaly Lipatov <lav>
Component: Файловые операцииAssignee: Константин Кондратюк <kondratyuk>
Status: CLOSED INVALID QA Contact:
Severity: minor    
Priority: P4 CC: kondratyuk, vitperov
Version: 1.0.9   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 693, 777, 1527    

Description Vitaly Lipatov 2008-07-12 05:31:17 MSD
Вайновская команда не распаковывает:
[lav@euclid 1]$ wine extrac32 /E vcredist.exe mfc42u.dll
err:cabinet:FDICopy FDIIsCabinet failed.
fixme:extrac32:ExtCab Can not extract cab file:L"vcredist.exe"!!!

Линуксовый cabextract - без проблем:
[lav@euclid 1]$ cabextract vcredist.exe -F "mfc42u.dll"
Extracting cabinet: vcredist.exe
  extracting mfc42u.dll

В Windows вроде как молча завершается: 
C:\> extrac32 /E vcredist.exe mfc42u.dll

vcredist.exe лежит в windows/downloads

вообще цель - чтобы vcredist установил mfc42u.dll при своей установке.
По идее оно ставится только на NT-систему. В нашей системе он стирает даже тот файл mfc42u.dll, который есть.
Comment 1 Константин Кондратюк 2008-07-18 11:20:43 MSD
В ies4linux есть ещё вот такое использование cabextract'а:
$ cabextract -L -F ver1200.exe ./249973USA8.exe

Сейчас это держит зависимость от cabextract при установке IE в свободной сборке. Если появится адекватная обработка такой команды, можно будет выкинуть зависимость.
Comment 2 Vitaly Lipatov 2008-07-18 12:58:52 MSD
Возможно будет достаточно просто запустить этот файл, чтобы он сам распаковался, с одним из ключей
http://freesource.info/wiki/WINE/Programs/wcabextract
Comment 3 Виталий Перов 2008-07-31 12:34:05 MSD
ошибка выдаётся при проверке MSCF signature.
Вообще странно распаковывать файл вручную, если он сам может себя распаковать
Думаю extrac32 должен сначала проверять расширение, и если оно *.exe, то запускать сам файл.
Проблема в том, как распаковать отдельных файл оттуда.
Если набрать wine vcredist.exe /?, то можно посмотреть поддерживаемые опции. Распаковки отдельных файлов там нет, хотя это ещё не значит, что она не поддерживается

Есть ещё второй вариант - распаковывать именно через функции cabinet.dll, но для этого надо в *.exe файле научится находить место, откуда начинается *.cab -файл
Comment 4 Vitaly Lipatov 2008-07-31 13:05:23 MSD
Перевешиваю на Костю, чтобы он заменил когда-нибудь строку
$ cabextract -L -F ver1200.exe ./249973USA8.exe
на собственно вызов команды.

Comment 5 Константин Кондратюк 2008-07-31 13:19:46 MSD
У меня есть своя бага про cabextract, мне чужого не нужно :)
http://bugs.etersoft.ru/show_bug.cgi?id=693

Если всё с самораспаковкой решено - закрывайте, а я старую переоткрою пока...
Comment 6 Vitaly Lipatov 2008-07-31 13:26:10 MSD
extrac32 такие файлы не воспринимает, так уж он устроен.