aboutsummaryrefslogtreecommitdiff
path: root/windowsRuntimeInstaller
diff options
context:
space:
mode:
authorDavid Pinedo <david@lunarg.com>2016-06-03 12:08:12 -0600
committerDavid Pinedo <david@lunarg.com>2016-06-03 12:08:12 -0600
commit0a714b8073c14dbf01dc6fd4a3929c40a4ae63a0 (patch)
tree295fa98225c43046c849bc5151e8d97dd369568b /windowsRuntimeInstaller
parentab78fa872290a295b42a092ab931ad7a41b0fdfa (diff)
downloadusermoji-0a714b8073c14dbf01dc6fd4a3929c40a4ae63a0.tar.xz
winrtinstaller: fixes and diagnostics for powershell config script failure
Diffstat (limited to 'windowsRuntimeInstaller')
-rw-r--r--windowsRuntimeInstaller/ConfigLayersAndVulkanDLL.ps1202
-rw-r--r--windowsRuntimeInstaller/Diagnostic1.ps1183
-rw-r--r--windowsRuntimeInstaller/InstallerRT.nsi89
3 files changed, 350 insertions, 124 deletions
diff --git a/windowsRuntimeInstaller/ConfigLayersAndVulkanDLL.ps1 b/windowsRuntimeInstaller/ConfigLayersAndVulkanDLL.ps1
index 3b782409..891984b3 100644
--- a/windowsRuntimeInstaller/ConfigLayersAndVulkanDLL.ps1
+++ b/windowsRuntimeInstaller/ConfigLayersAndVulkanDLL.ps1
@@ -39,21 +39,18 @@ Param(
[int]$ossize
)
-# Clear any pre-existing errors
+# Clear any pre-existing errors and set default return value
$Error.Clear();
+$script:scriptReturnValue=0
# Start logging
-$log=$Env:Temp+"\VulkanRT"
-New-Item -ItemType Directory -Force -Path $log | Out-Null
-$logascii=$log+"\ConfigLayersAndVulkanDLL.log"
-
-# Temp to be used for debugging failure to install issue
-#$logascii2=$Env:Temp+"\ConfigLayersAndVulkanDLL_debug.log"
-
-$log=$log+"\ConfigLayersAndVulkanDLL16.log"
-
+$logascii=$Env:Temp+"\ConfigLayersAndVulkanDLL.log"
+$log=$Env:Temp+"\ConfigLayersAndVulkanDLL16.log"
start-transcript -path $log
+# Ignore errors related to log file
+$Error.Clear();
+
Write-Host "ConfigLayersAndVulkanDLL.ps1 called with inputs of : $majorabi $ossize"
$startTime=Get-Date
Write-Host "Start time : $startTime"
@@ -72,6 +69,16 @@ function notNumeric ($x) {
}
}
+function Get-CurrentLineNumber {
+ $MyInvocation.ScriptLineNumber
+}
+
+function setScriptReturnValue($rvalue) {
+ if ($script:scriptReturnValue -eq 0) {
+ $script:scriptReturnValue = $rvalue
+ }
+}
+
# The name of the versioned vulkan dll file is one of the following:
#
# vulkan-<majorabi>-<major>-<minor>-<patch>-<buildno>-<prerelease>-<prebuildno>
@@ -209,7 +216,7 @@ function UpdateVulkanSysFolder([string]$dir, [int]$writeSdkName)
if (notNumeric($major)) {
Write-Warning "Ignoring $_ - bad major"
- # Not a real d, so just clear it for now.
+ # Not a real error, so just clear it for now.
$Error.Clear();
# NOTE: Inside a ForEach-Object block, the 'return' call behaves like a 'continue' for a For loop
@@ -266,6 +273,7 @@ function UpdateVulkanSysFolder([string]$dir, [int]$writeSdkName)
$script:VulkanDllList+="$major=$minor=$patch=$buildno=$prebuildno=$prerelease= $_ @$majorOrig@$minorOrig@$patchOrig@$buildnoOrig@$prereleaseOrig@$prebuildnoOrig@"
if (!$?) {
Write-Error "Error: UpdateVulkanSysFolder adding DLL $_ to list"
+ setScriptReturnValue(Get-CurrentLineNumber)
}
}
@@ -278,6 +286,7 @@ function UpdateVulkanSysFolder([string]$dir, [int]$writeSdkName)
[array]::sort($script:VulkanDllList)
if (!$?) {
Write-Error "Error: UpdateVulkanSysFolder sorting DLL list"
+ setScriptReturnValue(Get-CurrentLineNumber)
}
# Put the name of the most recent vulkan-*.dll in $mrVulkanDLL.
@@ -288,6 +297,7 @@ function UpdateVulkanSysFolder([string]$dir, [int]$writeSdkName)
Copy-Item $mrVulkanDll $vulkandll -force
if (!$?) {
Write-Error "Error: UpdateVulkanSysFolder encountered error during copy $mrVulkanDll $vulkandll"
+ setScriptReturnValue(Get-CurrentLineNumber)
}
# Copy the most recent version of vulkaninfo-<abimajor>-*.exe to vulkaninfo.exe.
@@ -298,6 +308,7 @@ function UpdateVulkanSysFolder([string]$dir, [int]$writeSdkName)
Copy-Item $mrVulkaninfo vulkaninfo.exe -force
if (!$?) {
Write-Error "Error: UpdateVulkanSysFolder encountered error during copy $mrVulkaninfo vulkaninfo.exe"
+ setScriptReturnValue(Get-CurrentLineNumber)
}
# Create the name used in the registry for the SDK associated with $mrVulkanDll.
@@ -319,6 +330,7 @@ function UpdateVulkanSysFolder([string]$dir, [int]$writeSdkName)
Write-Host "sdkname = $sdktempname"
if (!$?) {
Write-Error "Error: UpdateVulkanSysFolder encountered error generating SDK name"
+ setScriptReturnValue(Get-CurrentLineNumber)
}
}
@@ -326,6 +338,7 @@ function UpdateVulkanSysFolder([string]$dir, [int]$writeSdkName)
Pop-Location
if (!$?) {
Write-Error "Error: UpdateVulkanSysFolder popping location"
+ setScriptReturnValue(Get-CurrentLineNumber)
}
# Only update the overall script-scope SDK name if we're told to
@@ -343,6 +356,7 @@ if ($ossize -eq 64) {
UpdateVulkanSysFolder $winfolder\SYSWOW64 0
if (!$?) {
Write-Error "Error: Calling UpdateVulkanSysFolder for 64-bit OS"
+ setScriptReturnValue(Get-CurrentLineNumber)
}
}
@@ -351,6 +365,7 @@ Write-Host "Calling UpdateVulkanSysFolder $winfolder\SYSTEM32 1"
UpdateVulkanSysFolder $winfolder\SYSTEM32 1
if (!$?) {
Write-Error "Error: Calling UpdateVulkanSysFolder for all OS"
+ setScriptReturnValue(Get-CurrentLineNumber)
}
# Create an array of vulkan sdk install dirs
@@ -358,34 +373,42 @@ if (!$?) {
Write-Host "Creating array of of Vulkan SDK Install dirs"
$mrVulkanDllInstallDir=""
$VulkanSdkDirs=@()
-Get-ChildItem -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall |
- ForEach-Object {
- $regkey=$_ -replace ".*\\",""
- if ($_ -match "\\VulkanSDK") {
- # Get the install path from UninstallString
- $tmp=Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$regkey -Name UninstallString
- if (!$?) {
- Write-Error "Error: Get-ItemProperty failed for Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$regkey"
- }
- $tmp=$tmp -replace "\\Uninstall.exe.*",""
- $tmp=$tmp -replace ".*=.",""
- Write-Host "Adding $tmp to VulkanSDKDirs"
- $VulkanSdkDirs+=$tmp
- if ($regkey -eq $script:sdkname) {
- # Save away the sdk install dir for the the most recent vulkandll
- Write-Host "Setting mrVulkanDllInstallDir to $tmp"
- $mrVulkanDllInstallDir=$tmp
- }
- }
+$installSDKRegs = @(Get-ChildItem -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall)
+if ($installSDKRegs -ne $null) {
+ ForEach ($curSDKReg in $installSDKRegs) {
+ if ($curSDKReg -ne $null) {
+ $regkey=$curSDKReg -replace ".*\\",""
+ if ($regkey -match "VulkanSDK") {
+ # Get the install path from UninstallString
+ $tmp=Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$regkey -Name UninstallString
+ if (!$? -or $tmp -eq $null) {
+ Write-Warning "Error: Get-ItemProperty failed for Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$regkey"
+ $Error.Clear();
+ continue;
+ }
+ $tmp=$tmp -replace "\\Uninstall.exe.*",""
+ $tmp=$tmp -replace ".*=.",""
+ Write-Host "Adding $tmp to VulkanSDKDirs"
+ $VulkanSdkDirs+=$tmp
+ if ($regkey -eq $script:sdkname) {
+ # Save away the sdk install dir for the the most recent vulkandll
+ Write-Host "Setting mrVulkanDllInstallDir to $tmp"
+ $mrVulkanDllInstallDir=$tmp
+ }
+ }
+ }
}
+}
if (!$?) {
Write-Error "Error: Failed creating array of of Vulkan SDK Install dirs"
+ setScriptReturnValue(Get-CurrentLineNumber)
}
# Search list of sdk install dirs for an sdk compatible with $script:sdkname.
# We go backwards through VulkanDllList to generate SDK names, because we want the most recent SDK.
-if ($mrVulkanDllInstallDir -eq "") {
+
+if ($mrVulkanDllInstallDir -eq "" -and $script:VulkanDllList.Length -gt 0) {
Write-Host "Searching VulkanDllList"
ForEach ($idx in ($script:VulkanDllList.Length-1)..0) {
$tmp=$script:VulkanDllList[$idx]
@@ -404,8 +427,8 @@ if ($mrVulkanDllInstallDir -eq "") {
}
Write-Host "Comparing $regEntry"
$rval=Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$regEntry -ErrorAction SilentlyContinue
- if (!$?) {
- Write-Warning "Ignoring $regEntry because Get-ItemProperty failed to find corresponding SDK registry entry"
+ if (!$? -or $rval -eq $null) {
+ Write-Warning "Ignoring $regEntry - corresponding SDK registry entry does not exist"
$Error.Clear();
continue
}
@@ -426,7 +449,8 @@ if ($mrVulkanDllInstallDir -eq "") {
}
}
if (!$?) {
- Write-Error "Error: Failed searching VulkanDLLList"
+ Write-Warning "Failed searching VulkanDLLList"
+ $Error.Clear();
}
}
@@ -446,45 +470,53 @@ $VulkanSdkDirs+="$windrive\VulkanSDK\0.9.3"
# layers were installed that are not from an SDK, we don't mess with them.
Write-Host "Removing old layer registry values from HKLM\SOFTWARE\Khronos\Vulkan\ExplicitLayers"
-Get-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\Vulkan\ExplicitLayers | Select-Object -ExpandProperty Property |
- ForEach-Object {
- $regval=$_
- ForEach ($sdkdir in $VulkanSdkDirs) {
- if ($regval -like "$sdkdir\*.json") {
- Remove-ItemProperty -ErrorAction SilentlyContinue -Path HKLM:\SOFTWARE\Khronos\Vulkan\ExplicitLayers -name $regval
- if (!$?) {
- Write-Error "Error: Remove-ItemProperty failed for -Path HKLM:\SOFTWARE\Khronos\Vulkan\ExplicitLayers -name $regval"
- } else {
- Write-Host "Removed registry value $regval"
+$regkeys = @(Get-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\Vulkan\ExplicitLayers | Select-Object -ExpandProperty Property)
+if ($regkeys -ne $null) {
+ ForEach ($regval in $regkeys) {
+ if ($regval -ne $null) {
+ ForEach ($sdkdir in $VulkanSdkDirs) {
+ if ($regval -like "$sdkdir\*.json") {
+ Remove-ItemProperty -ErrorAction SilentlyContinue -Path HKLM:\SOFTWARE\Khronos\Vulkan\ExplicitLayers -name $regval
+ if (!$?) {
+ Write-Error "Error: Remove-ItemProperty failed for -Path HKLM:\SOFTWARE\Khronos\Vulkan\ExplicitLayers -name $regval"
+ } else {
+ Write-Host "Removed registry value $regval"
+ }
}
- }
- }
- }
+ }
+ }
+ }
+}
if (!$?) {
Write-Error "Error: Failed Removing old layer registry values from HKLM\SOFTWARE\Khronos\Vulkan\ExplicitLayers"
+ setScriptReturnValue(Get-CurrentLineNumber)
}
# Remove 32-bit layer registry value if we're targeting a 64-bit OS
if ($ossize -eq 64) {
- Get-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Khronos\Vulkan\ExplicitLayers | Select-Object -ExpandProperty Property |
- ForEach-Object {
- $regval=$_
- ForEach ($sdkdir in $VulkanSdkDirs) {
- if ($regval -like "$sdkdir\*.json") {
- Remove-ItemProperty -ErrorAction SilentlyContinue -Path HKLM:\SOFTWARE\WOW6432Node\Khronos\Vulkan\ExplicitLayers -name $regval
- if (!$?) {
- Write-Error "Error: Remove-ItemProperty failed for -Path HKLM:\SOFTWARE\WOW6432Node\Khronos\Vulkan\ExplicitLayers -name $regval"
- } else {
- Write-Host "Removed WOW6432Node registry value $regval"
+ $regkeys = @(Get-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Khronos\Vulkan\ExplicitLayers | Select-Object -ExpandProperty Property)
+ if ($regkeys -ne $null) {
+ ForEach ($regval in $regkeys) {
+ if ($regval -ne $null) {
+ ForEach ($sdkdir in $VulkanSdkDirs) {
+ if ($regval -like "$sdkdir\*.json") {
+ Remove-ItemProperty -ErrorAction SilentlyContinue -Path HKLM:\SOFTWARE\WOW6432Node\Khronos\Vulkan\ExplicitLayers -name $regval
+ if (!$?) {
+ Write-Error "Error: Remove-ItemProperty failed for -Path HKLM:\SOFTWARE\WOW6432Node\Khronos\Vulkan\ExplicitLayers -name $regval"
+ } else {
+ Write-Host "Removed WOW6432Node registry value $regval"
+ }
}
}
- }
+ }
}
+ }
- if (!$?) {
- Write-Error "Error: Failed Removing old layer registry values from HKLM\SOFTWARE\WOW6432Node\Khronos\Vulkan\ExplicitLayers"
- }
+ if (!$?) {
+ Write-Error "Error: Failed Removing old layer registry values from HKLM\SOFTWARE\WOW6432Node\Khronos\Vulkan\ExplicitLayers"
+ setScriptReturnValue(Get-CurrentLineNumber)
+ }
}
@@ -499,6 +531,7 @@ if ($mrVulkanDllInstallDir -ne "") {
New-Item -Force -ErrorAction SilentlyContinue -Path HKLM:\SOFTWARE\Khronos\Vulkan\ExplicitLayers | out-null
if (!$?) {
Write-Error "Error: Failed creating HKLM\SOFTWARE\Khronos\Vulkan\ExplicitLayers"
+ setScriptReturnValue(Get-CurrentLineNumber)
}
}
if ($ossize -eq 64) {
@@ -507,6 +540,7 @@ if ($mrVulkanDllInstallDir -ne "") {
New-Item -Force -ErrorAction SilentlyContinue -Path HKLM:\SOFTWARE\WOW6432Node\Khronos\Vulkan\ExplicitLayers | out-null
if (!$?) {
Write-Error "Error: Failed creating HKLM\SOFTWARE\WOW6432Node\Khronos\Vulkan\ExplicitLayers"
+ setScriptReturnValue(Get-CurrentLineNumber)
}
}
}
@@ -520,10 +554,12 @@ if ($mrVulkanDllInstallDir -ne "") {
New-ItemProperty -Path HKLM:\SOFTWARE\Khronos\Vulkan\ExplicitLayers -Name $mrVulkanDllInstallDir\Bin\$_ -PropertyType DWord -Value 0 | out-null
if (!$?) {
Write-Error "Error: Failed creating $mrVulkanDllInstallDir\Bin\$_"
+ setScriptReturnValue(Get-CurrentLineNumber)
}
}
if (!$?) {
Write-Error "Error: Failed Get-ChildItem $mrVulkanDllInstallDir\Bin | ForEach-Object "
+ setScriptReturnValue(Get-CurrentLineNumber)
}
# Create registry values for the WOW6432Node registry location for 32-bit items on a 64-bit OS
@@ -533,10 +569,12 @@ if ($mrVulkanDllInstallDir -ne "") {
New-ItemProperty -Path HKLM:\SOFTWARE\WOW6432Node\Khronos\Vulkan\ExplicitLayers -Name $mrVulkanDllInstallDir\Bin32\$_ -PropertyType DWord -Value 0 | out-null
if (!$?) {
Write-Error "Error: Failed creating $mrVulkanDllInstallDir\Bin32\$_"
+ setScriptReturnValue(Get-CurrentLineNumber)
}
}
if (!$?) {
Write-Error "Error: Failed Get-ChildItem $mrVulkanDllInstallDir\Bin32 | ForEach-Object "
+ setScriptReturnValue(Get-CurrentLineNumber)
}
} else {
# Create registry values in normal registry location for 32-bit items on a 32-bit OS
@@ -546,14 +584,19 @@ if ($mrVulkanDllInstallDir -ne "") {
New-ItemProperty -Path HKLM:\SOFTWARE\Khronos\Vulkan\ExplicitLayers -Name $mrVulkanDllInstallDir\Bin32\$_ -PropertyType DWord -Value 0 | out-null
if (!$?) {
Write-Error "Error: Failed creating $mrVulkanDllInstallDir\Bin\$_"
+ setScriptReturnValue(Get-CurrentLineNumber)
}
}
if (!$?) {
Write-Error "Error: Failed Get-ChildItem $mrVulkanDllInstallDir\Bin32 | ForEach-Object "
+ setScriptReturnValue(Get-CurrentLineNumber)
}
}
}
+# Debug - for testing handling of script failure in installer
+#setScriptReturnValue(Get-CurrentLineNumber)
+
# Final log output
Write-Host "ConfigLayersAndVulkanDLL.ps1 completed"
$endTime=Get-Date
@@ -564,19 +607,16 @@ Stop-Transcript
# Convert logfile to ascii
Get-Content $log | Out-File -encoding ascii -filepath $logascii
-# Temp to be used for debugging failure to install issue (as VulkanRT folder might get removed)
-#Get-Content $log | Out-File -encoding ascii -filepath $logascii2
-
-
# Remove the unicode log as we no longer need it.
Remove-Item $log
+exit $script:scriptReturnValue
# SIG # Begin signature block
# MIIccAYJKoZIhvcNAQcCoIIcYTCCHF0CAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
-# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUFNNSYRu98top6sj+5PNNXfdh
-# aN+gghefMIIFKDCCBBCgAwIBAgIQA7RxzU1//sKaOyCyyw9fVDANBgkqhkiG9w0B
+# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUWzO9uMOZloqpSF0mSPfjnVcK
+# X2ygghefMIIFKDCCBBCgAwIBAgIQA7RxzU1//sKaOyCyyw9fVDANBgkqhkiG9w0B
# AQsFADByMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYD
# VQQLExB3d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFz
# c3VyZWQgSUQgQ29kZSBTaWduaW5nIENBMB4XDTE2MDQwODAwMDAwMFoXDTE3MDgx
@@ -707,22 +747,22 @@ Remove-Item $log
# aWdpQ2VydCBTSEEyIEFzc3VyZWQgSUQgQ29kZSBTaWduaW5nIENBAhADtHHNTX/+
# wpo7ILLLD19UMAkGBSsOAwIaBQCgeDAYBgorBgEEAYI3AgEMMQowCKACgAChAoAA
# MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgor
-# BgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBS1dRcwLYpAdOGb79bA8lUPXs2weTAN
-# BgkqhkiG9w0BAQEFAASCAQDaFv54IUAa3PRmDo4gr25cTzNNVRBVQn29+lBWRhL6
-# Z4xafc4dV2NuhsySyM/7CviTF/T32E9GfMUPjsje1L02FuP+xydJ/KHFba2Qe5Tm
-# rqQIQTDsdYBx4imOecLbzF8mcfMjbBTLz3YTWDShTIhTR+WqVMbzvASfJ/jUj6bP
-# wxiuHho0Gus669fK9xNrUr0Yo9Jaw82KLCsJFE/NgEV3eoNWi3ufZF4Owq+HWqLj
-# ZfzKTOb+A7oLHEfr2bX3lrwm5O/dcb4gb6dUP2m1zY6B9hPPO5lwtCVFdOShU+a4
-# Xq+MQ6RvjjXx/wRyBgF9e24k56EXce5hS9KSM/r4HJcFoYICDzCCAgsGCSqGSIb3
+# BgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBTl9vUhNixlC4qK2N6ftsmXNxTB5DAN
+# BgkqhkiG9w0BAQEFAASCAQBmoK4vUOuN1W2tbF6prfT9lK/x424kuyT2GmMuBg1K
+# 2QLmoPVPFokJllqckm2snV2PrVZ2jQf1HqZfoQ9k9tJQ9Iysobsdi+Xk35m9Jhnb
+# qoDBI7HI8NVzgczSgcOGMtV1SkSHMxnobVPnqNVyD1nK6OCSIFe8lKVggiNHokxv
+# bpPOWW1oPO9eayYSoysEqwygODgV5Jr0wSVLDuoAKlnbYH4Hjvtf0JWJncm/l6ZM
+# yWIXaBUWNV6Dl2ZTeCXIlBrNxC3nfLn6uBkbox0xvcYk6tvksy7fQsSFFWYiqR26
+# 9sW4wJmqvlKO1PKNwdiGnY2fvJzffot8NPEKxbb7l2ySoYICDzCCAgsGCSqGSIb3
# DQEJBjGCAfwwggH4AgEBMHYwYjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lD
# ZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEhMB8GA1UEAxMYRGln
# aUNlcnQgQXNzdXJlZCBJRCBDQS0xAhADAZoCOv9YsWvW1ermF/BmMAkGBSsOAwIa
# BQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0x
-# NjA2MDExNjMwNTFaMCMGCSqGSIb3DQEJBDEWBBQTfVtazojkMGVHBXKiXef3VObs
-# mTANBgkqhkiG9w0BAQEFAASCAQCXNZHaksqQrHFmc96ks9qPT2mR35sHOOIOVCZn
-# kFPyFEjzoZmMQAhcQqHdEvgEoIr5DZ6yuLTvtu8bEN3gS2iSXD542PatUBy/DsCc
-# uFn4QFVewop/g6hPgy3VMwFWhd1t3YJ1HZtppE9N68Eth8bFODeMmc6Ogrv7oCts
-# YwjBdccKXgrdAN/2cBIZCa8+FEj+sdO0ZKToVlRivETPnI8Y/XFrrgF3+cOkDg4e
-# ZU11g/Ww9RYLdZiqIRe06pChRmHNrY5AZA9W4UgKyCQESWd8e0lLR/6uGCZulWL6
-# U3LKVUyUUP/eAHLO9iGsm3pA9L27gcnyl41UPVIqQ7VhSvrO
+# NjA2MDMxODA1NTFaMCMGCSqGSIb3DQEJBDEWBBQ8siiyF+3YjaCU9cWVOMiV0i6H
+# WjANBgkqhkiG9w0BAQEFAASCAQCcC1//Fo3cFfFAFDvhOtpcuzFn6vsIm6eGjcAD
+# l/sUEeAS69BbPrapFDxwGjMbeFWSQK0KhzbxEs5DN/5eRrj1xX9SnhunszqPCzJ7
+# 66XJvuncyzKxQvOGGMLPbGkVHsximVT0IX+pPEZS25gTLBk8e30R6w9ChgykAxbz
+# Gyi4gg8HNvk20aTydXelUA8hRYdb2dn/RLTamZjxAdmhRUyPuClgh4ZvOohILwAn
+# Egh5cdu417ircbhFIJhujK/yr2C4uJEmb+JDST96luQBKQtlg7e3OnTBYddc3YoZ
+# S5dTEsAn3PlDvkcuxg79fgK+Wf/EMOGaEv3bJaeReFcRp1l8
# SIG # End signature block
diff --git a/windowsRuntimeInstaller/Diagnostic1.ps1 b/windowsRuntimeInstaller/Diagnostic1.ps1
new file mode 100644
index 00000000..90cf4db7
--- /dev/null
+++ b/windowsRuntimeInstaller/Diagnostic1.ps1
@@ -0,0 +1,183 @@
+# Copyright (c) 2015-2016 The Khronos Group Inc.
+# Copyright (c) 2015-2016 Valve Corporation
+# Copyright (c) 2015-2016 LunarG, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# Author: David Pinedo <david@LunarG.com>
+#
+
+
+# This Powershell script is run by the Vulkan Runtime Installer when it
+# encounters a problem when running the ConfigLayersAndVulkanDLL.ps1 script.
+# It is run to help diagnose whether the installer is capabable of running
+# Powershell scripts on the target system.
+
+
+$outfile=$Env:Temp+"\VulkanRTinstall\Diagnostic1.log"
+Write-Output "Diagnostic1" | Out-File -encoding ascii -filepath $outfile
+
+# SIG # Begin signature block
+# MIIccAYJKoZIhvcNAQcCoIIcYTCCHF0CAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
+# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
+# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUXZIII3ISc6TV7crVquI9urb2
+# FNqgghefMIIFKDCCBBCgAwIBAgIQA7RxzU1//sKaOyCyyw9fVDANBgkqhkiG9w0B
+# AQsFADByMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYD
+# VQQLExB3d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhEaWdpQ2VydCBTSEEyIEFz
+# c3VyZWQgSUQgQ29kZSBTaWduaW5nIENBMB4XDTE2MDQwODAwMDAwMFoXDTE3MDgx
+# MDEyMDAwMFowZTELMAkGA1UEBhMCVVMxETAPBgNVBAgTCENvbG9yYWRvMRUwEwYD
+# VQQHEwxGb3J0IENvbGxpbnMxFTATBgNVBAoTDEx1bmFyRywgSW5jLjEVMBMGA1UE
+# AxMMTHVuYXJHLCBJbmMuMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
+# 9g6eKks1n/j5xBMG0viQaVqoxYjNIt2sLiDhBa1JMfPVvQsclZwsJl2FHhnQEg1/
+# YLeNUqSukbgTNXTGjkvNoh/PbjjBzlxZbPwRKO8tbHMRKZJjcVkOWLLReUGHkxJ3
+# i4hD6zH0K9DKMubb0ohmaA28ALsl8d4igz78uGyqa3jNXbiyNLJhd467u2nCySdV
+# PFdXCMklePhW9VLm8VXSRDlBcx6tsaTpJr8lRZsq13xO7lwifQw1w2QRQzlnezUY
+# PVnXIz+54Nu0U6JKPaTlxgbk9SlcP4f77UJuieGQGCWh3uCcASYQgUMjisetLyFU
+# WZuPYpSbNWVksMaiIlSIuwIDAQABo4IBxTCCAcEwHwYDVR0jBBgwFoAUWsS5eyoK
+# o6XqcQPAYPkt9mV1DlgwHQYDVR0OBBYEFBP4/a3JE2uXZpm3r1yknye/WxPWMA4G
+# A1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzB3BgNVHR8EcDBuMDWg
+# M6Axhi9odHRwOi8vY3JsMy5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNzLWcx
+# LmNybDA1oDOgMYYvaHR0cDovL2NybDQuZGlnaWNlcnQuY29tL3NoYTItYXNzdXJl
+# ZC1jcy1nMS5jcmwwTAYDVR0gBEUwQzA3BglghkgBhv1sAwEwKjAoBggrBgEFBQcC
+# ARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAIBgZngQwBBAEwgYQGCCsG
+# AQUFBwEBBHgwdjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29t
+# ME4GCCsGAQUFBzAChkJodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNl
+# cnRTSEEyQXNzdXJlZElEQ29kZVNpZ25pbmdDQS5jcnQwDAYDVR0TAQH/BAIwADAN
+# BgkqhkiG9w0BAQsFAAOCAQEAscucuwAp0HisTjMWJii1ZX5H7+GAc048OJctdrTS
+# VlUc7kJgEirXQb1TQbSevvt1wE6s3xJWUapWnYvvgEPOq036WFA+NRVoWU5eIUkG
+# MsYGXH5ASHVBH+5/13wFLC1nXTxxrQ6B19uFFr5ZpsaP93EdD5pLqRxKrqLc9Stc
+# /faupcVkclisgXOEDsCzvgGhhaFCc/RSeXOOAZg2EsJNbaydg/xyvZqPDG17NboL
+# rgrzN5r6FoCk535HuGvcpjbr60nlwwzuxwqzXuMhGUTOs5O5cPpJQt6+iXBrlBgh
+# 4jPNL+ZvFfJLDq3CUdnSh3S13GJruyTWzF2AxTeRAnw2fzCCBTAwggQYoAMCAQIC
+# EAQJGBtf1btmdVNDtW+VUAgwDQYJKoZIhvcNAQELBQAwZTELMAkGA1UEBhMCVVMx
+# FTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNv
+# bTEkMCIGA1UEAxMbRGlnaUNlcnQgQXNzdXJlZCBJRCBSb290IENBMB4XDTEzMTAy
+# MjEyMDAwMFoXDTI4MTAyMjEyMDAwMFowcjELMAkGA1UEBhMCVVMxFTATBgNVBAoT
+# DERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTExMC8GA1UE
+# AxMoRGlnaUNlcnQgU0hBMiBBc3N1cmVkIElEIENvZGUgU2lnbmluZyBDQTCCASIw
+# DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPjTsxx/DhGvZ3cH0wsxSRnP0PtF
+# mbE620T1f+Wondsy13Hqdp0FLreP+pJDwKX5idQ3Gde2qvCchqXYJawOeSg6funR
+# Z9PG+yknx9N7I5TkkSOWkHeC+aGEI2YSVDNQdLEoJrskacLCUvIUZ4qJRdQtoaPp
+# iCwgla4cSocI3wz14k1gGL6qxLKucDFmM3E+rHCiq85/6XzLkqHlOzEcz+ryCuRX
+# u0q16XTmK/5sy350OTYNkO/ktU6kqepqCquE86xnTrXE94zRICUj6whkPlKWwfIP
+# EvTFjg/BougsUfdzvL2FsWKDc0GCB+Q4i2pzINAPZHM8np+mM6n9Gd8lk9ECAwEA
+# AaOCAc0wggHJMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgGGMBMG
+# A1UdJQQMMAoGCCsGAQUFBwMDMHkGCCsGAQUFBwEBBG0wazAkBggrBgEFBQcwAYYY
+# aHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEMGCCsGAQUFBzAChjdodHRwOi8vY2Fj
+# ZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3J0MIGB
+# BgNVHR8EejB4MDqgOKA2hjRodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vRGlnaUNl
+# cnRBc3N1cmVkSURSb290Q0EuY3JsMDqgOKA2hjRodHRwOi8vY3JsMy5kaWdpY2Vy
+# dC5jb20vRGlnaUNlcnRBc3N1cmVkSURSb290Q0EuY3JsME8GA1UdIARIMEYwOAYK
+# YIZIAYb9bAACBDAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5j
+# b20vQ1BTMAoGCGCGSAGG/WwDMB0GA1UdDgQWBBRaxLl7KgqjpepxA8Bg+S32ZXUO
+# WDAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkqhkiG9w0BAQsF
+# AAOCAQEAPuwNWiSz8yLRFcgsfCUpdqgdXRwtOhrE7zBh134LYP3DPQ/Er4v97yrf
+# IFU3sOH20ZJ1D1G0bqWOWuJeJIFOEKTuP3GOYw4TS63XX0R58zYUBor3nEZOXP+Q
+# sRsHDpEV+7qvtVHCjSSuJMbHJyqhKSgaOnEoAjwukaPAJRHinBRHoXpoaK+bp1wg
+# XNlxsQyPu6j4xRJon89Ay0BEpRPw5mQMJQhCMrI2iiQC/i9yfhzXSUWW6Fkd6fp0
+# ZGuy62ZD2rOwjNXpDd32ASDOmTFjPQgaGLOBm0/GkxAG/AeB+ova+YJJ92JuoVP6
+# EpQYhS6SkepobEQysmah5xikmmRR7zCCBmowggVSoAMCAQICEAMBmgI6/1ixa9bV
+# 6uYX8GYwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERp
+# Z2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEhMB8GA1UEAxMY
+# RGlnaUNlcnQgQXNzdXJlZCBJRCBDQS0xMB4XDTE0MTAyMjAwMDAwMFoXDTI0MTAy
+# MjAwMDAwMFowRzELMAkGA1UEBhMCVVMxETAPBgNVBAoTCERpZ2lDZXJ0MSUwIwYD
+# VQQDExxEaWdpQ2VydCBUaW1lc3RhbXAgUmVzcG9uZGVyMIIBIjANBgkqhkiG9w0B
+# AQEFAAOCAQ8AMIIBCgKCAQEAo2Rd/Hyz4II14OD2xirmSXU7zG7gU6mfH2RZ5nxr
+# f2uMnVX4kuOe1VpjWwJJUNmDzm9m7t3LhelfpfnUh3SIRDsZyeX1kZ/GFDmsJOqo
+# SyyRicxeKPRktlC39RKzc5YKZ6O+YZ+u8/0SeHUOplsU/UUjjoZEVX0YhgWMVYd5
+# SEb3yg6Np95OX+Koti1ZAmGIYXIYaLm4fO7m5zQvMXeBMB+7NgGN7yfj95rwTDFk
+# jePr+hmHqH7P7IwMNlt6wXq4eMfJBi5GEMiN6ARg27xzdPpO2P6qQPGyznBGg+na
+# QKFZOtkVCVeZVjCT88lhzNAIzGvsYkKRrALA76TwiRGPdwIDAQABo4IDNTCCAzEw
+# DgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYB
+# BQUHAwgwggG/BgNVHSAEggG2MIIBsjCCAaEGCWCGSAGG/WwHATCCAZIwKAYIKwYB
+# BQUHAgEWHGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwggFkBggrBgEFBQcC
+# AjCCAVYeggFSAEEAbgB5ACAAdQBzAGUAIABvAGYAIAB0AGgAaQBzACAAQwBlAHIA
+# dABpAGYAaQBjAGEAdABlACAAYwBvAG4AcwB0AGkAdAB1AHQAZQBzACAAYQBjAGMA
+# ZQBwAHQAYQBuAGMAZQAgAG8AZgAgAHQAaABlACAARABpAGcAaQBDAGUAcgB0ACAA
+# QwBQAC8AQwBQAFMAIABhAG4AZAAgAHQAaABlACAAUgBlAGwAeQBpAG4AZwAgAFAA
+# YQByAHQAeQAgAEEAZwByAGUAZQBtAGUAbgB0ACAAdwBoAGkAYwBoACAAbABpAG0A
+# aQB0ACAAbABpAGEAYgBpAGwAaQB0AHkAIABhAG4AZAAgAGEAcgBlACAAaQBuAGMA
+# bwByAHAAbwByAGEAdABlAGQAIABoAGUAcgBlAGkAbgAgAGIAeQAgAHIAZQBmAGUA
+# cgBlAG4AYwBlAC4wCwYJYIZIAYb9bAMVMB8GA1UdIwQYMBaAFBUAEisTmLKZB+0e
+# 36K+Vw0rZwLNMB0GA1UdDgQWBBRhWk0ktkkynUoqeRqDS/QeicHKfTB9BgNVHR8E
+# djB0MDigNqA0hjJodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRBc3N1
+# cmVkSURDQS0xLmNybDA4oDagNIYyaHR0cDovL2NybDQuZGlnaWNlcnQuY29tL0Rp
+# Z2lDZXJ0QXNzdXJlZElEQ0EtMS5jcmwwdwYIKwYBBQUHAQEEazBpMCQGCCsGAQUF
+# BzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQQYIKwYBBQUHMAKGNWh0dHA6
+# Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRENBLTEuY3J0
+# MA0GCSqGSIb3DQEBBQUAA4IBAQCdJX4bM02yJoFcm4bOIyAPgIfliP//sdRqLDHt
+# OhcZcRfNqRu8WhY5AJ3jbITkWkD73gYBjDf6m7GdJH7+IKRXrVu3mrBgJuppVyFd
+# NC8fcbCDlBkFazWQEKB7l8f2P+fiEUGmvWLZ8Cc9OB0obzpSCfDscGLTYkuw4HOm
+# ksDTjjHYL+NtFxMG7uQDthSr849Dp3GdId0UyhVdkkHa+Q+B0Zl0DSbEDn8btfWg
+# 8cZ3BigV6diT5VUW8LsKqxzbXEgnZsijiwoc5ZXarsQuWaBh3drzbaJh6YoLbewS
+# GL33VVRAA5Ira8JRwgpIr7DUbuD0FAo6G+OPPcqvao173NhEMIIGzTCCBbWgAwIB
+# AgIQBv35A5YDreoACus/J7u6GzANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJV
+# UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQu
+# Y29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYx
+# MTEwMDAwMDAwWhcNMjExMTEwMDAwMDAwWjBiMQswCQYDVQQGEwJVUzEVMBMGA1UE
+# ChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEwHwYD
+# VQQDExhEaWdpQ2VydCBBc3N1cmVkIElEIENBLTEwggEiMA0GCSqGSIb3DQEBAQUA
+# A4IBDwAwggEKAoIBAQDogi2Z+crCQpWlgHNAcNKeVlRcqcTSQQaPyTP8TUWRXIGf
+# 7Syc+BZZ3561JBXCmLm0d0ncicQK2q/LXmvtrbBxMevPOkAMRk2T7It6NggDqww0
+# /hhJgv7HxzFIgHweog+SDlDJxofrNj/YMMP/pvf7os1vcyP+rFYFkPAyIRaJxnCI
+# +QWXfaPHQ90C6Ds97bFBo+0/vtuVSMTuHrPyvAwrmdDGXRJCgeGDboJzPyZLFJCu
+# WWYKxI2+0s4Grq2Eb0iEm09AufFM8q+Y+/bOQF1c9qjxL6/siSLyaxhlscFzrdfx
+# 2M8eCnRcQrhofrfVdwonVnwPYqQ/MhRglf0HBKIJAgMBAAGjggN6MIIDdjAOBgNV
+# HQ8BAf8EBAMCAYYwOwYDVR0lBDQwMgYIKwYBBQUHAwEGCCsGAQUFBwMCBggrBgEF
+# BQcDAwYIKwYBBQUHAwQGCCsGAQUFBwMIMIIB0gYDVR0gBIIByTCCAcUwggG0Bgpg
+# hkgBhv1sAAEEMIIBpDA6BggrBgEFBQcCARYuaHR0cDovL3d3dy5kaWdpY2VydC5j
+# b20vc3NsLWNwcy1yZXBvc2l0b3J5Lmh0bTCCAWQGCCsGAQUFBwICMIIBVh6CAVIA
+# QQBuAHkAIAB1AHMAZQAgAG8AZgAgAHQAaABpAHMAIABDAGUAcgB0AGkAZgBpAGMA
+# YQB0AGUAIABjAG8AbgBzAHQAaQB0AHUAdABlAHMAIABhAGMAYwBlAHAAdABhAG4A
+# YwBlACAAbwBmACAAdABoAGUAIABEAGkAZwBpAEMAZQByAHQAIABDAFAALwBDAFAA
+# UwAgAGEAbgBkACAAdABoAGUAIABSAGUAbAB5AGkAbgBnACAAUABhAHIAdAB5ACAA
+# QQBnAHIAZQBlAG0AZQBuAHQAIAB3AGgAaQBjAGgAIABsAGkAbQBpAHQAIABsAGkA
+# YQBiAGkAbABpAHQAeQAgAGEAbgBkACAAYQByAGUAIABpAG4AYwBvAHIAcABvAHIA
+# YQB0AGUAZAAgAGgAZQByAGUAaQBuACAAYgB5ACAAcgBlAGYAZQByAGUAbgBjAGUA
+# LjALBglghkgBhv1sAxUwEgYDVR0TAQH/BAgwBgEB/wIBADB5BggrBgEFBQcBAQRt
+# MGswJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBDBggrBgEF
+# BQcwAoY3aHR0cDovL2NhY2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJl
+# ZElEUm9vdENBLmNydDCBgQYDVR0fBHoweDA6oDigNoY0aHR0cDovL2NybDMuZGln
+# aWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDA6oDigNoY0aHR0
+# cDovL2NybDQuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNy
+# bDAdBgNVHQ4EFgQUFQASKxOYspkH7R7for5XDStnAs0wHwYDVR0jBBgwFoAUReui
+# r/SSy4IxLVGLp6chnfNtyA8wDQYJKoZIhvcNAQEFBQADggEBAEZQPsm3KCSnOB22
+# WymvUs9S6TFHq1Zce9UNC0Gz7+x1H3Q48rJcYaKclcNQ5IK5I9G6OoZyrTh4rHVd
+# Fxc0ckeFlFbR67s2hHfMJKXzBBlVqefj56tizfuLLZDCwNK1lL1eT7EF0g49GqkU
+# W6aGMWKoqDPkmzmnxPXOHXh2lCVz5Cqrz5x2S+1fwksW5EtwTACJHvzFebxMElf+
+# X+EevAJdqP77BzhPDcZdkbkPZ0XN1oPt55INjbFpjE/7WeAjD9KqrgB87pxCDs+R
+# 1ye3Fu4Pw718CqDuLAhVhSK46xgaTfwqIa1JMYNHlXdx3LEbS0scEJx3FMGdTy9a
+# lQgpECYxggQ7MIIENwIBATCBhjByMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGln
+# aUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMTEwLwYDVQQDEyhE
+# aWdpQ2VydCBTSEEyIEFzc3VyZWQgSUQgQ29kZSBTaWduaW5nIENBAhADtHHNTX/+
+# wpo7ILLLD19UMAkGBSsOAwIaBQCgeDAYBgorBgEEAYI3AgEMMQowCKACgAChAoAA
+# MBkGCSqGSIb3DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgor
+# BgEEAYI3AgEVMCMGCSqGSIb3DQEJBDEWBBQYqTK+5RS95764dNPZ2T3z0jT+UDAN
+# BgkqhkiG9w0BAQEFAASCAQBxPm4AI4omYJmPEnd/OaN+l/cm2ub2D432zRg8Nr0m
+# 90TANmuNHLv9du3G4eKSqmKlAu9cVbhfqnioaiwC05bSO02gaH8q1bFBVANkD/e5
+# igGzGvYxP+Vqfa8xv8kiN0aNOOsznMrpCA8pcncPtNhiblyG0ipecLtCzTZoiDcA
+# +dHLd54E9NcYqm/SZuHHD5Fk2jqwIDAAFHokU2eNZWGxB9Gx+ey3G4DekQEqkUDR
+# LmEdq0OZeZULqeQQnGQ8grx0PmwxRTDBI7RkA/UGQTW4ibFfJfgdYjdQVWqguEtL
+# 5dPmqZyOdF8AapUwGnDpzqPmZy+WPYetrOHHwf2y1v1hoYICDzCCAgsGCSqGSIb3
+# DQEJBjGCAfwwggH4AgEBMHYwYjELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lD
+# ZXJ0IEluYzEZMBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTEhMB8GA1UEAxMYRGln
+# aUNlcnQgQXNzdXJlZCBJRCBDQS0xAhADAZoCOv9YsWvW1ermF/BmMAkGBSsOAwIa
+# BQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0x
+# NjA2MDMxODA2MzlaMCMGCSqGSIb3DQEJBDEWBBRxXYss0beJT3njEEWEltXbgfi9
+# 4zANBgkqhkiG9w0BAQEFAASCAQB1oq4vjrzr+8WHyhrhGzfMoTyYW6vGVBu6hVfB
+# hsC0Wm1n6oebLNzGNmpaatmYtsV4syIDSdlQfIb9SkHJ173uTIUCWPS1jY1lqUF8
+# sXEYqgh74X5aDfTArA7geKdSBplnKg3oo+/8fF8NFE3wY8nQ5JXAWs8AgeQYeT5H
+# KsOsWxCGlzN/3WvW3UfABUPzPMTUNdPpUh6WO/9L7HcN2uBg0CVemtpc3Da2IXyx
+# +rKQkzeoCHAaUlEhvhUSQTvY4Sq0Wn2NKEWfHJrP7pFQvQ3xissPLnJu+HWPepKM
+# 2W2kPrQBRL0MvZhtgrEx7Gmydf2GoU2UlMjll69spQ3yA2GG
+# SIG # End signature block
diff --git a/windowsRuntimeInstaller/InstallerRT.nsi b/windowsRuntimeInstaller/InstallerRT.nsi
index 680a14a3..077beaea 100644
--- a/windowsRuntimeInstaller/InstallerRT.nsi
+++ b/windowsRuntimeInstaller/InstallerRT.nsi
@@ -86,10 +86,6 @@ Var IDir
# Install count
Var IC
-# Error code from powershell script
-Var PsErr
-
-
#############################################
# StrRep - string replace
@@ -238,10 +234,6 @@ Section
# Turn on logging
LogSet on
- # Remove contents of temp dir
- SetOutPath "$TEMP\VulkanRT"
- RmDir /R "$TEMP\VulkanRT"
-
# If running on a 64-bit OS machine, disable registry re-direct since we're running as a 32-bit executable.
${If} ${RunningX64}
@@ -251,15 +243,16 @@ Section
${Endif}
# Create our temp directory, with minimal permissions
- SetOutPath "$TEMP\VulkanRT"
- AccessControl::DisableFileInheritance $TEMP\VulkanRT
- AccessControl::SetFileOwner $TEMP\VulkanRT "Administrators"
- AccessControl::ClearOnFile $TEMP\VulkanRT "Administrators" "FullAccess"
- AccessControl::SetOnFile $TEMP\VulkanRT "SYSTEM" "FullAccess"
- AccessControl::GrantOnFile $TEMP\VulkanRT "Everyone" "ListDirectory"
- AccessControl::GrantOnFile $TEMP\VulkanRT "Everyone" "GenericExecute"
- AccessControl::GrantOnFile $TEMP\VulkanRT "Everyone" "GenericRead"
- AccessControl::GrantOnFile $TEMP\VulkanRT "Everyone" "ReadAttributes"
+ RmDir /R "$TEMP\VulkanRTinstall"
+ SetOutPath "$TEMP\VulkanRTinstall"
+ AccessControl::DisableFileInheritance $TEMP\VulkanRTinstall
+ AccessControl::SetFileOwner $TEMP\VulkanRTinstall "Administrators"
+ AccessControl::ClearOnFile $TEMP\VulkanRTinstall "Administrators" "FullAccess"
+ AccessControl::SetOnFile $TEMP\VulkanRTinstall "SYSTEM" "FullAccess"
+ AccessControl::GrantOnFile $TEMP\VulkanRTinstall "Everyone" "ListDirectory"
+ AccessControl::GrantOnFile $TEMP\VulkanRTinstall "Everyone" "GenericExecute"
+ AccessControl::GrantOnFile $TEMP\VulkanRTinstall "Everyone" "GenericRead"
+ AccessControl::GrantOnFile $TEMP\VulkanRTinstall "Everyone" "ReadAttributes"
StrCpy $1 10
Call CheckForError
@@ -418,12 +411,18 @@ Section
# Run the ConfigLayersAndVulkanDLL.ps1 script to copy the most recent version of
# vulkan-<abimajor>-*.dll to vulkan-<abimajor>.dll, and to set up layer registry
# entries to use layers from the corresponding SDK
- nsExec::ExecToStack 'powershell -NoLogo -NonInteractive -WindowStyle Hidden -inputformat none -ExecutionPolicy RemoteSigned -File ConfigLayersAndVulkanDLL.ps1 ${VERSION_ABI_MAJOR} 64'
- pop $PsErr
- ${If} $PsErr != 0
+ nsExec::ExecToStack 'powershell -NoProfile -NoLogo -NonInteractive -WindowStyle Hidden -inputformat none -ExecutionPolicy RemoteSigned -Command .\ConfigLayersAndVulkanDLL.ps1 ${VERSION_ABI_MAJOR} 64 ; exit $$LASTEXITCODE'
+ pop $0
+ Rename "$TEMP\ConfigLayersAndVulkanDLL.log" "$TEMP\VulkanRTinstall\ConfigLayersAndVulkanDLL.log"
+ ${If} $0 != 0
+ # PS Script failed, see if we can run a simple ps command and a simple ps script
+ nsExec::ExecToStack 'powershell -NoProfile -NoLogo -NonInteractive -WindowStyle Hidden -inputformat none -Command Write-Output Diagnostic0 | Out-File -encoding ascii -filePath "$TEMP\VulkanRTinstall\Diagnostic0.log"'
+ File Diagnostic1.ps1
+ nsExec::ExecToStack 'powershell -NoProfile -NoLogo -NonInteractive -WindowStyle Hidden -inputformat none -ExecutionPolicy RemoteSigned -Command .\Diagnostic1.ps1'
+ Delete Diagnostic1.ps1
SetErrors
${EndIf}
- StrCpy $1 45
+ IntOp $1 10000 + $0
Call CheckForError
# Else, running on a 32-bit OS machine
@@ -446,12 +445,18 @@ Section
# Run the ConfigLayersAndVulkanDLL.ps1 script to copy the most recent version of
# vulkan-<abimajor>-*.dll to vulkan-<abimajor>.dll, and to set up layer registry
# entries to use layers from the corresponding SDK
- nsExec::ExecToStack 'powershell -NoLogo -NonInteractive -WindowStyle Hidden -inputformat none -ExecutionPolicy RemoteSigned -File ConfigLayersAndVulkanDLL.ps1 ${VERSION_ABI_MAJOR} 32'
- pop $PsErr
- ${If} $PsErr != 0
+ nsExec::ExecToStack 'powershell -NoProfile -NoLogo -NonInteractive -WindowStyle Hidden -inputformat none -ExecutionPolicy RemoteSigned -Command .\ConfigLayersAndVulkanDLL.ps1 ${VERSION_ABI_MAJOR} 32 ; exit $$LASTEXITCODE'
+ pop $0
+ Rename "$TEMP\ConfigLayersAndVulkanDLL.log" "$TEMP\VulkanRTinstall\ConfigLayersAndVulkanDLL.log"
+ ${If} $0 != 0
+ # PS Script failed, see if we can run a simple ps command and a simple ps script
+ nsExec::ExecToStack 'powershell -NoProfile -NoLogo -NonInteractive -WindowStyle Hidden -inputformat none -Command Write-Output Diagnostic0 | Out-File -encoding ascii -filePath "$TEMP\VulkanRTinstall\Diagnostic0.log"'
+ File Diagnostic1.ps1
+ nsExec::ExecToStack 'powershell -NoProfile -NoLogo -NonInteractive -WindowStyle Hidden -inputformat none -ExecutionPolicy RemoteSigned -Command .\Diagnostic1.ps1'
+ Delete Diagnostic1.ps1
SetErrors
${EndIf}
- StrCpy $1 60
+ IntOp $1 20000 + $0
Call CheckForError
${Endif}
@@ -462,7 +467,7 @@ Section
# Finish logging and move log file to TEMP dir
LogSet off
- Rename "$INSTDIR\install.log" "$TEMP\VulkanRT\Install.log"
+ Rename "$INSTDIR\install.log" "$TEMP\VulkanRTinstall\Install.log"
SectionEnd
@@ -470,12 +475,10 @@ SectionEnd
!ifdef UNINSTALLER
Section "uninstall"
- # Remove contents of temp dir
- SetOutPath "$TEMP\VulkanRT"
- RmDir /R "$TEMP\VulkanRT"
-
# Turn on logging
- StrCpy $INSTDIR $TEMP\VulkanRT
+ RmDir /R "$TEMP\VulkanRTuninstall"
+ SetOutPath "$TEMP\VulkanRTuninstall"
+ StrCpy $INSTDIR $TEMP\VulkanRTuninstall
LogSet on
# If running on a 64-bit OS machine, disable registry re-direct since we're running as a 32-bit executable.
@@ -553,7 +556,8 @@ Section "uninstall"
# Copy the most recent version of vulkan-<abimajor>-*.dll to vulkan-<abimajor>.dll
# Copy the most recent version of vulkaninfo-<abimajor>-*.exe to vulkaninfo.exe
# Set up layer registry entries to use layers from the corresponding SDK
- nsExec::ExecToStack 'powershell -NoLogo -NonInteractive -WindowStyle Hidden -inputformat none -ExecutionPolicy RemoteSigned -File "$IDir\ConfigLayersAndVulkanDLL.ps1" ${VERSION_ABI_MAJOR} 64'
+ nsExec::ExecToStack 'powershell -NoProfile -NoLogo -NonInteractive -WindowStyle Hidden -inputformat none -ExecutionPolicy RemoteSigned -File "$IDir\ConfigLayersAndVulkanDLL.ps1" ${VERSION_ABI_MAJOR} 64'
+ Rename "$TEMP\ConfigLayersAndVulkanDLL.log" "$TEMP\VulkanRTuninstall\ConfigLayersAndVulkanDLL.log"
# Else, running on a 32-bit OS machine
${Else}
@@ -570,7 +574,8 @@ Section "uninstall"
# Copy the most recent version of vulkan-<abimajor>-*.dll to vulkan-<abimajor>.dll
# Copy the most recent version of vulkaninfo-<abimajor>-*.exe to vulkaninfo.exe
# Set up layer registry entries to use layers from the corresponding SDK
- nsExec::ExecToStack 'powershell -NoLogo -NonInteractive -WindowStyle Hidden -inputformat none -ExecutionPolicy RemoteSigned -File "$IDir\ConfigLayersAndVulkanDLL.ps1" ${VERSION_ABI_MAJOR} 32'
+ nsExec::ExecToStack 'powershell -NoProfile -NoLogo -NonInteractive -WindowStyle Hidden -inputformat none -ExecutionPolicy RemoteSigned -File "$IDir\ConfigLayersAndVulkanDLL.ps1" ${VERSION_ABI_MAJOR} 32'
+ Rename "$TEMP\ConfigLayersAndVulkanDLL.log" "$TEMP\VulkanRTuninstall\ConfigLayersAndVulkanDLL.log"
${EndIf}
@@ -621,7 +626,7 @@ Section "uninstall"
StrCpy $1 80
Call un.CheckForError
- # Finish logging and move log file to TEMP dir
+ # Finish logging
LogSet off
Rename "$INSTDIR\install.log" "$INSTDIR\Uninstall.log"
@@ -667,19 +672,18 @@ Function CheckForError
# Finish logging and move log file to TEMP dir
LogSet off
- Rename "$INSTDIR\install.log" "$TEMP\VulkanRT\install.log"
+ Rename "$INSTDIR\install.log" "$TEMP\VulkanRTinstall\install.log"
# Copy the uninstaller to a temp folder of our own creation so we can completely
# delete the old contents.
- SetOutPath "$TEMP\VulkanRT"
- CopyFiles "$INSTDIR\Uninstall${PRODUCTNAME}.exe" "$TEMP\VulkanRT"
+ SetOutPath "$TEMP\VulkanRTinstall"
+ CopyFiles "$INSTDIR\Uninstall${PRODUCTNAME}.exe" "$TEMP\VulkanRTinstall"
- # No uninstall using the version in the temporary folder.
- ExecWait '"$TEMP\VulkanRT\Uninstall${PRODUCTNAME}.exe" /S _?=$INSTDIR'
+ # Do uninstall using the version in the temporary folder.
+ ExecWait '"$TEMP\VulkanRTinstall\Uninstall${PRODUCTNAME}.exe" /S _?=$INSTDIR'
# Delete the copy of the uninstaller we ran
- Delete /REBOOTOK "$TEMP\VulkanRT\Uninstall${PRODUCTNAME}.exe"
- RmDir /R /REBOOTOK "$TEMP\VulkanRT"
+ Delete /REBOOTOK "$TEMP\VulkanRTinstall\Uninstall${PRODUCTNAME}.exe"
# Set an error message to output
SetErrorLevel $1
@@ -700,8 +704,7 @@ Function un.CheckForError
# Finish logging and move log file to TEMP dir
LogSet off
- Delete "$TEMP\VulkanRT\Uninstall.log"
- Rename "$INSTDIR\install.log" "$TEMP\VulkanRT\Uninstall.log"
+ Delete "$TEMP\VulkanRTuninstall\Uninstall.log"
Quit
${EndIf}