From 191b2fc319dcd791bf8c87df85190aa1a0e1fc1b Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Fri, 4 Dec 2020 09:41:37 +0100 Subject: [PATCH] update RealOSType check --- Pilz/Runtime/RuntimeInformationsEx.vb | 57 +++++++++++++++++---------- 1 file changed, 37 insertions(+), 20 deletions(-) diff --git a/Pilz/Runtime/RuntimeInformationsEx.vb b/Pilz/Runtime/RuntimeInformationsEx.vb index 24ecfb0..1a5dd21 100644 --- a/Pilz/Runtime/RuntimeInformationsEx.vb +++ b/Pilz/Runtime/RuntimeInformationsEx.vb @@ -30,28 +30,45 @@ Namespace Runtime Get Static t As OSType? = Nothing - If t Is Nothing Then - Dim windir As String = Environment.GetEnvironmentVariable("windir") + If t Is Nothing Then - If Not String.IsNullOrEmpty(windir) AndAlso windir.Contains("\") AndAlso Directory.Exists(windir) Then - t = OSType.Windows - ElseIf File.Exists("/proc/sys/kernel/ostype") Then - Dim osTypeString As String = File.ReadAllText("/proc/sys/kernel/ostype") - If osTypeString.StartsWith("Linux", StringComparison.OrdinalIgnoreCase) Then - ' Note: Android gets here too - t = OSType.Linux - Else - t = OSType.Unknown - End If - ElseIf File.Exists("/System/Library/CoreServices/SystemVersion.plist") Then - ' Note: iOS gets here too - t = OSType.OSX - Else - t = OSType.Unknown - End If - End If + Dim windir = Environment.GetEnvironmentVariable("windir") + Dim ostypeDirWine = "Z:\proc\sys\kernel\ostype" + Dim ostypeDirNative = "/proc/sys/kernel/ostype" + Dim systemVersionWine = "Z:\System\Library\CoreServices\SystemVersion.plist" + Dim systemVersionNative = "/System/Library/CoreServices/SystemVersion.plist" - Return t + If File.Exists(ostypeDirWine) Then ' Linux using wine + Dim osTypeString As String = File.ReadAllText(ostypeDirWine) + If osTypeString.StartsWith("Linux", StringComparison.OrdinalIgnoreCase) Then + ' Note: Android gets here too + t = OSType.Linux + Else + t = OSType.Unknown + End If + ElseIf File.Exists(ostypeDirNative) Then ' Linux native + Dim osTypeString As String = File.ReadAllText(ostypeDirNative) + If osTypeString.StartsWith("Linux", StringComparison.OrdinalIgnoreCase) Then + ' Note: Android gets here too + t = OSType.Linux + Else + t = OSType.Unknown + End If + ElseIf File.Exists(systemVersionWine) Then ' OSX using wine + ' Note: iOS gets here too + t = OSType.OSX + ElseIf File.Exists(systemVersionNative) Then ' OSX native + ' Note: iOS gets here too + t = OSType.OSX + ElseIf Not String.IsNullOrEmpty(windir) AndAlso Directory.Exists(windir) AndAlso Path.DirectorySeparatorChar = "\"c Then ' Windows + t = OSType.Windows + Else + t = OSType.Unknown + End If + + End If + + Return t End Get End Property