winrt: Add more error logic to Powershell script
authorMark Young <marky@lunarg.com>
Mon, 30 May 2016 16:07:04 +0000 (10:07 -0600)
committerMark Young <marky@lunarg.com>
Mon, 30 May 2016 19:10:56 +0000 (13:10 -0600)
Add more error detection logic to the install config Powershell
script to help track down recent failures.

windowsRuntimeInstaller/ConfigLayersAndVulkanDLL.ps1

index 6291bea..2881932 100644 (file)
@@ -118,17 +118,23 @@ function UpdateVulkanSysFolder([string]$dir, [int]$writeSdkName)
            # If a file name contains "=", "@", or " ", or it contains less then 5 dashes or more than\r
            # 7 dashes, it wasn't installed by the Vulkan Run Time.\r
            # Note that we need to use return inside of ForEach-Object is to continue with iteration.\r
-           echo "Rejected $_ - bad format" >>$log\r
+           echo "ERROR: Rejected $_ - bad format" >>$log\r
            return\r
        }\r
+       if (!$?) {\r
+           echo "ERROR: UpdateVulkanSysFolder object $_ is bad format" >>$log;\r
+       }\r
 \r
        # If the corresponding vulkaninfo is not present, it wasn't installed by the Vulkan Run Time\r
        $vulkaninfo=$_ -replace ".dll",".exe"\r
        $vulkaninfo=$vulkaninfo -replace "vulkan","vulkaninfo"\r
        if (-not (Test-Path $vulkaninfo)) {\r
-           echo "Rejected $_ - vulkaninfo not present" >>$log\r
+           echo "ERROR: Rejected $_ - vulkaninfo not present" >>$log\r
            return\r
        }\r
+       if (!$?) {\r
+           echo "ERROR: UpdateVulkanSysFolder failed generating vulkaninfo exe name" >>$log;\r
+       }\r
 \r
        $major=$_.Split('-')[2]\r
        $majorOrig=$major\r
@@ -172,27 +178,30 @@ function UpdateVulkanSysFolder([string]$dir, [int]$writeSdkName)
           }\r
        }\r
        echo "Version $majorOrig $minorOrig $patchOrig $buildnoOrig $prereleaseOrig $prebuildnoOrig" >>$log\r
+       if (!$?) {\r
+           echo "ERROR: UpdateVulkanSysFolder during version parsing" >>$log;\r
+       }\r
 \r
        # Make sure fields that are supposed to be numbers are numbers\r
        if (notNumeric($major)) {\r
-           echo "Rejected $_ - bad major" >>$log\r
+           echo "ERROR: Rejected $_ - bad major" >>$log\r
            return\r
        }\r
        if (notNumeric($minor)) {\r
-           echo "Rejected $_ - bad minor" >>$log\r
+           echo "ERROR: Rejected $_ - bad minor" >>$log\r
            return\r
        }\r
        if (notNumeric($patch)) {\r
-           echo "Rejected $_ - bad patch" >>$log\r
+           echo "ERROR: Rejected $_ - bad patch" >>$log\r
            return\r
        }\r
        if (notNumeric($buildno)) {\r
-           echo "Rejected $_ - bad buildno" >>$log\r
+           echo "ERROR: Rejected $_ - bad buildno" >>$log\r
            return\r
        }\r
        if (notNumeric($prebuildno)) {\r
            if ($prebuildno -ne "z"*10) {\r
-               echo "Rejected $_ - bad prebuildno" >>$log\r
+               echo "ERROR: Rejected $_ - bad prebuildno" >>$log\r
                return\r
            }\r
        }\r
@@ -207,6 +216,10 @@ function UpdateVulkanSysFolder([string]$dir, [int]$writeSdkName)
        # Add a new element to the $VulkanDllList array\r
        echo "Adding $_ to Vulkan dll list " >>$log\r
        $script:VulkanDllList+="$major=$minor=$patch=$buildno=$prebuildno=$prerelease= $_ @$majorOrig@$minorOrig@$patchOrig@$buildnoOrig@$prereleaseOrig@$prebuildnoOrig@"\r
+\r
+       if (!$?) {\r
+           echo "ERROR: UpdateVulkanSysFolder adding DLL $_ to list" >>$log;\r
+       }\r
    }\r
 \r
     # If $VulkanDllList contains at least one element, there's at least one vulkan*.dll file.\r
@@ -217,19 +230,31 @@ function UpdateVulkanSysFolder([string]$dir, [int]$writeSdkName)
         # Sort the list. The most recent vulkan-*.dll will be in the last element of the list.\r
         [array]::sort($script:VulkanDllList)\r
 \r
+        if (!$?) {\r
+           echo "ERROR: UpdateVulkanSysFolder sorting DLL list" >>$log;\r
+        }\r
+\r
         # Put the name of the most recent vulkan-*.dll in $mrVulkanDLL.\r
         # The most recent vulkanDLL is the second word in the last element of the\r
         # sorted $VulkanDllList. Copy it to $vulkandll.\r
         $mrVulkanDll=$script:VulkanDllList[-1].Split(' ')[1]\r
         echo "copy $mrVulkanDll $vulkandll" >>$log\r
-        copy $mrVulkanDll $vulkandll\r
+        Copy-Item $mrVulkanDll $vulkandll -force\r
+\r
+        if (!$?) {\r
+           echo "ERROR: UpdateVulkanSysFolder encountered error during copy $mrVulkanDll $vulkandll" >>$log;\r
+        }\r
 \r
         # Copy the most recent version of vulkaninfo-<abimajor>-*.exe to vulkaninfo.exe.\r
         # We create the source file name for the copy from $mrVulkanDll.\r
         $mrVulkaninfo=$mrVulkanDll -replace ".dll",".exe"\r
         $mrVulkaninfo=$mrVulkaninfo -replace "vulkan","vulkaninfo"\r
         echo "copy $mrVulkaninfo vulkaninfo.exe" >>$log\r
-        copy $mrVulkaninfo vulkaninfo.exe\r
+        Copy-Item $mrVulkaninfo vulkaninfo.exe -force\r
+\r
+        if (!$?) {\r
+           echo "ERROR: UpdateVulkanSysFolder encountered error during copy $mrVulkaninfo vulkaninfo.exe" >>$log;\r
+        }\r
 \r
         # Create the name used in the registry for the SDK associated with $mrVulkanDll.\r
         $major=$script:VulkanDllList[-1].Split('@')[1]\r
@@ -247,11 +272,19 @@ function UpdateVulkanSysFolder([string]$dir, [int]$writeSdkName)
             $sdktempname=$sdktempname + "." + $prebuildno\r
         }\r
         echo "sdkname = $sdktempname" >>$log\r
+\r
+        if (!$?) {\r
+           echo "ERROR: UpdateVulkanSysFolder encountered error generating temp SDK name" >>$log;\r
+        }\r
     }\r
 \r
     # Return to our previous folder\r
     Pop-Location\r
 \r
+    if (!$?) {\r
+       echo "ERROR: UpdateVulkanSysFolder popping location" >>$log;\r
+    }\r
+\r
     # Only update the overall script-scope SDK name if we're told to\r
     if ($writeSdkName -ne 0) {\r
         $script:sdkname = $sdktempname\r
@@ -265,12 +298,20 @@ if ($ossize -eq 64) {
     # Update the SYSWOW64 Vulkan DLLS/EXEs\r
     echo "Calling UpdateVulkanSysFolder $winfolder\SYSWOW64 0" >>$log\r
     UpdateVulkanSysFolder $winfolder\SYSWOW64 0\r
+\r
+    if (!$?) {\r
+        echo "ERROR: Calling UpdateVulkanSysFolder for 64-bit OS" >>$log\r
+    }\r
 }\r
 \r
 # Update the SYSTEM32 Vulkan DLLS/EXEs\r
 echo "Calling UpdateVulkanSysFolder $winfolder\SYSTEM32 1" >>$log\r
 UpdateVulkanSysFolder $winfolder\SYSTEM32 1\r
 \r
+if (!$?) {\r
+    echo "ERROR: Calling UpdateVulkanSysFolder for all OS" >>$log\r
+}\r
+\r
 # Create an array of vulkan sdk install dirs\r
 \r
 echo "Creating array of of Vulkan SDK Install dirs" >>$log\r
@@ -294,6 +335,10 @@ Get-ChildItem -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr
        }\r
    }\r
 \r
+if (!$?) {\r
+    echo "ERROR: Failed creating array of of Vulkan SDK Install dirs" >>$log\r
+}\r
+\r
 \r
 # Search list of sdk install dirs for an sdk compatible with $script:sdkname.\r
 # We go backwards through VulkanDllList to generate SDK names, because we want the most recent SDK.\r
@@ -332,6 +377,10 @@ if ($mrVulkanDllInstallDir -eq "") {
             }\r
         }\r
     }\r
+\r
+    if (!$?) {\r
+        echo "ERROR: Failed searching VulkanDLLList" >>$log\r
+    }\r
 }\r
 \r
 # Add C:\Vulkan\SDK\0.9.3 to list of SDK install dirs.\r
@@ -360,6 +409,11 @@ Get-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\Vulkan\ExplicitLaye
           }\r
        }\r
    }\r
+\r
+if (!$?) {\r
+    echo "ERROR: Failed Removing old layer registry values from HKLM\SOFTWARE\Khronos\Vulkan\ExplicitLayers" >>$log\r
+}\r
+\r
 # Remove 32-bit layer registry value if we're targeting a 64-bit OS\r
 if ($ossize -eq 64) {\r
    Get-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Khronos\Vulkan\ExplicitLayers | Select-Object -ExpandProperty Property |\r
@@ -372,6 +426,10 @@ if ($ossize -eq 64) {
              }\r
           }\r
       }\r
+\r
+    if (!$?) {\r
+        echo "ERROR: Failed Removing old layer registry values from HKLM\SOFTWARE\WOW6432Node\Khronos\Vulkan\ExplicitLayers" >>$log\r
+    }\r
 }\r
 \r
 \r
@@ -384,12 +442,20 @@ if ($mrVulkanDllInstallDir -ne "") {
     if (-not (Test-Path -Path HKLM:\SOFTWARE\Khronos\Vulkan\ExplicitLayers)) {\r
         echo "Creating new registry key HKLM\SOFTWARE\Khronos\Vulkan\ExplicitLayers" >>$log\r
         New-Item -Force -ErrorAction SilentlyContinue -Path HKLM:\SOFTWARE\Khronos\Vulkan\ExplicitLayers | out-null\r
+\r
+        if (!$?) {\r
+            echo "ERROR: Failed creating HKLM\SOFTWARE\Khronos\Vulkan\ExplicitLayers" >>$log\r
+        }\r
     }\r
     if ($ossize -eq 64) {\r
         if (-not (Test-Path -Path HKLM:\SOFTWARE\WOW6432Node\Khronos\Vulkan\ExplicitLayers)) {\r
             echo "Creating new registry key HKLM\SOFTWARE\WOW6432Node\Khronos\Vulkan\ExplicitLayers" >>$log\r
             New-Item -Force -ErrorAction SilentlyContinue -Path HKLM:\SOFTWARE\WOW6432Node\Khronos\Vulkan\ExplicitLayers | out-null\r
-       }\r
+\r
+            if (!$?) {\r
+                echo "ERROR: Failed creating HKLM\SOFTWARE\WOW6432Node\Khronos\Vulkan\ExplicitLayers" >>$log\r
+            }\r
+        }\r
     }\r
 \r
 \r
@@ -400,6 +466,10 @@ if ($mrVulkanDllInstallDir -ne "") {
            ForEach-Object {\r
                echo "Creating registry value $mrVulkanDllInstallDir\Bin\$_" >>$log\r
                New-ItemProperty -Path HKLM:\SOFTWARE\Khronos\Vulkan\ExplicitLayers -Name $mrVulkanDllInstallDir\Bin\$_ -PropertyType DWord -Value 0 | out-null\r
+\r
+               if (!$?) {\r
+                   echo "ERROR: Failed creating $mrVulkanDllInstallDir\Bin\$_" >>$log\r
+               }\r
            }\r
 \r
         # Create registry values for the WOW6432Node registry location for 32-bit items on a 64-bit OS\r
@@ -407,6 +477,10 @@ if ($mrVulkanDllInstallDir -ne "") {
            ForEach-Object {\r
                echo "Creating WOW6432Node registry value $mrVulkanDllInstallDir\Bin32\$_" >>$log\r
                New-ItemProperty -Path HKLM:\SOFTWARE\WOW6432Node\Khronos\Vulkan\ExplicitLayers -Name $mrVulkanDllInstallDir\Bin32\$_ -PropertyType DWord -Value 0 | out-null\r
+\r
+               if (!$?) {\r
+                   echo "ERROR: Failed creating $mrVulkanDllInstallDir\Bin32\$_" >>$log\r
+               }\r
            }\r
            \r
     } else {\r
@@ -416,7 +490,11 @@ if ($mrVulkanDllInstallDir -ne "") {
            ForEach-Object {\r
                echo "Creating registry value $mrVulkanDllInstallDir\Bin\$_" >>$log\r
                New-ItemProperty -Path HKLM:\SOFTWARE\Khronos\Vulkan\ExplicitLayers -Name $mrVulkanDllInstallDir\Bin32\$_ -PropertyType DWord -Value 0 | out-null\r
-           }\r
+\r
+               if (!$?) {\r
+                   echo "ERROR: Failed creating $mrVulkanDllInstallDir\Bin\$_" >>$log\r
+               }\r
+            }\r
     \r
     }\r
 }\r