http://bugs.winehq.org/show_bug.cgi?id=10547
Summary: .NET 3.5 Framework installation problems (msi, bits, crypt32) Product: Wine Version: CVS/GIT Platform: PC URL: http://download.microsoft.com/download/6/0/f/60fc5854- 3cb8-4892-b6db-bd4f42510f28/dotnetfx35.exe OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: wine-dotnet AssignedTo: wine-bugs@winehq.org ReportedBy: focht@gmx.net
Created an attachment (id=9300) --> (http://bugs.winehq.org/attachment.cgi?id=9300) patch which adds msi.MsiSetExternalUIRecord and msi.MsiDetermineApplicablePatchesW
Hello,
this (showcase) bug id exists to show/track .NET Framework 3.5 install issues, e.g. what wine needs to implement/work around. With VS.NET 2008 and .NET Framework 3.5 released, the Framework 3.5 needs to be installed first.
Used GIT:
wine --version wine-0.9.49-331-g7a8eb4c
Prerequisites:
1) set OS config to at least "Windows XP"
2) one volume name (dosdevices/<driveletter>:) must contain "harddisk" or "ramdisk" and write accessible
cd ~/.wine mv drive_c harddiskvolume1 cd dosdevices ln -sf ../harddiskvolume1 c:
The installer then stops at unimplemented msi.MsiSetExternalUIRecord, attached patch adds simple stub which fixes this.
---- If you downloaded the "small" .NET Framework installer, you now run into a major showstopper: BITS required
The partial installer depends on: http://bugs.winehq.org/show_bug.cgi?id=5713
What is the consensus regarding native BITS and builtin BITS? Builtin bits might take some time until it gets into usable state. Native BITS is described here: http://bugs.winehq.org/show_bug.cgi?id=6194 though I haven't looked at it for some time. Will native BITS considered abandoned then (needs some nasty workarounds)?
----
If you downloaded the full installer some messages seem to indicate BITS is used in full installer too, but it doesn't seem to harm now.
--- snip --- 0012:err:ole:create_server class {4991d34b-80a1-4291-83b6-3328366b9097} not registered 0012:fixme:ole:CoGetClassObject CLSCTX_REMOTE_SERVER not supported 0012:err:ole:CoGetClassObject no class object {4991d34b-80a1-4291-83b6-3328366b9097} could be created for context 0x17 0012:Ret ole32.CoCreateInstance() retval=80004002 ret=3aea41ed .. 0012:Call advapi32.RegCreateKeyExW(80000001,00563758 L"SOFTWARE\Microsoft\VisualStudio\9.0\DownloadManager",00000000,00000000,00000000,0002001f,00000000,0034e284,00000000) ret=3aea8785 0012:Ret advapi32.RegCreateKeyExW() retval=00000000 ret=3aea8785 0012:Call advapi32.RegQueryValueExW(00000290,00563d30 L"BitsOverride",00000000,0034e1c8,0034e1f4,0034e1cc) ret=3aea899a 0012:Ret advapi32.RegQueryValueExW() retval=00000002 ret=3aea899a --- snip ---
Interestingly there is some undocumented "BitsOverride" which might indicate a possibility to revert their interal download manager to standard download procedures.
The showstopper for full installer seem to be various hotfix installers which are spawned by main installer.
As example I start with hotfix "Windows Imaging Component update" which gets extracted by installer into "c:<guid>\wcu\dotNetFramework\dotNetFX30\WIC_x86_enu.exe" and tries to run it. This fails and lets overall installer fail too.
It seems to make various specific checks for operating system version/build. I only quote checks which seem to fail:
--- snip --- 0040:Call KERNEL32.CreateFileA(01104940 "c:\windows\system32\ntoskrnl.exe",80000000,00000001,00000000,00000003,00000000,00000000) ret=01070767 0040:Ret KERNEL32.CreateFileA() retval=ffffffff ret=01070767 0040:Call KERNEL32.CloseHandle(ffffffff) ret=010708a6 0040:Ret KERNEL32.CloseHandle() retval=00000000 ret=010708a6 --- snip ---
"GetKernelType: GetInternalFilename failed"
--- snip --- 0040:Call KERNEL32.LoadLibraryA(01023c38 "setupapi.dll") ret=0106f709 0040:Ret KERNEL32.LoadLibraryA() retval=615d0000 ret=0106f709 0040:Call KERNEL32.GetProcAddress(615d0000,01023c24 "pSetupIsUserAdmin") ret=0106f71b 0040:Ret KERNEL32.GetProcAddress() retval=00000000 ret=0106f71b 0040:Call KERNEL32.FreeLibrary(615d0000) ret=0106f72a 0040:Ret KERNEL32.FreeLibrary() retval=00000001 ret=0106f72a --- snip ---
--- snip --- 0040:Call advapi32.RegOpenKeyExA(80000002,0101e608 "SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\WindowsFeatures",00000000,00020019,0033b774) ret=0109191a 0040:Ret advapi32.RegOpenKeyExA() retval=00000002 ret=0109191a 0040:Call KERNEL32.GetLastError() ret=010701ae 0040:Ret KERNEL32.GetLastError() retval=00000078 ret=010701ae --- snip ---
"GetBuildType, line 1170, RegOpenKeyEx failed with error 0x2"
--- snip --- 0030:Call KERNEL32.LoadLibraryExA(0033b9c4 "c:\windows\system32\pidgen.dll",00000000,00000002) ret=0105d03f 0030:Ret KERNEL32.LoadLibraryExA() retval=00000000 ret=0105d03f 0030:Call KERNEL32.GetLastError() ret=010701ae 0030:Ret KERNEL32.GetLastError() retval=0000007e ret=010701ae --- snip ---
This is from the log of installer itself to get the idea:
--- snip --- 0.101: Hotfix started with following command line: 0.101: GetKernelType: GetInternalFilename failed 0.102: In Function GetBuildType, line 1170, RegOpenKeyEx failed with error 0x2 0.102: GetGroupIdFromPidGenDll:LoadLibrary failed for c:\windows\system32\pidgen.dll dll 0.102: CheckSystem_1203: Failed to get product build type. 0.102: DoInstallation: CheckSystem Failed: 0xf117 0.103: WIC installation did not complete. 1.469: Message displayed to the user: WIC installation did not complete. 1.469: User Input: OK 1.469: Update.exe extended error code = 0xf117 1.469: Update.exe return code was masked to 0x643 for MSI custom action compliance. --- snip ---
I copied "pigen.dll" from my windows xp installation and it seems to help a bit, showing that previous checks might be optional?
--- snip --- 0040:Call KERNEL32.LoadLibraryExA(0033b9c4 "c:\windows\system32\pidgen.dll",00000000,00000002) ret=0105d03f 0040:Ret KERNEL32.LoadLibraryExA() retval=003b0001 ret=0105d03f 0040:Call KERNEL32.FindResourceA(003b0001,00000001,0101e2ac "BINK") ret=0105d059 0040:Ret KERNEL32.FindResourceA() retval=003b54a0 ret=0105d059 0040:Call KERNEL32.LoadResource(003b0001,003b54a0) ret=0105d070 0040:Ret KERNEL32.LoadResource() retval=003b54e0 ret=0105d070 0040:Call KERNEL32.LockResource(003b54e0) ret=0105d07d 0040:Ret KERNEL32.LockResource() retval=003b54e0 ret=0105d07d 0040:Call KERNEL32.FreeResource(003b54e0) ret=0105d0aa 0040:Ret KERNEL32.FreeResource() retval=00000000 ret=0105d0aa 0040:Call KERNEL32.FreeLibrary(003b0001) ret=0105d0b1 0040:Ret KERNEL32.FreeLibrary() retval=00000001 ret=0105d0b1 --- snip ---
Seems "only" the "BINK" resource is read (2 sub chunks)
From researching a bit this resource seems to be related to the public key(s)
for the product id stuff (elliptic curve cryptography). No API exports are used (GetProcAddress/...).
And the installer log:
--- snip --- 0.028: 2007/11/23 12:49:19.973 (local) 0.028: C:\036ac5753759f7b22a9a8e26\update\update.exe (version 6.3.4.0) 0.030: Hotfix started with following command line: 0.030: GetKernelType: GetInternalFilename failed 0.031: In Function GetBuildType, line 1170, RegOpenKeyEx failed with error 0x2 0.162: c:\windows\system32\WindowsCodecs.dll is Not Present 0.162: First Condition in Test.WindowsCodecsVer.Section Succeeded 0.162: Condition succeeded for section Test.WindowsCodecsVer.Section in Line 1 of PreRequisite 0.162: c:\windows\system32\WindowsCodecsExt.dll is Not Present 0.162: First Condition in Test.WindowsCodecsExtVer.Section Succeeded 0.162: Condition succeeded for section Test.WindowsCodecsExtVer.Section in Line 2 of PreRequisite 0.163: c:\windows\system32\WMPhoto.dll is Not Present 0.163: First Condition in Test.WMPhotoVer.Section Succeeded 0.163: Condition succeeded for section Test.WMPhotoVer.Section in Line 3 of PreRequisite 0.164: c:\windows\system32\PhotoMetadataHandler.dll is Not Present 0.164: First Condition in Test.PhotoMetadataHandlerVer.Section Succeeded 0.164: Condition succeeded for section Test.PhotoMetadataHandlerVer.Section in Line 4 of PreRequisite 0.198: InstallInfCatalogFile: Installing c:\4cbc8383318bb456e1d38cacd0\update\WIC.cat as _000000_.cat... 0.199: VerifyTargetFileSize: Unable to verify size as Source = NULL for file c:\windows_000000_.cat 0.200: InstallCatalogFile: VerifyCatalogFile failed for c:\windows_000000_.cat; error=0x00000001. 0.201: InstallInfCatalogFile: Installation failed; error=0x00000002. 0.201: UdpStopService: OpenService failed :0x424 0.201: IsInfFileTrusted: ValidateSingleFileSignature Failed: STR_FAILED_INF_INTEGRITY 0.201: WIC Setup encountered an error: Setup could not verify the integrity of the file Update.inf. Make sure the Cryptographic service is running on this computer. 0.202: DeleteCatalogFile _000000_.cat failed with ERROR 2 0.202: CleanupTrustedInfFile: GetFileAttributes for c:\windows\system32\CatRoot{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\update_WinXP.cat failed: 0x3 0.205: Setup could not verify the integrity of the file Update.inf. Make sure the Cryptographic service is running on this computer. 10.573: Message displayed to the user: Setup could not verify the integrity of the file Update.inf. Make sure the Cryptographic service is running on this computer. 10.573: User Input: OK 10.573: Update.exe extended error code = 0xf0da 10.573: Update.exe return code was masked to 0x643 for MSI custom action compliance. --- snip ---
The inf/old catalog file problem...
Anyway one can get around by manually copying these 4 files (WindowsCodecs.dll, WindowsCodecsExt.dll, WMPhoto.dll, PhotoMetadataHandler.dll) before installtion into system32. Extract them from the hotfix installer to have version match. This seems to work around the hotfix issues/catalog problem.
With the files in place before .NET installation this hotfix is skipped and the installer runs into:
--- snip --- wine: Call from 0x7b841450 to unimplemented function msi.dll.MsiDetermineApplicablePatchesW, aborting --- snip ---
Attached patch fixes this. After that it gets further only to stop at another hotfix installer "XPSEPSC" - the catalog install problem. So I stop for now because it sucks to work around each single hotfix installer.
Should be good enough to give an idea ...
Regards