@@ -7,17 +7,17 @@ param (
77
88# Prune external SlimeVR driver(s)
99$OpenVrConfigPath = " $env: LOCALAPPDATA \openvr\openvrpaths.vrpath"
10- $OpenVrConfig = Get-Content - Path $OpenVrConfigPath | ConvertFrom-Json
10+ $OpenVrConfig = Get-Content - Path $OpenVrConfigPath - Encoding utf8 | ConvertFrom-Json
1111Write-Host " Checking `" $OpenVrConfigPath `" for SlimeVR Drivers..."
1212$ExternalDriverPaths = @ ()
13- if ($OpenVrConfig.external_drivers.Length ) {
13+ if ($OpenVrConfig.external_drivers -and $OpenVrConfig .external_drivers .Length ) {
1414 foreach ($ExternalDriverPath in $OpenVrConfig.external_drivers ) {
1515 if (-not (Test-Path - Path " $ExternalDriverPath \driver.vrdrivermanifest" )) {
16- Write-Host " VR driver path `" $ExternalDriverPath `" has no manifest. Skipping... "
16+ Write-Host " VR driver path `" $ExternalDriverPath `" has no manifest."
1717 $ExternalDriverPaths += $ExternalDriverPath
1818 continue
1919 }
20- $DriverManifest = Get-Content - Path " $ExternalDriverPath \driver.vrdrivermanifest" | ConvertFrom-Json
20+ $DriverManifest = Get-Content - Path " $ExternalDriverPath \driver.vrdrivermanifest" - Encoding utf8 | ConvertFrom-Json
2121 if ($DriverManifest.name -eq " SlimeVR" ) {
2222 Write-Host " Found external SlimeVR Driver in `" $ExternalDriverPath `" . Removing..."
2323 continue
@@ -30,7 +30,30 @@ if ($ExternalDriverPaths.Length -eq 0) {
3030} else {
3131 $OpenVrConfig.external_drivers = $ExternalDriverPaths
3232}
33- ConvertTo-Json - InputObject $OpenVrConfig | Out-File - FilePath " $env: LOCALAPPDATA \openvr\openvrpaths.vrpath"
33+ [System.IO.File ]::WriteAllLines($OpenVrConfigPath , (ConvertTo-Json - InputObject $OpenVrConfig ))
34+
35+ # Remove trackers on uninstall
36+ if ($Uninstall -eq $true ) {
37+ $SteamVrSettingsPath = " $SteamPath \config\steamvr.vrsettings"
38+ Write-Host " Removing trackers from `" $SteamVrSettingsPath `" "
39+ $SteamVrSettings = (Get-Content - Path $SteamVrSettingsPath - Encoding utf8) -creplace " /devices/SlimeVR/" , " /devices/SlimeVR1/" | ConvertFrom-Json
40+ # Remove "driver_SlimeVR" entry if the driver was disabled manually
41+ $SteamVrSettings.PSObject.Properties.Remove (" driver_SlimeVR" )
42+ if ($SteamVrSettings.trackers ) {
43+ $SettingsTrackers = $SteamVrSettings.trackers.PSObject.Properties
44+ $Trackers = New-Object - TypeName PSCustomObject
45+ if ($SettingsTrackers.Value.Count ) {
46+ foreach ($Tracker in $SettingsTrackers ) {
47+ if ($Tracker.Name -match " ^/devices/slimevr(1)?/" ) {
48+ continue
49+ }
50+ Add-Member - InputObject $Trackers - MemberType NoteProperty - Name $Tracker.Name - Value $Tracker.Value
51+ }
52+ }
53+ $SteamVrSettings.trackers = $Trackers
54+ [System.IO.File ]::WriteAllLines($SteamVrSettingsPath , (ConvertTo-Json - InputObject $SteamVrSettings ))
55+ }
56+ }
3457
3558$SteamVrPaths = @ (" $SteamPath \steamapps\common\SteamVR" )
3659$res = Select-String - Path " $SteamPath \steamapps\libraryfolders.vdf" - Pattern ' "path"\s+"(.+?)"' - AllMatches
0 commit comments