http://bugs.winehq.org/show_bug.cgi?id=14277
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net
--- Comment #1 from Anastasius Focht focht@gmx.net 2008-07-08 15:21:56 --- Hello,
the bug is due to incorrect handling of WIN_SPUB_ACTION_PUBLISHED_SOFTWARE action in wintrust.
The installer downloads some custom .NET install engine from http://www.installengine.com/cert05/dotnetfx/dotnetfx.exe
--- snip Setup.INI --- [dotnetfx.exe] CertKey=DotNet.isc Type=2 Location=http://www.installengine.com/cert05/dotnetfx/dotnetfx.exe --- snip Setup.INI ---
This seems to be for apps which were packaged with InstallShield 12+ and the 'Download from the Web' option (Macrovision bought InstallShield a while ago). The installer will verify the integrity of the downloaded custom .NET install engine which fails.
--- snip --- .. 0032:Call wintrust.WinVerifyTrust(00110072,0043b320,0032abc0) ret=00409aa9 0032:trace:wintrust:WinVerifyTrust (0x110072, {64b9d180-8da2-11cf-8736-00aa00a485eb}, 0x32abc0) 0032:trace:wintrust:dump_wintrust_data 0x32abc0 0032:trace:wintrust:dump_wintrust_data cbStruct: 0 0032:trace:wintrust:dump_wintrust_data pPolicyCallbackData: 0x43b310 0032:trace:wintrust:dump_wintrust_data pSIPClientData: 0x32abcc 0032:trace:wintrust:dump_wintrust_data dwUIChoice: 0 0032:trace:wintrust:dump_wintrust_data fdwRevocationChecks: 0056cf70 0032:trace:wintrust:dump_wintrust_data dwUnionChoice: 1622127976 0032:trace:wintrust:dump_wintrust_data dwStateAction: 3320832 0032:trace:wintrust:dump_wintrust_data hWVTStateData: 0x431dd8 0032:trace:wintrust:dump_wintrust_data pwszURLReference: (null) 0032:trace:wintrust:dump_wintrust_data dwProvFlags: 0032ac0c 0032:trace:wintrust:dump_wintrust_data dwUIContext: 4326804 0032:trace:wintrust:WINTRUST_PublishedSoftware subjectFile->hFile: (nil) 0032:trace:wintrust:WINTRUST_PublishedSoftware subjectFile->lpPath: L"C:\windows\temp\{735C90D0-4D20-11DD-879C-0018F3866A01}\dotnetfx.exe" 0032:trace:wintrust:WINTRUST_DefaultVerifyAndClose (0x110072, {64b9d180-8da2-11cf-8736-00aa00a485eb}, 0x32aacc) 0032:trace:wintrust:WINTRUST_DefaultVerify (0x110072, {64b9d180-8da2-11cf-8736-00aa00a485eb}, 0x32aacc) .. 0032:Call wintrust.SoftpubInitialize(0014f378) ret=60b097b0 0032:trace:wintrust:SoftpubInitialize (0x14f378) 0032:trace:wintrust:SoftpubInitialize returning 00000000 0032:Ret wintrust.SoftpubInitialize() retval=00000000 ret=60b097b0 0032:Call wintrust.SoftpubLoadMessage(0014f378) ret=60b09942 0032:trace:wintrust:SoftpubLoadMessage (0x14f378) 0032:Call KERNEL32.CreateFileW(0032abb4 L"\c1502",80000000,00000001,00000000,00000003,00000080,00000000) ret=60b0815d 0032:Ret KERNEL32.CreateFileW() retval=ffffffff ret=60b0815d 0032:trace:wintrust:SOFTPUB_OpenFile returning 0 0032:trace:wintrust:SoftpubLoadMessage returning 1 (00000002) 0032:Ret wintrust.SoftpubLoadMessage() retval=00000001 ret=60b09942 0032:trace:wintrust:WINTRUST_DefaultVerify returning 00000001 0032:trace:wintrust:WINTRUST_DefaultClose (0x110072, {64b9d180-8da2-11cf-8736-00aa00a485eb}, 0x32aacc) 0032:Call wintrust.SoftpubCleanup(0014f378) ret=60b09537 .. 0032:trace:wintrust:WINTRUST_DefaultClose returning 00000000 0032:trace:wintrust:WINTRUST_DefaultVerifyAndClose returning 00000001 0032:trace:wintrust:WinVerifyTrust returning 00000001 0032:Ret wintrust.WinVerifyTrust() retval=00000001 ret=00409aa9 .. 0032:Call KERNEL32.lstrcpyA(0032a46c,0032a88c "1621: Kan de handtekening van het bestand dotnetfx.exe niet controleren.") ret=004090d1 0032:Ret KERNEL32.lstrcpyA() retval=0032a46c ret=004090d1 0032:Call user32.DialogBoxParamA(00400000,00000402,00000000,004090f5,0032a468) ret=004090ec .. --- snip ---
For the WIN_SPUB_ACTION_PUBLISHED_SOFTWARE action, the action data parameter is a pointer to a WIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT structure. The subject is actually a pointer to WIN_TRUST_SUBJECT_FILE. The caller passes subjectFile->hFile = NULL and a valid (full) subjectFile->lpPath to the file to be verified.
Just cast to appropriate struct types and correctly fill the file info with it (handle, path). This lets the downloaded installer pass the integrity check and starts the download of real .NET Framework. Although only a small fix, I'll leave out any patch snippets to give potential patch implementor full freedom.
This bug is only valid for the purpose of fixing WIN_SPUB_ACTION_PUBLISHED_SOFTWARE action.
Don't let the setup download and install .NET 2.0 Framework anyway (bug 10601). Use 'sh winetricks dotnet20' as prerequisite!
Regards