https://bugs.winehq.org/show_bug.cgi?id=48286
Bug ID: 48286 Summary: .NET Framework 2.x, 3.x installers running in Windows 7 mode report 'You must use "Turn Windows features on or off" in the Control Panel to install <net framework>.' Product: Wine Version: 5.0-rc1 Hardware: x86-64 OS: Linux Status: NEW Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net Distribution: ---
Hello folks,
adding info for documentation purpose. I've briefly mentioned it some time ago here: https://bugs.winehq.org/show_bug.cgi?id=34967#c5
Various .NET Framework installers refuse to install in Wine with WINEPREFIX default WinVer setting 'Windows 7'. Reason: Almost all .NET Framework installers contain builtin conditions ("blockers") for unsupported Windows versions.
Trace log of such attempt, .NET Framework 2.0 SP1 in clean 32-bit WINEPREFIX (no Wine-Mono, no winetricks):
--- snip --- $ WINEDEBUG=+seh,+relay,+msi wine .cache/winetricks/dotnet20sp1/NetFx20SP1_x86.exe >>log.txt 2>&1 ... 002e:Call KERNEL32.GetPrivateProfileStringW(3a220ea0 L"VS Custom",3a220dcc L"AllowLaunchOnWin2k",3a21fb0c L"",0032e120,00000104,018b67f0 L"c:\f8fad0586886391605\Setup.sdb") ret=3a24aacc ... 002e:Ret KERNEL32.GetPrivateProfileStringW() retval=00000001 ret=3a24aacc ... 002e:Call KERNEL32.GetVersionExW(0032e168) ret=3a27aa83 ... 002e:Ret KERNEL32.GetVersionExW() retval=00000001 ret=3a27aa83 ... 002e:Call KERNEL32.GetPrivateProfileStringW(3a220ea0 L"VS Custom",3a220f04 L"BlockFutureClientOS",3a21fb0c L"",0032e11c,00000104,018b67f0 L"c:\f8fad0586886391605\Setup.sdb") ret=3a24a6dc ... 002e:Ret KERNEL32.GetPrivateProfileStringW() retval=00000001 ret=3a24a6dc ... 002e:Call user32.MessageBoxW(00000000,018b6890 L"You must use "Turn Windows features on or off" in the Control Panel to install or configure Microsoft .NET Framework 2.0 SP1.",018b6730 L"Microsoft .NET Framework 2.0 SP1 Setup",00040010) ret=3a24a7b9 ... --- snip ---
Installer log:
--- snip --- ... [12/14/19,20:36:02] Setup.exe: StartUIManager() [12/14/19,20:36:02] vs70uimgr: Entering RunScenario() method. [12/14/19,20:36:02] vs70uimgr: CUIMgr::RunScenario(): Starting the active scenario [12/14/19,20:36:02] Setup.exe: GetGlobalCustomProperty - Property: {AA62DF98-3F2C-11D3-887B-00C04F8ECDD6} - PropertyName: Maintenance Mode - Value: 0 [12/14/19,20:36:02] Setup.exe: GetGlobalCustomProperty - Property: {340F7930-0E41-11D3-ACE2-00C04F8EEBA1} - PropertyName: Output Unattend File - Value: [12/14/19,20:36:02] VS Scenario: Validating system requirements [12/14/19,20:36:02] Setup_Blocked: CSupportedPlatformCheck [12/14/19,20:36:02] Setup.exe: GetGlobalCustomProperty - Property: {092114C2-997D-4D68-8F3A-8BC2584FD23B} - PropertyName: Quiet Mode Setup - Value: [12/14/19,20:36:31] Setup.exe: AddGlobalCustomProperty [12/14/19,20:36:31] Setup.exe: AddGlobalCustomProperty [12/14/19,20:36:31] VS Scenario: ***ERRORLOG EVENT*** : CSupportedPlatformCheck failed : You must use "Turn Windows features on or off" in the Control Panel to install or configure Microsoft .NET Framework 2.0 SP1. [12/14/19,20:36:31] Setup.exe: AddGlobalCustomProperty [12/14/19,20:36:31] VS Scenario: ***ERRORLOG EVENT*** : Failed to pass the Warnings/Blocks checks in CVSScenario::Start() [12/14/19,20:36:31] vs70uimgr: CUIMgr::RunScenario(): Start() returned canceled or FAILED(hr) [12/14/19,20:36:31] Setup.exe: SetupManager::RunPostSetupLaunch() starting [12/14/19,20:36:31] Setup.exe: SetupManager::RunPostSetupLaunch() ending --- snip ---
Relevant section of 'setup.sdb':
--- snip --- ... [VS Custom] EmptyClient=1 DeferBaselineReboots=1 EnableRollback=1 PatchCache=SYSMSICache\Framework\v3.5 InstallSourceName=dotnetfx3.exe DownloadTempDirBaseName=dotnetfx35 JobIdSubRegKeyFormatTemplate=SOFTWARE\Microsoft\Net Framework Setup\NDP\v3.5\Setup WinFXSetupRegKeyPath=SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5\Setup BlockFutureClientOS=1 BlockFutureServerOS=1 DisableBrowseForComponent=1 PackageURL=fwlink/?LinkId=69165 BlockUninstallKeyName=NextVersionInstalled DependencyFile=vs_setup.pdi ComponentFile=baseline.dat BitmapFile=logo.bmp BaselineFolder=.\WCU SupportLink=http://go.microsoft.com/fwlink/?LinkId=48390 Ver=3.5 RegKey=NetFX ProdName=Microsoft .NET Framework 2.0 SP1 LangCode=ENU LangID=1033 CpuType=X86 ProdFamilyType=NETFX20 EditionType=EXP NoMaintenanceMode=1 AllowLaunchOnWin2k=1 EnableAutomaticUpgradeSupport=0 ImageType=NET ProdID={B508B3F1-A24A-32C0-B310-85786919EF28} VersionMajor=3 VersionMinor=5 Revision=21022.08 CustomTextPrefix=CustomText ProductSupportURL=http://go.microsoft.com/fwlink/?LinkId=48390 --- snip ---
Technically one could unpack the outer archive and patch setup database to 'BlockFutureClientOS=0'. But that's officially not supported and rather discouraged. Aaron Stebner mentioned this method as well here:
https://blogs.msdn.microsoft.com/astebner/2007/01/04/why-net-framework-3-0-l...
(hack .NET Framework 3.0 language packs to install on Windows Vista).
I've tested the following 'WinVer' ranges with Wine to be working, taking builtin installer blockers into account:
---------------------------------------------------------------- | .NET Framework version | min. WinVer | max. WinVer | ---------------------------------------------------------------- | .NET Framework 2.0 | Windows 2000 | n/a (Windows 10+) | | .NET Framework 2.0 SP1 | Windows 2000 | Windows XP/2003 | | .NET Framework 2.0 SP2 | Windows 2000 | Windows XP/2003 | | .NET Framework 3.0 | Windows XP/2003 | Windows XP/2003 | | .NET Framework 3.0 SP1 | Windows XP/2003 | Windows XP/2003 | | .NET Framework 3.5 | Windows XP/2003 | Windows Vista | | .NET Framework 3.5 SP1 | Windows XP/2003 | Windows Vista | | .NET Framework 4.x | Windows XP/2003 | n/a (Windows 10+) | ----------------------------------------------------------------
Some sections in 'winetricks dotnet' recipes are outdated nowaways:
* unnecessary Windows 2000 setting * unnecessary overrides to builtins (which actually have nasty side-effects, such as bug 47484) * unnecessary registry manipulation/fixups (.NET/NDP versions)
$ wine --version wine-5.0-rc1
Regards