[Bug 46895] New: SIMATIC WinCC V15.1 Runtime installer (.NET 4.0) fails due to missing 'OperatingSystemSKU' property of ' Win32_OperatingSystem' WMI class

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Mar 24 10:57:53 CDT 2019


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 at winehq.org
          Reporter: focht at 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-operatingsystem

--- 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#l576

$ 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

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list