https://bugs.winehq.org/show_bug.cgi?id=46895
Bug ID: 46895 Summary: SIMATIC WinCC V15.1 Runtime installer (.NET 4.0) fails due to missing 'OperatingSystemSKU' property of 'Win32_OperatingSystem' WMI class Product: Wine Version: 4.4 Hardware: x86-64 OS: Linux Status: NEW Severity: normal Priority: P2 Component: wmi&wbemprox Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net Distribution: ---
Hello folks,
continuation of bug 46894
--- snip --- $ pwd /home/focht/Downloads/SIMATIC WinCC Runtime Advanced V15.1
$ WINEDEBUG=+loaddll,+process,+seh,+wbemprox,+msi,+relay wine ./Start.exe
log.txt 2>&1
... 0032:Call KERNEL32.CreateProcessW(00175248 L"C:\Program Files\Common Files\Siemens\Automation\Siemens Installer Assistant\406\SIA2.exe",004f1f58 L""C:\Program Files\Common Files\Siemens\Automation\Siemens Installer Assistant\406\SIA2.exe" /starter /bundlepath="Z:\HOME\FOCHT\DOWNLOADS\SIMATIC WINCC RUNTIME ADVANCED V15.1\InstData"",00000000,00000000,00000001,00000000,00000000,00000000,0033fae8,0033fb2c) ret=00418015 ... 0052:Ret KERNEL32.__wine_kernel_init() retval=7b472c58 ret=7bc72119 0032:trace:process:CreateProcessInternalW started process pid 0051 tid 0052 0032:Ret KERNEL32.CreateProcessW() retval=00000001 ret=00418015 ... 0052:trace:wbemprox:class_object_Get 0x1e8190, L"OperatingSystemSKU", 00000000, 0x32ebf8, 0x1080188, 0x108018c ... 0052:trace:wbemprox:wbem_services_ExecQuery 0x1e9ac0, L"WQL", L"select OperatingSystemSKU from Win32_OperatingSystem", 0x00000010, (nil), 0x32eb9c ... 0052:trace:wbemprox:grab_table returning 0x7c6c8594 0052:trace:wbemprox:parse_query wql_parse returned 0 .. 0052:trace:wbemprox:fill_os created 1 rows ... 0052:trace:wbemprox:EnumWbemClassObject_create 0x32eb9c ... 0052:trace:wbemprox:EnumWbemClassObject_create returning iface 0x1e7a20 ... 0052:trace:wbemprox:enum_class_object_Next 0x1e7a58, -1, 1, 0x1e8178, 0x107de18 0052:trace:wbemprox:create_class_object L"Win32_OperatingSystem", 0x1e8178 ... 0052:trace:wbemprox:create_class_object returning iface 0x1e8190 ... 0052:trace:wbemprox:class_object_Get 0x1e8190, L"OperatingSystemSKU", 00000000, 0x32ebf8, 0x1080188, 0x108018c ... 0052:Call KERNEL32.RaiseException(e0434352,00000001,00000005,0032eb3c) ret=791cac08 0052:trace:seh:raise_exception code=e0434352 flags=1 addr=0x7b44c142 ip=7b44c142 tid=0052 0052:trace:seh:raise_exception info[0]=80131501 0052:trace:seh:raise_exception info[1]=00000000 0052:trace:seh:raise_exception info[2]=00000000 0052:trace:seh:raise_exception info[3]=00000000 0052:trace:seh:raise_exception info[4]=79140000 0052:trace:seh:raise_exception eax=7b43a4ad ebx=00000005 ecx=00000000 edx=0032eaf8 esi=0032eaf8 edi=0032eac0 0052:trace:seh:raise_exception ebp=0032ea98 esp=0032ea34 cs=320023 ds=32002b es=f7c0002b fs=f7c00063 gs=f7c0006b flags=00200212 0052:trace:seh:call_vectored_handlers calling handler at 0x791f5a7c code=e0434352 flags=1 --- snip ---
Managed CLR backtrace:
--- snip --- Exception object: 00f10aa0 Exception type: System.Management.ManagementException Message: Error code: 0x80041002 InnerException: <none> StackTrace (generated): <none> StackTraceString: <none> HResult: 80131501 OS Thread Id: 0x30 (0) Child SP IP Call Site 0032ebe8 7b44c142 [HelperMethodFrame: 0032ebe8] 0032ec38 05001411 System.Management.ManagementException.ThrowWithExtendedInfo(System.Management.ManagementStatus) 0032ec78 04ff8da8 System.Management.PropertyData.RefreshPropertyInfo() 0032ec84 04ff8d0a System.Management.PropertyDataCollection.get_Item(System.String) 0032ec98 0500046e Siemens.Automation.Setup.Core.Tools.OsVersion.GetVistaSku() 0032ecc8 0515f20a Siemens.Automation.Setup.Core.Tools.OsVersion..ctor() 0032ecf0 04ffe84b Siemens.Automation.Setup.Sia.Engine.Prop.GlobalProperties..ctor() 0032ef98 04ffe11f Siemens.Automation.Setup.Sia.Engine.Prop.GlobalProperties.GetInstance() 0032efc4 04825ab8 Siemens.Automation.Setup.Sia.Engine.Installer.InitInstallerInternal(System.String[]) 0032f268 04823d03 Siemens.Automation.Setup.Sia.Engine.Installer.InitInstaller(System.String[]) 0032f298 04823abe Siemens.Automation.Setup.Sia.Gui.Controller.Initiate() 0032f2cc 03fb5bf7 Siemens.Automation.Setup.Sia.Gui.BusinessLogic.Initialize() 0032f2ec 037b2794 Siemens.Automation.Setup.Sia.Gui.Program.Main() 0032f538 791421db [GCFrame: 0032f538] --- snip ---
The relevant piece of C# code from calling assembly:
--- snip --- // Type: Siemens.Automation.Setup.Core.Tools.OsVersion // Assembly: Setup.Core, Version=102.0.146.1, Culture=neutral, PublicKeyToken=229591fa2d4059f2 // MVID: 0F0EB668-D0EE-4D52-8B03-80AFA252A799 // Assembly location: Z:\home\focht\Downloads\Setup.Core.dll // Compiler-generated code is shown
using Microsoft.Win32; using Siemens.Automation.Setup.Core.Tools.ApiNativeFunctions; using System; using System.Collections.Generic; using System.Management;
namespace Siemens.Automation.Setup.Core.Tools { public class OsVersion { ... private OsSKU m_SKU; ... public OsVersion() { base.\u002Ector(); OperatingSystem osVersion1 = Environment.OSVersion; Version version = osVersion1.Version; this.m_Alias = string.Format("Windows{0}{1}", (object) version.Major, (object) version.Minor); this.m_Description = osVersion1.VersionString; if (osVersion1.Platform == PlatformID.Win32NT && version.Major > 4) { this.m_Description = "Microsoft "; OsNativeFunc.OSVERSIONINFOEX osVersionInfoEx = new OsNativeFunc.OSVERSIONINFOEX(); int versionEx = (int) OsNativeFunc.GetVersionEx(osVersionInfoEx); this.m_ServicePack = (int) osVersionInfoEx.ServicePackMajor; ProcessorArchitecture platform = OsNativeFunc.GetPlatform(); switch (platform) { case ProcessorArchitecture.PROCESSOR_ARCHITECTURE_IA64: case ProcessorArchitecture.PROCESSOR_ARCHITECTURE_AMD64: this.m_Platform = OsPlatform.x64; break; } this.m_Product = osVersionInfoEx.ProductType; this.m_Mask = osVersionInfoEx.SuiteMask; if (version.Major > 5) { this.m_Description = OsNativeFunc.GetOSFriendlyName(); this.m_Family = version.Major > 6 || version.Major == 6 && version.Minor > 0 ? OsFamily.WindowsNewer : (osVersionInfoEx.ProductType != ProductType.VER_NT_WORKSTATION ? OsFamily.Windows2008 : OsFamily.WindowsVista); OsNativeFunc.GetProductInfo(6, 1, 0, 0, out this.m_ProductInfo); OsVersion osVersion2 = this; osVersion2.m_Description = osVersion2.m_Description + " " + OsNativeFunc.GetProductInfoDescription(this.m_ProductInfo); this.m_SKU = this.GetVistaSku(); this.m_UBR = this.GetUBR(); } if (version.Major == 5 && version.Minor == 2) { ... } if (version.Major == 5 && version.Minor == 1) { ... } if (version.Major == 5 && version.Minor == 0) { ... } if (!string.IsNullOrEmpty(osVersionInfoEx.CSDVersion)) { OsVersion osVersion2 = this; osVersion2.m_Description = osVersion2.m_Description + ", " + osVersionInfoEx.CSDVersion; } if (this.m_Platform == OsPlatform.x64) this.m_Description += ", 64-bit"; else this.m_Description += ", 32-bit"; OsVersion osVersion3 = this; osVersion3.m_Description = osVersion3.m_Description + ", build " + osVersionInfoEx.BuildNumber.ToString(); } else this.m_Description = osVersion1.VersionString; if (string.IsNullOrEmpty(this.m_Name)) this.m_Name = this.m_Family.ToString(); if (this.m_Platform != OsPlatform.x64) return; this.m_Name += "64"; this.m_Alias += "64"; }
private OsSKU GetVistaSku() { using (ManagementObjectCollection.ManagementObjectEnumerator enumerator = new ManagementObjectSearcher((ObjectQuery) new SelectQuery("SELECT OperatingSystemSKU FROM Win32_OperatingSystem")).Get().GetEnumerator()) { if (enumerator.MoveNext()) return (OsSKU) Convert.ToInt32(enumerator.Current.Properties["OperatingSystemSKU"].Value); } return OsSKU.Undefined; }
... --- snip ---
Microsoft docs:
https://docs.microsoft.com/en-us/windows/desktop/cimwin32prov/win32-operatin...
--- quote ---
OperatingSystemSKU
Data type: uint32
Access type: Read-only
Qualifiers: MappingStrings ("WMI")
Stock Keeping Unit (SKU) number for the operating system. These values are the same as the PRODUCT_* constants defined in WinNT.h that are used with the GetProductInfo function.
The following list lists possible SKU values.
... --- quote ---
Wine source:
https://source.winehq.org/git/wine.git/blob/HEAD:/dlls/wbemprox/builtin.c#l5...
$ sha1sum SIMATIC_WinCC_Runtime_Advanced_V15_1.exe db1f97bb648b62fa1c5d974d7f2bcb6b4a9fd786 SIMATIC_WinCC_Runtime_Advanced_V15_1.exe
$ du -sh SIMATIC_WinCC_Runtime_Advanced_V15_1.exe 1.3G SIMATIC_WinCC_Runtime_Advanced_V15_1.exe
$ wine --version wine-4.4-188-gc988910cae
Regards