http://bugs.winehq.org/show_bug.cgi?id=26507
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|http://www.filecluster.com/ |http://cdn.muvee.com/downlo |downloads/muvee-Reveal.html |ads/muveeReveal_8.0.1.14210 | |_2299.exe Summary|Muvee Reveal finds a |Muvee Reveal 8.0.1.1421 |problem and doesn't install |installer fails to extract | |its CABINET payload from | |embedded PE resource
--- Comment #12 from Anastasius Focht focht@gmx.net 2013-12-07 12:11:43 CST --- Hello folks,
still present.
The problem seems to be that Wine's builtin cabinet can't deal with CABINET resource embedded in PE file.
Relevant part of trace log:
--- snip --- ... 0024:Call KERNEL32.LoadLibraryW(0048f78c L"Cabinet.dll") ret=0042be9a 0024:Ret KERNEL32.LoadLibraryW() retval=7e240000 ret=0042be9a 0024:Call KERNEL32.GetProcAddress(7e240000,0048f780 "FDICreate") ret=0042beae 0024:Ret KERNEL32.GetProcAddress() retval=7e244b40 ret=0042beae 0024:Call KERNEL32.GetProcAddress(7e240000,0048f778 "FDICopy") ret=0042bec2 0024:Ret KERNEL32.GetProcAddress() retval=7e244b70 ret=0042bec2 0024:Call KERNEL32.GetProcAddress(7e240000,0048f768 "FDIIsCabinet") ret=0042bed6 0024:Ret KERNEL32.GetProcAddress() retval=7e244b58 ret=0042bed6 0024:Call KERNEL32.GetProcAddress(7e240000,0048f75c "FDIDestroy") ret=0042beea 0024:Ret KERNEL32.GetProcAddress() retval=7e244b88 ret=0042beea 0024:Call cabinet.FDICreate(00429e80,0042a870,0042ba30,0042b240,0042a890,0042b260,0042b2b0,00000001,0033e044) ret=0042bf54 0024:trace:cabinet:FDICreate (pfnalloc == ^0x429e80, pfnfree == ^0x42a870, pfnopen == ^0x42ba30, pfnread == ^0x42b240, pfnwrite == ^0x42a890, pfnclose == ^0x42b260, pfnseek == ^0x42b2b0, cpuType == 1, perf == ^0x33e044) 0024:Call ntdll.RtlAllocateHeap(06936000,00000000,00000024) ret=00463e35 0024:Ret ntdll.RtlAllocateHeap() retval=06940f60 ret=00463e35 0024:Ret cabinet.FDICreate() retval=06940f60 ret=0042bf54 ... 0024:Call KERNEL32.FindResourceW(00400000,0693e0f8 L"#6699",0693e5b0 L"#10") ret=0042a01e 0024:Ret KERNEL32.FindResourceW() retval=004b4fd8 ret=0042a01e 0024:Call KERNEL32.LoadResource(00400000,004b4fd8) ret=0042a028 0024:Ret KERNEL32.LoadResource() retval=004ea12c ret=0042a028 0024:Call KERNEL32.LockResource(004ea12c) ret=0042a02f 0024:Ret KERNEL32.LockResource() retval=004ea12c ret=0042a02f 0024:Call KERNEL32.SizeofResource(00400000,004b4fd8) ret=0042a03d 0024:Ret KERNEL32.SizeofResource() retval=0633b15d ret=0042a03d ... 0024:Call KERNEL32.WideCharToMultiByte(0000fde9,00000000,069425a8 L"*CABINET\",ffffffff,06943178,00000258,00000000,00000000) ret=00428fbb 0024:Ret KERNEL32.WideCharToMultiByte() retval=0000000a ret=00428fbb 0024:Call KERNEL32.WideCharToMultiByte(0000fde9,00000000,06942a60 L"*RESOURCE",ffffffff,06942f18,00000258,00000000,00000000) ret=00428fbb 0024:Ret KERNEL32.WideCharToMultiByte() retval=0000000a ret=00428fbb 0024:Call cabinet.FDICopy(06940f60,06942f18,06943178,00000000,0042b2d0,00000000,0033cf58) ret=0042b761 0024:trace:cabinet:FDICopy (hfdi == ^0x6940f60, pszCabinet == "*RESOURCE", pszCabPath == "*CABINET\", flags == 0, pfnfdin == ^0x42b2d0, pfnfdid == ^(nil), pvUser == ^0x33cf58) 0024:Call ntdll.RtlAllocateHeap(06936000,00000000,00016f60) ret=00463e35 0024:Ret ntdll.RtlAllocateHeap() retval=06949ba8 ret=00463e35 0024:trace:cabinet:FDICopy full cab path/file name: "*CABINET\*RESOURCE" 0024:Call ntdll.RtlAllocateHeap(06936000,00000000,000004b0) ret=00463e35 0024:Ret ntdll.RtlAllocateHeap() retval=069433d8 ret=00463e35 0024:Call KERNEL32.MultiByteToWideChar(0000fde9,00000000,0033bb84 "*CABINET\*RESOURCE",ffffffff,069433d8,00000258) ret=0042b37f 0024:Ret KERNEL32.MultiByteToWideChar() retval=00000013 ret=0042b37f ... 0024:trace:cabinet:FDI_read_entries (fdi == ^0x6940f60, hf == 110366608, pfdici == ^0x33bcb0) 0024:Call KERNEL32.GetLastError() ret=00468d49 0024:Ret KERNEL32.GetLastError() retval=00000002 ret=00468d49 0024:warn:cabinet:FDICopy FDI_read_entries failed: 2 ... 0024:Ret cabinet.FDICopy() retval=00000000 ret=0042b761 ... 0024:Call cabinet.FDIDestroy(06940f60) ret=00429e4e 0024:trace:cabinet:FDIDestroy (hfdi == ^0x6940f60) ... 0024:Ret cabinet.FDIDestroy() retval=00000001 ret=00429e4e ... --- snip ---
I extracted the PE resource using LordPE and it's indeed a .cab file:
--- snip -- $ file res#6699.cab res#6699.cab: Microsoft Cabinet archive data, 104051037 bytes, 37 files --- snip --
'winetricks cabinet' works around. Though this override will later lead to a crash because Wine's msi doesn't seem to like native cabinet.
Mapping/access of the PE resource/file is handled by the application provided callback. There is most likely something wrong with placement/order of notifications sent within FDICopy().
$ sha1sum muveeReveal_8.0.1.14210_2299.exe 93db0d86103c8ed4e3c3ecff367468f2b120e8dc muveeReveal_8.0.1.14210_2299.exe
$ du -sh muveeReveal_8.0.1.14210_2299.exe 101M muveeReveal_8.0.1.14210_2299.exe
$ wine --version wine-1.7.8-128-g37460b6
Regards