diff --git a/HoverLoader.ps1 b/HoverLoader.ps1
new file mode 100644
index 0000000..bf836ee
--- /dev/null
+++ b/HoverLoader.ps1
@@ -0,0 +1,52 @@
+cls
+ Write-Host -foregroundcolor red "
+ ,,,
+ ,,,,,,,,,,,,,,,,,
+ ,,,,,,,,,,,,,,,,,,,,,,,,,,
+ ,,,,,,,,,,,, ,,,,,,,,,,,,
+ ,,,,,,,,,,, ,,,,,,,,,,,,
+ .,,,,,,,,,,, .,,,,,,,,,,,
+ ,,,,,,,,,,,, ,,,,,, ,,,,,,,,,,,,
+ ,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,
+ ,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,, .,,,,,,,,,,,
+ ,,,,,,,, ,,,,,,,,,,,, ,,,,,,,,,,, ,,,,,,,,
+,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,, ,,,,,,
+ ,,,,,,,,,. ,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,, ,,,,,,,,,,
+ ,,,,,,,,,,,,,,,,,,,, ,,,,,,,,. ,,,,,,,,,,,,,,,,,,,,
+ (,,,,,,,,,,, , ,,,,,,,,,,,(
+ ,,(((((((,,,,,,,,,,,, ,,,,,,,,, .,,,,,,,,,,,((((((/,,
+ ,,,,,,,,* ,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,
+,,,,,, ,,,,,,,,,,, ,,,,,,,,,,,,,, ,,,,,
+ ,,,,,,,, ,,,,,,,,,,,. .,,,,,,,,,,, ,,,,,,,,
+ ,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,.
+ ,,,,,,,,,,,, .,,,,,,,,,,,,,. ,,,,,,,,,,,,
+ ,,,,,,,,,,, ,,,,, ,,,,,,,,,,,
+ ,,,,,,,,,,,. ,,,,,,,,,,,,
+ ,,,,,,,,,,,, ,,,,,,,,,,,,
+ ,,,,,,,,,,, ,,,,,,,,,,,
+ ,,,,,,,,,,,,,,,,,,,,,,,,,
+ ,,,,,,,,,,,,,,,,,
+ ,,,
+
+ ~Hovercast VCR Cloud Prep Tool~
+"
+
+Write-Output "Setting up Environment"
+$path = [Environment]::GetFolderPath("Desktop")
+if((Test-Path -Path $path\HovercastTemp ) -eq $true){
+ }
+Else {
+ New-Item -Path $path\HovercastTemp -ItemType directory| Out-Null
+ }
+
+Unblock-File -Path .\*
+copy-Item .\* -Destination $path\HovercastTemp\ -Force -Recurse | Out-Null
+#lil nap
+Start-Sleep -s 1
+#Unblocking all script files
+Write-Output "Unblocking files just in case"
+Get-ChildItem -Path $path\HovercastTemp -Recurse | Unblock-File
+Write-Output "Starting main script"
+start-process powershell.exe -verb RunAS -argument "-file $path\HovercastTemp\PostInstall\PostInstall.ps1"
+Write-Host "You can close this window now...progress will happen on the Powershell Window that just opened" -backgroundcolor red
+stop-process -Id $PID
\ No newline at end of file
diff --git a/Loader.ps1 b/Loader.ps1
deleted file mode 100644
index 11d7f15..0000000
--- a/Loader.ps1
+++ /dev/null
@@ -1,73 +0,0 @@
-cls
- Write-Host -foregroundcolor red "
- ((//////
- #######//////
- ##########(/////.
- #############(/////,
- #################/////*
- #######/############////.
- #######/// ##########////
- #######/// /#######///
- #######/// #######///
- #######/// #######///
- #######//// #######///
- ########////// #######///
- ###########////#######///
- ####################///
- ################///
- *#############///
- ##########///
- ######(*
-
-
-
- ~Parsec Self Hosted Cloud Setup Script~
-
- This script sets up your cloud computer
- with a bunch of settings and drivers
- to make your life easier.
-
- It's provided with no warranty,
- so use it at your own risk.
-
- Check out the Readme.txt for more
- information.
-
- This tool supports:
-
- OS:
- Server 2016
- Server 2019
-
- CLOUD SKU:
- AWS G3.4xLarge (Tesla M60)
- AWS G2.2xLarge (GRID K520)
- AWS g4dn.xlarge (Tesla T4)
- AWS g4ad.4xlarge (AMD Radeon Pro V520)
- Azure NV6 (Tesla M60)
- Paperspace P4000 (Quadro P4000)
- Paperspace P5000 (Quadro P5000)
- Google P100 VW (Tesla P100 Virtual Workstation)
- Google P4 VW (Tesla P4 Virtual Workstation)
- Google T4 VW (Tesla T4 Virtual Workstation)
-
-"
-Write-Output "Setting up Environment"
-$path = [Environment]::GetFolderPath("Desktop")
-if((Test-Path -Path $path\ParsecTemp ) -eq $true){
- }
-Else {
- New-Item -Path $path\ParsecTemp -ItemType directory| Out-Null
- }
-
-Unblock-File -Path .\*
-copy-Item .\* -Destination $path\ParsecTemp\ -Force -Recurse | Out-Null
-#lil nap
-Start-Sleep -s 1
-#Unblocking all script files
-Write-Output "Unblocking files just in case"
-Get-ChildItem -Path $path\ParsecTemp -Recurse | Unblock-File
-Write-Output "Starting main script"
-start-process powershell.exe -verb RunAS -argument "-file $path\parsectemp\PostInstall\PostInstall.ps1"
-Write-Host "You can close this window now...progress will happen on the Powershell Window that just opened" -backgroundcolor red
-stop-process -Id $PID
diff --git a/PostInstall/PostInstall.ps1 b/PostInstall/PostInstall.ps1
index 0c89281..e87147d 100644
--- a/PostInstall/PostInstall.ps1
+++ b/PostInstall/PostInstall.ps1
@@ -24,20 +24,11 @@ function setupEnvironment {
if((Test-Path -Path C:\Windows\system32\GroupPolicy\Machine\Scripts\Startup) -eq $true) {} Else {New-Item -Path C:\Windows\system32\GroupPolicy\Machine\Scripts\Startup -ItemType directory | Out-Null}
if((Test-Path -Path C:\Windows\system32\GroupPolicy\Machine\Scripts\Shutdown) -eq $true) {} Else {New-Item -Path C:\Windows\system32\GroupPolicy\Machine\Scripts\Shutdown -ItemType directory | Out-Null}
if((Test-Path -Path $env:ProgramData\ParsecLoader) -eq $true) {} Else {New-Item -Path $env:ProgramData\ParsecLoader -ItemType directory | Out-Null}
- if((Test-Path C:\Windows\system32\GroupPolicy\Machine\Scripts\psscripts.ini) -eq $true) {} Else {Move-Item -Path $path\ParsecTemp\PreInstall\psscripts.ini -Destination C:\Windows\system32\GroupPolicy\Machine\Scripts}
- if((Test-Path C:\Windows\system32\GroupPolicy\Machine\Scripts\Shutdown\NetworkRestore.ps1) -eq $true) {} Else {Move-Item -Path $path\ParsecTemp\PreInstall\NetworkRestore.ps1 -Destination C:\Windows\system32\GroupPolicy\Machine\Scripts\Shutdown}
- if((Test-Path $env:ProgramData\ParsecLoader\clear-proxy.ps1) -eq $true) {} Else {Move-Item -Path $path\ParsecTemp\PreInstall\clear-proxy.ps1 -Destination $env:ProgramData\ParsecLoader}
- if((Test-Path $env:ProgramData\ParsecLoader\CreateClearProxyScheduledTask.ps1) -eq $true) {} Else {Move-Item -Path $path\ParsecTemp\PreInstall\CreateClearProxyScheduledTask.ps1 -Destination $env:ProgramData\ParsecLoader}
- if((Test-Path $env:ProgramData\ParsecLoader\Automatic-Shutdown.ps1) -eq $true) {} Else {Move-Item -Path $path\ParsecTemp\PreInstall\Automatic-Shutdown.ps1 -Destination $env:ProgramData\ParsecLoader}
- if((Test-Path $env:ProgramData\ParsecLoader\CreateAutomaticShutdownScheduledTask.ps1) -eq $true) {} Else {Move-Item -Path $path\ParsecTemp\PreInstall\CreateAutomaticShutdownScheduledTask.ps1 -Destination $env:ProgramData\ParsecLoader}
- if((Test-Path $env:ProgramData\ParsecLoader\GPU-Update.ico) -eq $true) {} Else {Move-Item -Path $path\ParsecTemp\PreInstall\GPU-Update.ico -Destination $env:ProgramData\ParsecLoader}
- if((Test-Path $env:ProgramData\ParsecLoader\CreateOneHourWarningScheduledTask.ps1) -eq $true) {} Else {Move-Item -Path $path\ParsecTemp\PreInstall\CreateOneHourWarningScheduledTask.ps1 -Destination $env:ProgramData\ParsecLoader}
- if((Test-Path $env:ProgramData\ParsecLoader\WarningMessage.ps1) -eq $true) {} Else {Move-Item -Path $path\ParsecTemp\PreInstall\WarningMessage.ps1 -Destination $env:ProgramData\ParsecLoader}
- if((Test-Path $env:ProgramData\ParsecLoader\Parsec.png) -eq $true) {} Else {Move-Item -Path $path\ParsecTemp\PreInstall\Parsec.png -Destination $env:ProgramData\ParsecLoader}
- if((Test-Path $env:ProgramData\ParsecLoader\ShowDialog.ps1) -eq $true) {} Else {Move-Item -Path $path\ParsecTemp\PreInstall\ShowDialog.ps1 -Destination $env:ProgramData\ParsecLoader}
- if((Test-Path $env:ProgramData\ParsecLoader\OneHour.ps1) -eq $true) {} Else {Move-Item -Path $path\ParsecTemp\PreInstall\OneHour.ps1 -Destination $env:ProgramData\ParsecLoader}
- if((Test-Path $env:ProgramData\ParsecLoader\TeamMachineSetup.ps1) -eq $true) {} Else {Move-Item -Path $path\ParsecTemp\PreInstall\TeamMachineSetup.ps1 -Destination $env:ProgramData\ParsecLoader}
- if((Test-Path $env:ProgramData\ParsecLoader\parsecpublic.cer) -eq $true) {} Else {Move-Item -Path $path\ParsecTemp\PreInstall\parsecpublic.cer -Destination $env:ProgramData\ParsecLoader}
+ if((Test-Path C:\Windows\system32\GroupPolicy\Machine\Scripts\psscripts.ini) -eq $true) {} Else {Move-Item -Path $path\HovercastTemp\PreInstall\psscripts.ini -Destination C:\Windows\system32\GroupPolicy\Machine\Scripts}
+ if((Test-Path C:\Windows\system32\GroupPolicy\Machine\Scripts\Shutdown\NetworkRestore.ps1) -eq $true) {} Else {Move-Item -Path $path\HovercastTemp\PreInstall\NetworkRestore.ps1 -Destination C:\Windows\system32\GroupPolicy\Machine\Scripts\Shutdown}
+ if((Test-Path $env:ProgramData\ParsecLoader\clear-proxy.ps1) -eq $true) {} Else {Move-Item -Path $path\HovercastTemp\PreInstall\clear-proxy.ps1 -Destination $env:ProgramData\ParsecLoader}
+ if((Test-Path $env:ProgramData\ParsecLoader\CreateClearProxyScheduledTask.ps1) -eq $true) {} Else {Move-Item -Path $path\HovercastTemp\PreInstall\CreateClearProxyScheduledTask.ps1 -Destination $env:ProgramData\ParsecLoader}
+ if((Test-Path $env:ProgramData\ParsecLoader\parsecpublic.cer) -eq $true) {} Else {Move-Item -Path $path\HovercastTemp\PreInstall\parsecpublic.cer -Destination $env:ProgramData\ParsecLoader}
}
function cloudprovider {
@@ -260,148 +251,6 @@ add-type @"
}
"@
-Function TestCredential {
- param
- (
- [PSCredential]$Credential
- )
- try {
- Start-Process -FilePath cmd.exe /c -Credential ($Credential)
- }
- Catch {
- If ($Error[0].Exception.Message) {
- $Error[0].Exception.Message
- Throw
- }
- }
- }
-
-function Set-AutoLogon {
- [CmdletBinding(SupportsShouldProcess)]
- param
- (
- [PSCredential]$Credential
- )
- Try {
- if ($Credential.GetNetworkCredential().Domain) {
- $DefaultDomainName = $Credential.GetNetworkCredential().Domain
- }
- elseif ((Get-WMIObject Win32_ComputerSystem).PartOfDomain) {
- $DefaultDomainName = "."
- }
- else {
- $DefaultDomainName = ""
- }
-
- if ($PSCmdlet.ShouldProcess(('User "{0}\{1}"' -f $DefaultDomainName, $Credential.GetNetworkCredential().Username), "Set Auto logon")) {
- Write-Verbose ('DomainName: {0} / UserName: {1}' -f $DefaultDomainName, $Credential.GetNetworkCredential().Username)
- Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Name "AutoAdminLogon" -Value 1
- Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Name "DefaultDomainName" -Value ""
- Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Name "DefaultUserName" -Value $Credential.UserName
- Remove-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Name "AutoLogonCount" -ErrorAction SilentlyContinue
- Remove-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Name "DefaultPassword" -ErrorAction SilentlyContinue
- $private:LsaUtil = New-Object ComputerSystem.LSAutil -ArgumentList "DefaultPassword"
- $LsaUtil.SetSecret($Credential.GetNetworkCredential().Password)
- "Auto Logon Configured"
- Remove-Variable Credential
- }
- }
- Catch {
- $Error[0].Exception.Message
- Throw
- }
-}
-
-
-Function GetInstanceCredential {
- Try {
- $Credential = Get-Credential -Credential $null
- Try {
- TestCredential -Credential $Credential
- }
- Catch {
- Remove-Variable Credential
- #$Error[0].Exception.Message
- "Retry?"
- $Retry = Read-Host "(Y/N)"
- Switch ($Retry){
- Y {
- GetInstanceCredential
- }
- N {
- Return
- }
- }
- }
- }
- Catch {
- if ($Credential) {Remove-Variable Credential}
- "You pressed cancel, retry?"
- $Cancel = Read-Host "(Y/N)"
- Switch ($Cancel){
- Y {
- GetInstanceCredential
- }
- N {
- Return
- }
- }
- }
- if($credential) {Set-AutoLogon -Credential $Credential}
- }
-
-Function PromptUserAutoLogon {
-param (
-[switch]$DontPromptPasswordUpdateGPU
-)
-$CloudProvider = CloudProvider
- If ($DontPromptPasswordUpdateGPU) {
- }
- ElseIf ($CloudProvider -eq "Paperspace") {
- }
- Else {
- "Detected $CloudProvider"
- Write-Host @"
-Do you want this computer to log on to Windows automatically?
-(Y): This is good when you want the cloud computer to boot straight to Parsec but is less secure as the computer will not be protected by a password at start up
-(N): If you plan to log into Windows with RDP then connect via Parsec, or have been told you don't need to set this up
-"@ -ForegroundColor Black -BackgroundColor Red
- $ReadHost = Read-Host "(Y/N)"
- Switch ($ReadHost)
- {
- Y {
- GetInstanceCredential
- }
- N {
- }
- }
- }
- }
-
-
-
-
-
-#Modifies Local Group Policy to enable Shutdown scrips items
-function add-gpo-modifications {
- $querygpt = Get-content C:\Windows\System32\GroupPolicy\gpt.ini
- $matchgpt = $querygpt -match '{42B5FAAE-6536-11D2-AE5A-0000F87571E3}{40B6664F-4972-11D1-A7CA-0000F87571E3}'
- if ($matchgpt -contains "*0000F87571E3*" -eq $false) {
- $gptstring = get-content C:\Windows\System32\GroupPolicy\gpt.ini
- $gpoversion = $gptstring -match "Version"
- $GPO = $gptstring -match "gPCMachineExtensionNames"
- $add = '[{42B5FAAE-6536-11D2-AE5A-0000F87571E3}{40B6664F-4972-11D1-A7CA-0000F87571E3}]'
- $replace = "$GPO" + "$add"
- (Get-Content "C:\Windows\System32\GroupPolicy\gpt.ini").Replace("$GPO","$replace") | Set-Content "C:\Windows\System32\GroupPolicy\gpt.ini"
- [int]$i = $gpoversion.trim("Version=")
- [int]$n = $gpoversion.trim("Version=")
- $n +=2
- (Get-Content C:\Windows\System32\GroupPolicy\gpt.ini) -replace "Version=$i", "Version=$n" | Set-Content C:\Windows\System32\GroupPolicy\gpt.ini
- }
- else{
- write-output "Not Required"
- }
- }
#Adds Premade Group Policu Item if existing configuration doesn't exist
function addRegItems{
@@ -410,10 +259,10 @@ function addRegItems{
add-gpo-modifications
}
Else {
- Move-Item -Path $path\ParsecTemp\PreInstall\gpt.ini -Destination C:\Windows\system32\GroupPolicy -Force | Out-Null
+ Move-Item -Path $path\HovercastTemp\PreInstall\gpt.ini -Destination C:\Windows\system32\GroupPolicy -Force | Out-Null
}
- regedit /s $path\ParsecTemp\PreInstall\NetworkRestore.reg
- regedit /s $path\ParsecTemp\PreInstall\ForceCloseShutDown.reg
+ regedit /s $path\HovercastTemp\PreInstall\NetworkRestore.reg
+ regedit /s $path\HovercastTemp\PreInstall\ForceCloseShutDown.reg
New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS -ErrorAction SilentlyContinue | Out-Null
}
@@ -442,10 +291,10 @@ function Test-RegistryValue {
#Create ParsecTemp folder in C Drive
function create-directories {
ProgressWriter -Status "Creating Directories (C:\ParsecTemp)" -PercentComplete $PercentComplete
- if((Test-Path -Path C:\ParsecTemp) -eq $true) {} Else {New-Item -Path C:\ParsecTemp -ItemType directory | Out-Null}
- if((Test-Path -Path C:\ParsecTemp\Apps) -eq $true) {} Else {New-Item -Path C:\ParsecTemp\Apps -ItemType directory | Out-Null}
- if((Test-Path -Path C:\ParsecTemp\DirectX) -eq $true) {} Else {New-Item -Path C:\ParsecTemp\DirectX -ItemType directory | Out-Null}
- if((Test-Path -Path C:\ParsecTemp\Drivers) -eq $true) {} Else {New-Item -Path C:\ParsecTemp\Drivers -ItemType Directory | Out-Null}
+ if((Test-Path -Path C:\Hovercast) -eq $true) {} Else {New-Item -Path C:\ParsecTemp -ItemType directory | Out-Null}
+ if((Test-Path -Path C:\Hovercast\Apps) -eq $true) {} Else {New-Item -Path C:\Hovercast\Apps -ItemType directory | Out-Null}
+ if((Test-Path -Path C:\Hovercast\DirectX) -eq $true) {} Else {New-Item -Path C:\Hovercast\DirectX -ItemType directory | Out-Null}
+ if((Test-Path -Path C:\Hovercast\Drivers) -eq $true) {} Else {New-Item -Path C:\Hovercast\Drivers -ItemType Directory | Out-Null}
}
#disable IE security
@@ -459,91 +308,49 @@ function disable-iesecurity {
#download-files-S3
function download-resources {
ProgressWriter -Status "Downloading DirectX June 2010 Redist" -PercentComplete $PercentComplete
- (New-Object System.Net.WebClient).DownloadFile("https://download.microsoft.com/download/8/4/A/84A35BF1-DAFE-4AE8-82AF-AD2AE20B6B14/directx_Jun2010_redist.exe", "C:\ParsecTemp\Apps\directx_Jun2010_redist.exe")
+ (New-Object System.Net.WebClient).DownloadFile("https://download.microsoft.com/download/8/4/A/84A35BF1-DAFE-4AE8-82AF-AD2AE20B6B14/directx_Jun2010_redist.exe", "C:\Hovercast\Apps\directx_Jun2010_redist.exe")
ProgressWriter -Status "Downloading Parsec" -PercentComplete $PercentComplete
- (New-Object System.Net.WebClient).DownloadFile("https://builds.parsecgaming.com/package/parsec-windows.exe", "C:\ParsecTemp\Apps\parsec-windows.exe")
+ (New-Object System.Net.WebClient).DownloadFile("https://builds.parsecgaming.com/package/parsec-windows.exe", "C:\Hovercast\Apps\parsec-windows.exe")
ProgressWriter -Status "Downloading Parsec Virtual Display Driver" -percentcomplete $PercentComplete
- (New-Object System.Net.WebClient).DownloadFile("https://builds.parsec.app/vdd/parsec-vdd-0.37.0.0.exe", "C:\ParsecTemp\Apps\parsec-vdd.exe")
+ (New-Object System.Net.WebClient).DownloadFile("https://builds.parsec.app/vdd/parsec-vdd-0.37.0.0.exe", "C:\Hovercast\Apps\parsec-vdd.exe")
ProgressWriter -Status "Downloading GPU Updater" -PercentComplete $PercentComplete
- (New-Object System.Net.WebClient).DownloadFile("https://s3.amazonaws.com/parseccloud/image/parsec+desktop.png", "C:\ParsecTemp\parsec+desktop.png")
- (New-Object System.Net.WebClient).DownloadFile("https://s3.amazonaws.com/parseccloud/image/white_ico_agc_icon.ico", "C:\ParsecTemp\white_ico_agc_icon.ico")
- (New-Object System.Net.WebClient).DownloadFile("https://raw.githubusercontent.com/parsec-cloud/Cloud-GPU-Updater/master/GPUUpdaterTool.ps1", "$env:ProgramData\ParsecLoader\GPUUpdaterTool.ps1")
+ (New-Object System.Net.WebClient).DownloadFile("https://firebasestorage.googleapis.com/v0/b/controlroom-live.appspot.com/o/app-uploads%2Fwallpaper_5b52c7d7-43a3-410f-b91c-6fe966ed3339.jpg?alt=media&token=907a55b1-60c4-4deb-a88d-056edbfb5849", "C:\Hovercast\wallpaper.png")
ProgressWriter -Status "Downloading Google Chrome" -PercentComplete $PercentComplete
- (New-Object System.Net.WebClient).DownloadFile("https://dl.google.com/tag/s/dl/chrome/install/googlechromestandaloneenterprise64.msi", "C:\ParsecTemp\Apps\googlechromestandaloneenterprise64.msi")
+ (New-Object System.Net.WebClient).DownloadFile("https://dl.google.com/tag/s/dl/chrome/install/googlechromestandaloneenterprise64.msi", "C:\Hovercast\Apps\googlechromestandaloneenterprise64.msi")
+ ProgressWriter -Status "Downloading vMix25" -PercentComplete $PercentComplete
+ (New-Object System.Net.WebClient).DownloadFile("https://cdn.vmix.com/download/vmix25.exe", "C:\Hovercast\Apps\vmix25.exe")
+ ProgressWriter -Status "Downloading Zoom" -PercentComplete $PercentComplete
+ (New-Object System.Net.WebClient).DownloadFile("https://zoom.us/client/latest/ZoomInstallerFull.msi", "C:\Hovercast\Apps\ZoomInstallerFull.msi")
+ ProgressWriter -Status "Downloading Skype" -PercentComplete $PercentComplete
+ (New-Object System.Net.WebClient).DownloadFile("https://go.skype.com/msi-download", "C:\Hovercast\Apps\skype.msi")
+ ProgressWriter -Status "Downloading NDI5 Tools" -PercentComplete $PercentComplete
+ (New-Object System.Net.WebClient).DownloadFile("https://downloads.ndi.tv/Tools/NDI%205%20Tools.exe", "C:\Hovercast\Apps\NDI5.exe")
}
#install-base-files-silently
function install-windows-features {
ProgressWriter -Status "Installing Chrome" -PercentComplete $PercentComplete
- start-process -filepath "C:\Windows\System32\msiexec.exe" -ArgumentList '/qn /i "C:\ParsecTemp\Apps\googlechromestandaloneenterprise64.msi"' -Wait
+ start-process -filepath "C:\Windows\System32\msiexec.exe" -ArgumentList '/qn /i "C:\Hovercast\Apps\googlechromestandaloneenterprise64.msi"' -Wait
+ ProgressWriter -Status "Installing Skype" -PercentComplete $PercentComplete
+ start-process -filepath "C:\Windows\System32\msiexec.exe" -ArgumentList '/qn /i "C:\Hovercast\Apps\skype.msi"' -Wait
+ ProgressWriter -Status "Installing Zoom" -PercentComplete $PercentComplete
+ start-process -filepath "C:\Windows\System32\msiexec.exe" -ArgumentList '/qn /i "C:\Hovercast\Apps\ZoomInstallerFull.msi"' -Wait
ProgressWriter -Status "Installing DirectX June 2010 Redist" -PercentComplete $PercentComplete
- Start-Process -FilePath "C:\ParsecTemp\Apps\directx_jun2010_redist.exe" -ArgumentList '/T:C:\ParsecTemp\DirectX /Q'-wait
- Start-Process -FilePath "C:\ParsecTemp\DirectX\DXSETUP.EXE" -ArgumentList '/silent' -wait
+ Start-Process -FilePath "C:\Hovercast\Apps\directx_jun2010_redist.exe" -ArgumentList '/T:C:\Hovercast\DirectX /Q'-wait
+ ProgressWriter -Status "Installing vMix25" -PercentComplete $PercentComplete
+ Start-Process -FilePath "C:\Hovercast\Apps\vmix25.exe" -ArgumentList '/silent' -wait
+ ProgressWriter -Status "Installing DirectX" -PercentComplete $PercentComplete
+ Start-Process -FilePath "C:\Hovercast\DirectX\DXSETUP.EXE" -ArgumentList '/silent' -wait
+ ProgressWriter -Status "Installing NDI Tools" -PercentComplete $PercentComplete
+ Start-Process -FilePath "C:\Hovercast\Apps\NDI5.exe" -ArgumentList '/silent' -wait
ProgressWriter -Status "Installing Direct Play" -PercentComplete $PercentComplete
Install-WindowsFeature Direct-Play | Out-Null
ProgressWriter -Status "Installing .net 3.5" -PercentComplete $PercentComplete
Install-WindowsFeature Net-Framework-Core | Out-Null
ProgressWriter -Status "Cleaning up" -PercentComplete $PercentComplete
- Remove-Item -Path C:\ParsecTemp\DirectX -force -Recurse
+ Remove-Item -Path C:\Hovercast\DirectX -force -Recurse
}
-Function TeamMachineSetupScheduledTask {
-$XML = @"
-
-
-
- Attempts to read instance userdata and set up as Team Machine at startup
- \Setup Team Machine
-
-
-
- true
-
-
-
-
- $(([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value)
- S4U
- HighestAvailable
-
-
-
- IgnoreNew
- true
- true
- true
- false
- false
-
- true
- false
-
- true
- true
- false
- false
- false
- PT72H
- 7
-
-
-
- C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe
- -file %programdata%\ParsecLoader\TeamMachineSetup.ps1
-
-
-
-"@
-
- try {
- Get-ScheduledTask -TaskName "Setup Team Machine" -ErrorAction Stop | Out-Null
- Unregister-ScheduledTask -TaskName "Setup Team Machine" -Confirm:$false
- }
- catch {}
- $action = New-ScheduledTaskAction -Execute 'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe' -Argument '-file %programdata%\ParsecLoader\TeamMachineSetup.ps1'
- $trigger = New-ScheduledTaskTrigger -AtStartup
- Register-ScheduledTask -XML $XML -TaskName "Setup Team Machine" | Out-Null
- }
#set update policy
function set-update-policy {
@@ -581,11 +388,6 @@ function enable-mousekeys {
set-Itemproperty -Path 'HKCU:\Control Panel\Accessibility\MouseKeys' -Name Flags -Value 63 | Out-Null
}
-#disable shutdown start menu
-function remove-shutdown {
- Write-Output "Disabling Shutdown Option in Start Menu"
- New-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer -Name NoClose -Value 1 | Out-Null
- }
#Sets all applications to force close on shutdown
function force-close-apps {
@@ -627,7 +429,7 @@ function disable-lock {
function set-wallpaper {
ProgressWriter -Status "Setting the Parsec logo ass the computer wallpaper" -PercentComplete $PercentComplete
if((Test-Path -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\System) -eq $true) {} Else {New-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies" -Name "System" | Out-Null}
- if((Test-RegistryValue -path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\System -value Wallpaper) -eq $true) {Set-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\System -Name Wallpaper -value "C:\ParsecTemp\parsec+desktop.png" | Out-Null} Else {New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\System -Name Wallpaper -PropertyType String -value "C:\ParsecTemp\parsec+desktop.png" | Out-Null}
+ if((Test-RegistryValue -path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\System -value Wallpaper) -eq $true) {Set-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\System -Name Wallpaper -value "$path\HovercastTemp\hovercastWallpaper.jpg" | Out-Null} Else {New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\System -Name Wallpaper -PropertyType String -value "C:\Hovercast\parsec+desktop.png" | Out-Null}
if((Test-RegistryValue -path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\System -value WallpaperStyle) -eq $true) {Set-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\System -Name WallpaperStyle -value 2 | Out-Null} Else {New-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\System -Name WallpaperStyle -PropertyType String -value 2 | Out-Null}
Stop-Process -ProcessName explorer
}
@@ -638,32 +440,6 @@ function disable-recent-start-menu {
New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Explorer -PropertyType DWORD -Name HideRecentlyAddedApps -Value 1
}
-#createshortcut
-function Create-AutoShutdown-Shortcut{
- ProgressWriter -Status "Creating auto shutdown shortcut" -PercentComplete $PercentComplete
- $Shell = New-Object -ComObject ("WScript.Shell")
- $ShortCut = $Shell.CreateShortcut("$env:USERPROFILE\Desktop\Setup Auto Shutdown.lnk")
- $ShortCut.TargetPath="powershell.exe"
- $ShortCut.Arguments='-ExecutionPolicy Bypass -File "C:\ProgramData\ParsecLoader\CreateAutomaticShutdownScheduledTask.ps1"'
- $ShortCut.WorkingDirectory = "$env:ProgramData\ParsecLoader";
- $ShortCut.WindowStyle = 0;
- $ShortCut.Description = "ClearProxy shortcut";
- $ShortCut.Save()
- }
-
-#createshortcut
-function Create-One-Hour-Warning-Shortcut{
- ProgressWriter -Status "Creating one hour warning shortcut" -PercentComplete $PercentComplete
- $Shell = New-Object -ComObject ("WScript.Shell")
- $ShortCut = $Shell.CreateShortcut("$env:USERPROFILE\Desktop\Setup One Hour Warning.lnk")
- $ShortCut.TargetPath="powershell.exe"
- $ShortCut.Arguments='-ExecutionPolicy Bypass -File "C:\ProgramData\ParsecLoader\CreateOneHourWarningScheduledTask.ps1"'
- $ShortCut.WorkingDirectory = "$env:ProgramData\ParsecLoader";
- $ShortCut.WindowStyle = 0;
- $ShortCut.Description = "OneHourWarning shortcut";
- $ShortCut.Save()
- }
-
#Disables Server Manager opening on Startup
function disable-server-manager {
@@ -676,36 +452,41 @@ function clean-aws {
remove-item -path "$path\EC2 Feedback.Website"
Remove-Item -Path "$path\EC2 Microsoft Windows Guide.website"
}
-<#
-#Move extracts Razer Surround Files into correct location
-Function ExtractRazerAudio {
- cmd.exe /c '"C:\Program Files\7-Zip\7z.exe" x C:\ParsecTemp\Apps\razer-surround-driver.exe -oC:\ParsecTemp\Apps\razer-surround-driver -y' | Out-Null
- }
-#modifys the installer manifest to run without interraction
-Function ModidifyManifest {
- $InstallerManifest = 'C:\ParsecTemp\Apps\razer-surround-driver\$TEMP\RazerSurroundInstaller\InstallerManifest.xml'
- $regex = '(?<=)[^<]*'
- (Get-Content $InstallerManifest) -replace $regex, 'true' | Set-Content $InstallerManifest -Encoding UTF8
-#>
- #Audio Driver Install
function AudioInstall {
-<#
- (New-Object System.Net.WebClient).DownloadFile("http://rzr.to/surround-pc-download", "C:\ParsecTemp\Apps\razer-surround-driver.exe")
- ExtractRazerAudio
- ModidifyManifest
- $OriginalLocation = Get-Location
- Set-Location -Path 'C:\ParsecTemp\Apps\razer-surround-driver\$TEMP\RazerSurroundInstaller\'
- Start-Process RzUpdateManager.exe
- Set-Location $OriginalLocation
- Set-Service -Name audiosrv -StartupType Automatic
- #>
- (New-Object System.Net.WebClient).DownloadFile("https://download.vb-audio.com/Download_CABLE/VBCABLE_Driver_Pack43.zip", "C:\ParsecTemp\Apps\VBCable.zip")
- New-Item -Path "C:\ParsecTemp\Apps\VBCable" -ItemType Directory| Out-Null
- Expand-Archive -Path "C:\ParsecTemp\Apps\VBCable.zip" -DestinationPath "C:\ParsecTemp\Apps\VBCable"
- $pathToCatFile = "C:\ParsecTemp\Apps\VBCable\vbaudio_cable64_win7.cat"
- $FullCertificateExportPath = "C:\ParsecTemp\Apps\VBCable\VBCert.cer"
+ (New-Item -Path "C:\Hovercast\Apps\VBCable0" -ItemType Directory| Out-Null
+ New-Item -Path "C:\Hovercast\Apps\VBCable1" -ItemType Directory| Out-Null
+ New-Item -Path "C:\Hovercast\Apps\VBCable2" -ItemType Directory| Out-Null
+ Expand-Archive -Path "$path\HovercastTemp\PreInstall\VBCABLE_Driver_Pack43.zip" -DestinationPath "C:\Hovercast\Apps\VBCable0"
+ $pathToCatFile = "C:\Hovercast\Apps\VBCable0\vbaudio_cable64_win7.cat"
+ $FullCertificateExportPath = "C:\Hovercast\Apps\VBCable0\VBCert.cer"
+ $VB = @{}
+ $VB.DriverFile = $pathToCatFile;
+ $VB.CertName = $FullCertificateExportPath;
+ $VB.ExportType = [System.Security.Cryptography.X509Certificates.X509ContentType]::Cert;
+ $VB.Cert = (Get-AuthenticodeSignature -filepath $VB.DriverFile).SignerCertificate;
+ [System.IO.File]::WriteAllBytes($VB.CertName, $VB.Cert.Export($VB.ExportType))
+ Import-Certificate -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -FilePath $VB.CertName | Out-Null
+ Start-Process -FilePath "C:\Hovercast\Apps\VBCable\VBCABLE_Setup_x64.exe" -ArgumentList '-i','-h' -wait
+
+
+ Expand-Archive -Path "$path\HovercastTemp\PreInstall\VBCABLE_A_Driver_Pack43.zip" -DestinationPath "C:\Hovercast\Apps\VBCable1"
+ $pathToCatFile = "C:\Hovercast\Apps\VBCable1\vbaudio_cablea_win7.cat"
+ $FullCertificateExportPath = "C:\Hovercast\Apps\VBCable1\VBCert.cer"
+ $VB = @{}
+ $VB.DriverFile = $pathToCatFile;
+ $VB.CertName = $FullCertificateExportPath;
+ $VB.ExportType = [System.Security.Cryptography.X509Certificates.X509ContentType]::Cert;
+ $VB.Cert = (Get-AuthenticodeSignature -filepath $VB.DriverFile).SignerCertificate;
+ [System.IO.File]::WriteAllBytes($VB.CertName, $VB.Cert.Export($VB.ExportType))
+ Import-Certificate -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -FilePath $VB.CertName | Out-Null
+ Start-Process -FilePath "C:\Hovercast\Apps\VBCable\VBCABLE_Setup_x64.exe" -ArgumentList '-i','-h' -wait
+
+
+ Expand-Archive -Path "$path\HovercastTemp\PreInstall\VBCABLE_B_Driver_Pack43.zip" -DestinationPath "C:\Hovercast\Apps\VBCable2"
+ $pathToCatFile = "C:\Hovercast\Apps\VBCable1\vbaudio_cableb_win7.cat"
+ $FullCertificateExportPath = "C:\Hovercast\Apps\VBCable1\VBCert.cer"
$VB = @{}
$VB.DriverFile = $pathToCatFile;
$VB.CertName = $FullCertificateExportPath;
@@ -713,105 +494,38 @@ function AudioInstall {
$VB.Cert = (Get-AuthenticodeSignature -filepath $VB.DriverFile).SignerCertificate;
[System.IO.File]::WriteAllBytes($VB.CertName, $VB.Cert.Export($VB.ExportType))
Import-Certificate -CertStoreLocation Cert:\LocalMachine\TrustedPublisher -FilePath $VB.CertName | Out-Null
- Start-Process -FilePath "C:\ParsecTemp\Apps\VBCable\VBCABLE_Setup_x64.exe" -ArgumentList '-i','-h'
+ Start-Process -FilePath "C:\Hovercast\Apps\VBCable\VBCABLE_Setup_x64.exe" -ArgumentList '-i','-h' -wait
+
Set-Service -Name audiosrv -StartupType Automatic
Start-Service -Name audiosrv
}
-#Creates shortcut for the GPU Updater tool
-function gpu-update-shortcut {
- (New-Object System.Net.WebClient).DownloadFile("https://raw.githubusercontent.com/parsec-cloud/Cloud-GPU-Updater/master/GPUUpdaterTool.ps1", "$env:ProgramData\ParsecLoader\GPUUpdaterTool.ps1")
- Unblock-File -Path "$env:ProgramData\ParsecLoader\GPUUpdaterTool.ps1"
- ProgressWriter -Status "Creating GPU Updater icon on Desktop" -PercentComplete $PercentComplete
- $Shell = New-Object -ComObject ("WScript.Shell")
- $ShortCut = $Shell.CreateShortcut("$path\GPU Updater.lnk")
- $ShortCut.TargetPath="powershell.exe"
- $ShortCut.Arguments='-ExecutionPolicy Bypass -File "C:\ProgramData\ParsecLoader\GPUUpdaterTool.ps1"'
- $ShortCut.WorkingDirectory = "$env:ProgramData\ParsecLoader";
- $ShortCut.IconLocation = "$env:ProgramData\ParsecLoader\GPU-Update.ico, 0";
- $ShortCut.WindowStyle = 0;
- $ShortCut.Description = "GPU Updater shortcut";
- $ShortCut.Save()
- }
-
-#Provider specific driver install and setup
-Function provider-specific {
- ProgressWriter -Status "Installing VB CAble Audio Driver if required and removing system information from appearing on Google Cloud Desktops" -PercentComplete $PercentComplete
- #Device ID Query
- $gputype = Get-PnpDevice | Where-Object {($_.DeviceID -like 'PCI\VEN_10DE*' -or $_.DeviceID -like '*PCI\VEN_1002*') -and ($_.PNPClass -eq 'Display' -or $_.Name -like '*Video Controller')} | Select-Object InstanceID -ExpandProperty InstanceID
- if ($gputype -eq $null) {
- }
- Else {
- if($gputype.substring(13,8) -eq "DEV_13F2") {
- #AWS G3.4xLarge M60
- AudioInstall
- }
- ElseIF($gputype.Substring(13,8) -eq "DEV_118A"){
- #AWS G2.2xLarge K520
- AudioInstall
- }
- ElseIF($gputype.Substring(13,8) -eq "DEV_1BB1") {
- #Paperspace P4000
- }
- Elseif($gputype.Substring(13,8) -eq "DEV_1BB0") {
- #Paperspace P5000
- }
- Elseif($gputype.substring(13,8) -eq "DEV_15F8") {
- #Tesla P100
- if((Test-Path "C:\Program Files\Google\Compute Engine\tools\BGInfo.exe") -eq $true) {remove-item -path "C:\Program Files\Google\Compute Engine\tools\BGInfo.exe"} Else {}
- if((Test-Path "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\BGinfo.lnk") -eq $true) {Remove-Item -path "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\BGinfo.lnk"} Else {}
- AudioInstall
- }
- Elseif($gputype.substring(13,8) -eq "DEV_1BB3") {
- #Tesla P4
- if((Test-Path "C:\Program Files\Google\Compute Engine\tools\BGInfo.exe") -eq $true) {remove-item -path "C:\Program Files\Google\Compute Engine\tools\BGInfo.exe"} Else {}
- if((Test-Path "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\BGinfo.lnk") -eq $true) {Remove-Item -path "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\BGinfo.lnk"} Else {}
- AudioInstall
- }
- Elseif($gputype.substring(13,8) -eq "DEV_1EB8") {
- #Tesla T4
- if((Test-Path "C:\Program Files\Google\Compute Engine\tools\BGInfo.exe") -eq $true) {remove-item -path "C:\Program Files\Google\Compute Engine\tools\BGInfo.exe"} Else {}
- if((Test-Path "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\BGinfo.lnk") -eq $true) {Remove-Item -path "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\BGinfo.lnk"} Else {}
- AudioInstall
- }
- Elseif($gputype.substring(13,8) -eq "DEV_1430") {
- #Quadro M2000
- AudioInstall
- }
- Elseif($gputype.substring(13,8) -eq "DEV_7362") {
- #AMD V520
- AudioInstall
- }
- Else {
- }
- }
- }
#7Zip is required to extract the Parsec-Windows.exe File
function Install7Zip {
$url = Invoke-WebRequest -Uri https://www.7-zip.org/download.html
- (New-Object System.Net.WebClient).DownloadFile("https://www.7-zip.org/$($($($url.Links | Where-Object outertext -Like "Download")[1]).OuterHTML.split('"')[1])" ,"C:\ParsecTemp\Apps\7zip.exe")
- Start-Process C:\ParsecTemp\Apps\7zip.exe -ArgumentList '/S /D="C:\Program Files\7-Zip"' -Wait
+ (New-Object System.Net.WebClient).DownloadFile("https://www.7-zip.org/$($($($url.Links | Where-Object outertext -Like "Download")[1]).OuterHTML.split('"')[1])" ,"C:\Hovercast\Apps\7zip.exe")
+ Start-Process C:\Hovercast\Apps\7zip.exe -ArgumentList '/S /D="C:\Program Files\7-Zip"' -Wait
}
Function Server2019Controller {
ProgressWriter -Status "Adding Xbox 360 Controller driver to Windows Server 2019" -PercentComplete $PercentComplete
if ((gwmi win32_operatingsystem | % caption) -like '*Windows Server 2019*') {
- (New-Object System.Net.WebClient).DownloadFile("http://www.download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/2060_8edb3031ef495d4e4247e51dcb11bef24d2c4da7.cab", "C:\ParsecTemp\Drivers\Xbox360_64Eng.cab")
- if((Test-Path -Path C:\ParsecTemp\Drivers\Xbox360_64Eng) -eq $true) {} Else {New-Item -Path C:\ParsecTemp\Drivers\Xbox360_64Eng -ItemType directory | Out-Null}
- cmd.exe /c "C:\Windows\System32\expand.exe C:\ParsecTemp\Drivers\Xbox360_64Eng.cab -F:* C:\ParsecTemp\Drivers\Xbox360_64Eng" | Out-Null
- cmd.exe /c '"C:\Program Files\Parsec\vigem\10\x64\devcon.exe" dp_add "C:\ParsecTemp\Drivers\Xbox360_64Eng\xusb21.inf"' | Out-Null
+ (New-Object System.Net.WebClient).DownloadFile("http://www.download.windowsupdate.com/msdownload/update/v3-19990518/cabpool/2060_8edb3031ef495d4e4247e51dcb11bef24d2c4da7.cab", "C:\Hovercast\Drivers\Xbox360_64Eng.cab")
+ if((Test-Path -Path C:\Hovercast\Drivers\Xbox360_64Eng) -eq $true) {} Else {New-Item -Path C:\Hovercast\Drivers\Xbox360_64Eng -ItemType directory | Out-Null}
+ cmd.exe /c "C:\Windows\System32\expand.exe C:\Hovercast\Drivers\Xbox360_64Eng.cab -F:* C:\Hovercast\Drivers\Xbox360_64Eng" | Out-Null
+ cmd.exe /c '"C:\Program Files\Parsec\vigem\10\x64\devcon.exe" dp_add "C:\Hovercast\Drivers\Xbox360_64Eng\xusb21.inf"' | Out-Null
}
}
Function InstallParsec {
- Start-Process "C:\ParsecTemp\Apps\parsec-windows.exe" -ArgumentList "/silent", "/shared" -wait
+ Start-Process "C:\Hovercast\Apps\parsec-windows.exe" -ArgumentList "/silent", "/shared" -wait
}
Function InstallParsecVDD {
ProgressWriter -Status "Installing Parsec Virtual Display Driver" -PercentComplete $PercentComplete
Import-Certificate -CertStoreLocation "Cert:\LocalMachine\TrustedPublisher" -FilePath "$env:ProgramData\ParsecLoader\parsecpublic.cer" | Out-Null
- Start-Process "C:\ParsecTemp\Apps\parsec-vdd.exe" -ArgumentList "/silent"
+ Start-Process "C:\Hovercast\Apps\parsec-vdd.exe" -ArgumentList "/silent"
$iterator = 0
do {
Start-Sleep -s 2
@@ -853,7 +567,7 @@ function disable-devices {
#Cleanup
function clean-up {
ProgressWriter -Status "Deleting temporary files from C:\ParsecTemp" -PercentComplete $PercentComplete
- Remove-Item -Path C:\ParsecTemp\Drivers -force -Recurse
+ Remove-Item -Path C:\Hovercast\Drivers -force -Recurse
Remove-Item -Path $path\ParsecTemp -force -Recurse
}
@@ -944,18 +658,11 @@ $ScripttaskList = @(
"enable-mousekeys";
"set-time";
"set-wallpaper";
-"Create-AutoShutdown-Shortcut";
-"Create-One-Hour-Warning-Shortcut";
"disable-server-manager";
"Install-Gaming-Apps";
"disable-devices";
"InstallParsecVDD";
"Server2019Controller";
-"gpu-update-shortcut";
-"clean-up";
-"clean-up-recent";
-"provider-specific";
-"TeamMachineSetupScheduledTask"
)
foreach ($func in $ScripttaskList) {
@@ -963,8 +670,6 @@ foreach ($func in $ScripttaskList) {
& $func $PercentComplete
}
-StartGPUUpdate -DontPromptPasswordUpdateGPU:$DontPromptPasswordUpdateGPU
-Start-ScheduledTask -TaskName "Setup Team Machine"
ProgressWriter -status "Done" -percentcomplete 100
Write-Host "1. Open Parsec and sign in (Team machines should have automatically signed in if userdata was correct)" -ForegroundColor black -BackgroundColor Green
Write-Host "2. Use GPU Updater to update your GPU Drivers!" -ForegroundColor black -BackgroundColor Green
diff --git a/PreInstall/Admin/GPU Updater.lnk b/PreInstall/Admin/GPU Updater.lnk
new file mode 100644
index 0000000..522779f
Binary files /dev/null and b/PreInstall/Admin/GPU Updater.lnk differ
diff --git a/PreInstall/Admin/parsec-windows.exe b/PreInstall/Admin/parsec-windows.exe
new file mode 100644
index 0000000..f29964b
Binary files /dev/null and b/PreInstall/Admin/parsec-windows.exe differ
diff --git a/PreInstall/Admin/sysdm.cpl.lnk b/PreInstall/Admin/sysdm.cpl.lnk
new file mode 100644
index 0000000..2e8924a
Binary files /dev/null and b/PreInstall/Admin/sysdm.cpl.lnk differ
diff --git a/PreInstall/Admin/timedate.cpl.lnk b/PreInstall/Admin/timedate.cpl.lnk
new file mode 100644
index 0000000..06cef3b
Binary files /dev/null and b/PreInstall/Admin/timedate.cpl.lnk differ
diff --git a/PreInstall/Automatic-Shutdown.ps1 b/PreInstall/Automatic-Shutdown.ps1
deleted file mode 100644
index 479f3bc..0000000
--- a/PreInstall/Automatic-Shutdown.ps1
+++ /dev/null
@@ -1,136 +0,0 @@
-Add-Type @'
-using System;
-using System.Diagnostics;
-using System.Runtime.InteropServices;
-
-namespace PInvoke.Win32 {
-
- public static class UserInput {
-
- [DllImport("user32.dll", SetLastError=false)]
- private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
-
- [StructLayout(LayoutKind.Sequential)]
- private struct LASTINPUTINFO {
- public uint cbSize;
- public int dwTime;
- }
-
- public static DateTime LastInput {
- get {
- DateTime bootTime = DateTime.UtcNow.AddMilliseconds(-Environment.TickCount);
- DateTime lastInput = bootTime.AddMilliseconds(LastInputTicks);
- return lastInput;
- }
- }
-
- public static TimeSpan IdleTime {
- get {
- return DateTime.UtcNow.Subtract(LastInput);
- }
- }
-
- public static int LastInputTicks {
- get {
- LASTINPUTINFO lii = new LASTINPUTINFO();
- lii.cbSize = (uint)Marshal.SizeOf(typeof(LASTINPUTINFO));
- GetLastInputInfo(ref lii);
- return lii.dwTime;
- }
- }
- }
-}
-'@
-function AutomaticShutdown {
-
- Add-Type -AssemblyName System.Windows.Forms
-
- [System.Windows.Forms.Application]::EnableVisualStyles()
- $form1 = New-Object System.Windows.Forms.Form
- $label000000 = New-Object System.Windows.Forms.Label
- $timer1 = New-Object System.Windows.Forms.Timer
- $button = New-Object System.Windows.Forms.Button
- $InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState
-
-
-
- $form1_Load = {
- $script:countdown = [timespan]'00:10:00' # 10 minutes
- $label000000.Text = "$countdown"
- $timer1.Start()
-
- }
-
- $button_logic = {
- Start-Process powershell.exe -ArgumentList "-ExecutionPolicy Bypass -windowstyle hidden -file $ENV:ProgramData\Automatic-Shutdown.ps1"
- $form1.Close()
- }
-
- $timer1_Tick = {
- if ($countdown -lt [timespan]'00:00:02') {$timer1.Stop()
- Stop-Computer
- }
- Else{}
- $script:countdown -= [timespan]'00:00:01'
- $label000000.Text = "$countdown"
-
- }
-
- $Form_StateCorrection_Load =
- {
- #Correct the initial state of the form to prevent the .Net maximized form issue
- $form1.WindowState = $InitialFormWindowState
- }
-
-
- $form1.SuspendLayout()
- $form1.BringToFront()
- $Form1.ControlBox = $False
- $form1.Controls.Add($label000000)
- $form1.AutoScaleDimensions = '8, 17'
- $form1.AutoScaleMode = 'Font'
- $form1.BackColor = 'ActiveCaption'
- $form1.ClientSize = '400, 200'
- $form1.FormBorderStyle = 'Fixed3D'
- $form1.Name = 'form1'
- $form1.StartPosition = 'CenterScreen'
- $form1.Text = 'Automatic Shutdown On Idle'
- $form1.add_Load($form1_Load)
-
- $Button.Location = New-Object System.Drawing.Size(75,75)
- $Button.Size = New-Object System.Drawing.Size(150,23)
- $Button.Text = "Cancel Shutdown"
- $button.Add_click($button_logic)
-
-
- $label000000.AutoSize = $True
- $label000000.Font = 'Lucida Fax, 24pt, style=Bold'
- $label000000.Location = '90, 25'
- $label000000.Margin = '4, 0, 4, 0'
- $label000000.Name = 'label000000'
- $label000000.Size = '200, 46'
- $label000000.TabIndex = 0
- $label000000.Text = '00:00:00'
-
- $timer1.Interval = 1000
- $timer1.add_Tick($timer1_Tick)
- $form1.ResumeLayout()
-
- $InitialFormWindowState = $form1.WindowState
- $form1.add_Load($Form_StateCorrection_Load)
- $Form1.Controls.Add($Button)
- return $form1.ShowDialog()
-}
-
-function idle {
-$readfile = (Get-Content -Path $env:ProgramData\Autoshutdown.txt) - 10
-do {
-[PInvoke.Win32.UserInput]::LastInput | Out-Null
-[PInvoke.Win32.UserInput]::IdleTime | Out-Null
-Start-Sleep -Seconds 1
-}
-Until([PInvoke.Win32.UserInput]::Idletime.TotalMinutes -gt $readfile)
-AutomaticShutdown
-}
-
-idle
\ No newline at end of file
diff --git a/PreInstall/CreateAutomaticShutdownScheduledTask.ps1 b/PreInstall/CreateAutomaticShutdownScheduledTask.ps1
deleted file mode 100644
index a396778..0000000
--- a/PreInstall/CreateAutomaticShutdownScheduledTask.ps1
+++ /dev/null
@@ -1,34 +0,0 @@
-# Self-elevate the script if required
-if (-Not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] 'Administrator')) {
- if ([int](Get-CimInstance -Class Win32_OperatingSystem | Select-Object -ExpandProperty BuildNumber) -ge 6000) {
- $CommandLine = "-File `"" + $MyInvocation.MyCommand.Path + "`" " + $MyInvocation.UnboundArguments
- Start-Process -FilePath PowerShell.exe -Verb Runas -ArgumentList $CommandLine
- Exit
- }
-}
-
-Write-Host "This sets your machine to shutdown if Windows detects it as idle for X minutes.
-This is intended to save you money if you ever forget to shut your machine down.
-You will get a warning message pop up 10 minutes before shutdown"
-
-Do {[int]$read = read-host "How much time should the system idle for before shutting down? Time in Minutes - Minimum 20"}
-while ($read -lt "20")
-$read | Out-File $env:Programdata\ParsecLoader\Autoshutdown.txt
-$readfile = Get-Content -Path $env:Programdata\ParsecLoader\Autoshutdown.txt
-$time = $readfile - 10
-$span = new-timespan -minutes $time
-
-try {Get-ScheduledTask -TaskName "Automatically Shutdown on Idle" -ErrorAction Stop | Out-Null
-Unregister-ScheduledTask -TaskName "Automatically Shutdown on Idle" -Confirm:$false
-}
-catch {}
-
-$action = New-ScheduledTaskAction -Execute 'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe' -Argument '-executionpolicy bypass -windowstyle hidden -file %programdata%\ParsecLoader\automatic-shutdown.ps1'
-
-$trigger = New-ScheduledTaskTrigger -AtLogOn -User $env:USERNAME
-
-Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "Automatically Shutdown on Idle" -Description "This script runs at startup and monitors for idle" -RunLevel Highest
-
-Write-Output "Successfully Created"
-
-pause
diff --git a/PreInstall/CreateOneHourWarningScheduledTask.ps1 b/PreInstall/CreateOneHourWarningScheduledTask.ps1
deleted file mode 100644
index ba2bf17..0000000
--- a/PreInstall/CreateOneHourWarningScheduledTask.ps1
+++ /dev/null
@@ -1,56 +0,0 @@
-# Self-elevate the script if required
-if (-Not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] 'Administrator')) {
- if ([int](Get-CimInstance -Class Win32_OperatingSystem | Select-Object -ExpandProperty BuildNumber) -ge 6000) {
- $CommandLine = "-File `"" + $MyInvocation.MyCommand.Path + "`" " + $MyInvocation.UnboundArguments
- Start-Process -FilePath PowerShell.exe -Verb Runas -ArgumentList $CommandLine
- Exit
- }
-}
-
-Write-Host "This script sets your machine to warn you 5 minutes before your machine bills you for an hour,
-This is useful if your Machine bills per hour, like AWS"
-
-$confirmation = Read-Host "Are you Sure You Want To Proceed: Y/N"
-Switch ($confirmation) {
- Y {
- }
- N {
- Exit
- }
- }
-
-
-try {
- Get-ScheduledTask -TaskName "One Hour Warning Message" -ErrorAction Stop | Out-Null
- $ModifyOrRemove = "You already have the script installed, remove it?"
- Switch ($ModifyOrRemove) {
- N {
- }
- Y {
- Unregister-ScheduledTask -TaskName "One Hour Warning Message" -Confirm:$false
- "The warning message has been removed"
- Pause
- Exit}
- }
- }
-catch {
- }
-
-
-
-try {
- Get-ScheduledTask -TaskName "One Hour Warning Message" -ErrorAction Stop | Out-Null
- Unregister-ScheduledTask -TaskName "One Hour Warning Message" -Confirm:$false
- }
-catch {
- }
-
-$action = New-ScheduledTaskAction -Execute 'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe' -Argument '-executionpolicy bypass -windowstyle hidden -file %programdata%\ParsecLoader\WarningMessage.ps1'
-
-$trigger = New-ScheduledTaskTrigger -AtLogOn -User $env:USERNAME
-
-Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "One Hour Warning Message" -Description "This will warn you 5 minutes before you're billed for another hour" -RunLevel Highest
-
-Write-Output "Successfully Created"
-
-pause
\ No newline at end of file
diff --git a/PreInstall/GPU-Update.ico b/PreInstall/GPU-Update.ico
deleted file mode 100644
index 279482c..0000000
Binary files a/PreInstall/GPU-Update.ico and /dev/null differ
diff --git a/PreInstall/NetworkRestore.ps1 b/PreInstall/NetworkRestore.ps1
index c7f52e8..aa8e40d 100644
--- a/PreInstall/NetworkRestore.ps1
+++ b/PreInstall/NetworkRestore.ps1
@@ -1,46 +1,4 @@
-function Remove-Razer-Startup {
-if (((Get-Item -Path HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run).GetValue("Razer Synapse") -ne $null) -eq $true)
-{Remove-ItemProperty -path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run" -Name "Razer Synapse"
-"Removed Startup Item from Razer Synapse"}
-Else {"Razer Startup Item not present"}
-}
-Remove-Razer-Startup
-function checkGPUstatus {
-$getdisabled = Get-WmiObject win32_videocontroller | Where-Object {$_.name -like '*NVIDIA*' -and $_.status -like 'Error'} | Select-Object -ExpandProperty PNPDeviceID
-if ($getdisabled -ne $null) {"Enabling GPU"
-$var = $getdisabled.Substring(0,21)
-$arguement = "/r enable"+ ' ' + "*"+ "$var"+ "*"
-Start-Process -FilePath "C:\ParsecTemp\Apps\devcon.exe" -ArgumentList $arguement
-}
-Else {"Device is enabled"}
-}
-function DriverInstallStatus {
-$checkdevicedriver = Get-WmiObject win32_videocontroller | Where-Object {$_.PNPDeviceID -like '*VEN_10DE*'}
-if ($checkdevicedriver.name -eq "Microsoft Basic Display Adapter") {Write-output "Driver not installed"
-}
-Else {checkGPUStatus}
-}
-DriverInstallStatus
-
-
-function check-nvidia {
-$nvidiasmiarg = "-i 0 --query-gpu=driver_model.current --format=csv,noheader"
-$nvidiasmidir = "c:\program files\nvidia corporation\nvsmi\nvidia-smi"
-$nvidiasmiresult = Invoke-Expression "& `"$nvidiasmidir`" $nvidiasmiarg"
-$nvidiadriverstatus = if($nvidiasmiresult -eq "WDDM")
-{"GPU Driver status is good"
-}
-ElseIf($nvidiasmiresult -eq "TCC")
-{Write-Output "The GPU has incorrect mode TCC set - setting WDDM"
-$nvidiasmiwddm = "-g 0 -dm 0"
-$nvidiasmidir = "c:\program files\nvidia corporation\nvsmi\nvidia-smi"
-Invoke-Expression "& `"$nvidiasmidir`" $nvidiasmiwddm"}
-Else{}
-$nvidiadriverstatus}
-
-check-nvidia
-
-#set ip and dns to dhcp
+#set ip and dns to dhcp
function set-dhcp
{
$global:interfaceindex = Get-NetRoute -DestinationPrefix "0.0.0.0/0" | Select-Object ifindex -ExpandProperty ifindex
@@ -67,4 +25,4 @@ else
set-dhcp
}
-$networkadapterstatus
+$networkadapterstatus
\ No newline at end of file
diff --git a/PreInstall/OneHour.ps1 b/PreInstall/OneHour.ps1
deleted file mode 100644
index 45475fb..0000000
--- a/PreInstall/OneHour.ps1
+++ /dev/null
@@ -1,17 +0,0 @@
-function OneHour {
-Write-Output "Launched" | Out-File C:\ParsecTemp\Launched.txt
-$Seconds = Get-Content $env:programdata\ParsecLoader\Time.txt
-$Count = 0
-do {
-$Count++
-Start-Sleep -s 1
-$Count
-}
-Until($Count -ge $Seconds)
-
-
-Start-Process powershell.exe -ArgumentList "-windowstyle hidden -executionpolicy bypass -file $env:programdata\ParsecLoader\ShowDialog.ps1"
-
-}
-
-OneHour
\ No newline at end of file
diff --git a/PreInstall/Parsec.png b/PreInstall/Parsec.png
deleted file mode 100644
index f0d926a..0000000
Binary files a/PreInstall/Parsec.png and /dev/null differ
diff --git a/PreInstall/ShowDialog.ps1 b/PreInstall/ShowDialog.ps1
deleted file mode 100644
index 5640c0c..0000000
--- a/PreInstall/ShowDialog.ps1
+++ /dev/null
@@ -1,117 +0,0 @@
-Function ShowDialog {
-
-
-Add-Type -AssemblyName System.Windows.Forms
-$Screen = [System.Windows.Forms.Screen]::PrimaryScreen
- $form1_Load = {
- $script:countdown = [timespan]'00:55:00'
- $Text.Text = "YOUR CLOUD COMPUTER HAS BEEN ON FOR " ,$countdown.Minutes, " MINUTES " ,$countdown.Seconds, " SECONDS."
- $timer1.Start()
- }
-
-
- $timer1_Tick = {
- if ($script:countdown -ge [timespan]'00:59:59') {
- $timer1.Stop()
- $Form.Close()
- }
- Else{}
- $script:countdown += [timespan]'00:00:01'
- $Text.Text = "YOUR CLOUD COMPUTER HAS BEEN ON FOR " ,$countdown.Minutes, " MINUTES " ,$countdown.Seconds, " SECONDS."
- }
-
-$SubMessage = "Stop your computer now if you don't want to pay another hour of game time."
-$timer1 = New-Object System.Windows.Forms.Timer
-$Form = New-Object system.Windows.Forms.Form
-$Form.BackColor = "#25253f"
-$form.AutoScale = 1
-$Form.TopMost = $true
-$Form.Width = $Screen.Bounds.Width
-$Form.Height = 200
-$Form.FormBorderStyle = '0'
-$Form.StartPosition = 'Manual'
-$Form.Top = 0
-$form.AutoScale =
-$Form.Left = ($Screen.Bounds.Width - $Form.Width)/2
-$form.add_Load($form1_Load)
-
-$image = [System.Drawing.Image]::FromFile("$ENV:ProgramData\ParsecLoader\Parsec.png")
-$pictureBox = new-object Windows.Forms.PictureBox
-$pictureBox.Width = 100
-$pictureBox.Height = 100
-$picturebox.SizeMode = "StretchImage"
-$pictureBox.Image = $image
-$TextImage = $($($Form.Width - $Text.Width) / 10) * $(5.25 - 2)
-$picturebox.location = New-Object System.Drawing.Point($TextImage,25)
-$form.controls.add($pictureBox)
-$Text = New-Object system.windows.Forms.Label
-$Text.Text = '00:00:00'
-$Text.TextAlign = 'MiddleLeft'
-$Text.Height = 50
-$Text.Width = $Screen.Bounds.Width / 4.25
-$TextX = (($Form.Width - $Text.Width) / 10) * 5.25
-$Text.Location = New-Object System.Drawing.Point($TextX,25)
-$Text.Font = "Rubik,11,style=Bold"
-$Text.ForeColor = "#CDCDCD"
-$Form.controls.Add($Text)
-$TextMessage = New-Object system.windows.Forms.Label
-$TextMessage.Text = $SubMessage
-$TextMessage.TextAlign = 'MiddleLeft'
-$TextMessage.Height = 80
-$TextMessage.Width = $Screen.Bounds.Width / 4.25
-$TextXMessage = (($Form.Width - $Text.Width) / 10) * 6
-$TextMessage.Location = New-Object System.Drawing.Point($TextX,50)
-$TextMessage.Font = "Rubik,11"
-$TextMessage.ForeColor = "#CDCDCD"
-$timer1.Interval = 1000
-$timer1.add_Tick($timer1_Tick)
-$form.ResumeLayout()
-
-$Form.controls.Add($TextMessage)
-
- $width = 200
- $okBtn = New-Object System.Windows.Forms.Button
- $okBtn.Text = 'Ignore'
- $okbtn.BackColor = "#7b84f7"
- $okBtn.Width = $width
- $okBtn.Height = 35
- $okBtn.FlatStyle = 'Flat'
- $okBtn.FlatAppearance.BorderColor = '#7b84f7'
- $okBtn.Font = "Microsoft Sans Serif,11,style=Bold"
- $okBtn.ForeColor = "#25253f"
- $okBtnX = ($Form.Width / 2) - $width - 25
- $okBtnY = $Form.Height - $okBtn.Height - 25
- $okBtn.Location = New-Object System.Drawing.Point($okBtnX,$okBtnY)
- $okBtn.Add_Click({
- $Form.Close()
- })
- $Form.Controls.Add($okBtn)
- $cancelBtn = New-Object System.Windows.Forms.Button
- $cancelBtn.Text = 'Remind me in 1 hour'
- $cancelbtn.BackColor = "#7b84f7"
- $cancelBtn.Width = 200
- $cancelBtn.Height = 35
- $cancelBtn.FlatStyle = 'Flat'
- $cancelBtn.FlatAppearance.BorderColor = '#7b84f7'
- $cancelBtn.Font = "Microsoft Sans Serif,11,style=Bold"
- $cancelBtn.ForeColor = "#25253f"
- $cancelBtnX = ($Form.Width / 2)
- $cancelBtnY = $Form.Height - $cancelBtn.Height - 25
- $cancelBtn.Location = New-Object System.Drawing.Point($cancelBtnX,$cancelBtnY)
- $cancelBtn.Add_Click({
- [int]3300 + ([int]3599 - [int]$script:countdown.TotalSeconds) | Out-File $env:programdata\ParsecLoader\Time.txt
-
-
-Start-Process powershell.exe -ArgumentList "-windowstyle hidden -executionpolicy bypass -file $env:programdata\ParsecLoader\OneHour.ps1"
-
-$form.Close()
-
- })
- $Form.Controls.Add($cancelBtn)
-
-[void]$Form.ShowDialog()
-
-$Form.Dispose()
-
-}
-ShowDialog
\ No newline at end of file
diff --git a/PreInstall/TeamMachineSetup.ps1 b/PreInstall/TeamMachineSetup.ps1
deleted file mode 100644
index 6bb335b..0000000
--- a/PreInstall/TeamMachineSetup.ps1
+++ /dev/null
@@ -1,183 +0,0 @@
-[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
-Add-Type -AssemblyName System.Security
-
-$MeEndpoint = "https://kessel-api.parsecgaming.com/me"
-$userBinPath = "C:\ProgramData\Parsec\user.bin"
-$configtxtdir = 'C:\ProgramData\Parsec\config.txt'
-
-Class Post
-{
-[String]$name
-[String]$peer_id
-[int]$team_group_id
-[int]$user_id
-[string]$user_email
-[string]$key
-[string]$team_id
-[bool]$is_guest_access = $false
-
- [void] Fill(){
- $config = fetchUserData
- foreach ($line in $config) {
- $this."$($line.split("=")[0])" = $($line.split("=")[1])
- $this.peer_id = $(PeerIDGetter)
- if (!$this.name) {$this.name = $env:COMPUTERNAME}
- }
- }
-}
-
-
-function fetchUserData {
- $metadata = $(
- try {
- (Invoke-WebRequest -uri http://metadata.google.internal/computeMetadata/v1/instance/attributes/parsec -Method GET -header @{'metadata-flavor'='Google'} -TimeoutSec 5)
- $stream = "bytes"
- }
- catch {
- }
- Try {
- (Invoke-WebRequest -uri http://metadata.paperspace.com/meta-data/machine -TimeoutSec 5)
- $stream = "bytes"
- }
- catch {
- }
- Try {
- (Invoke-WebRequest -Uri "http://169.254.169.254/latest/user-data?" -TimeoutSec 5)
- $stream = "bytes"
- }
- catch {
- }
- Try {
- Invoke-Webrequest -Headers @{"Metadata"="true"} -Uri "http://169.254.169.254/metadata/instance/compute/userData?api-version=2021-01-01&format=text" -TimeoutSec 5
- $stream = "base64"
- }
- Catch {
- }
- )
- if ($metadata.StatusCode -eq 200) {
- if (($metadata.Content.Length) -gt 1) {
- if ($stream -eq "bytes") {
- [System.Text.Encoding]::ASCII.GetString($metadata.content).split(':')
- }
- elseif ($stream -eq "base64") {
- [System.Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($metadata.Content)).split(':')
- }
- }
- else {
- #no userdata found, exiting...
- Exit
- }
- }
- else {
- #no userdata found, exiting...
- Exit
- }
-}
-
-
-Function PeerIDGetter {
- $configfile = get-content $configtxtdir
- foreach ($configline in $configfile) {
- if ($configline -like 'app_host_peer_id*') {
- $peerid = $configline.Split(' = ')[-1]
- }
- }
- if ($peerid -eq $NULL) {$peerid = $NULL}
- return $peerid
- }
-
-
-Function WritePeerID {
-Param(
-$peer_id
-)
- $configfile = Get-Content $configtxtdir
- $File = Foreach ($configline in $configfile) {
- if ($configline -like 'app_host_peer_id*') {
- }
- Else {$configline}
- }
- $file += "app_host_peer_id=$peer_id"
- $file | Out-File $configtxtdir -Encoding ascii
- }
-
-Function WriteHostname {
-Param(
-$host_name
-)
- $configfile = Get-Content $configtxtdir
- $File = Foreach ($configline in $configfile) {
- if ($configline -like 'host_name*') {
- }
- Else {$configline}
- }
- $file += "host_name=$host_name"
- $file | Out-File $configtxtdir -Encoding ascii
- }
-
-
-Function SessionIDFromUserBin {
- if (Test-Path $userBinPath) {
- Add-Type -AssemblyName System.Security
- $scope = [System.Security.Cryptography.DataProtectionScope]::LocalMachine
- [byte[]]$binbyte = Get-Content $userBinPath -encoding byte
- $decryptuserBin = [System.Security.Cryptography.ProtectedData]::Unprotect($binbyte, $null, $scope)
- $parseuserbin = [System.Text.Encoding]::ASCII.GetString($decryptuserBin)
- return $parseuserbin.Split('"')[-2]
- }
- Else {
- return 0
- }
- }
-
-Function SessionIDToUserBin {
-Param (
-[string]$session
-)
- $userBinJson = @{
- "session_id" = $session
- } | ConvertTo-Json
- $scope = [System.Security.Cryptography.DataProtectionScope]::LocalMachine
- $input = [System.Text.UTF8Encoding]::UTF8.GetBytes($userBinJson)
- $userBin = [System.Security.Cryptography.ProtectedData]::Protect($input, $null, $scope)
- Set-Content $userBinPath -Value $userBin -Encoding Byte
- }
-
-
-Function PostTeamEndpoint {
-param (
-[post]$Params
-)
- $body = $Params | Select-Object * -ExcludeProperty key, team_id
- $TeamEndpointHeaders = @{
- "Content-Type" = "application/json"
- "X-Machine-Key" = $params.key
- }
- $TeamEndpointRequest = Invoke-RestMethod -Uri $TeamEndoint -Method POST -Headers $TeamEndpointHeaders -Body ($body | ConvertTo-Json)
- return $TeamEndpointRequest
-}
-
-
-Function GenerateMeData {
-param(
-[string]$Session
-)
- $SessionHeader = @{
- "Authorization" = "Bearer $Session"
- }
- $array = (Invoke-RestMethod -Uri $MeEndpoint -Method GET -Headers $SessionHeader).data
- $array
-}
-
-
-$RequestDetails = [Post]::new()
-$RequestDetails.Fill()
-$TeamEndoint = "https://kessel-api.parsecgaming.com/teams/{0}/machines" -f $RequestDetails.team_id
-$TeamsEndpointRequest = PostTeamEndpoint -params $RequestDetails
-WritePeerID -peer_id $TeamsEndpointRequest.data.host_peer_id
-WriteHostname -host_name $RequestDetails.name
-#$Details = GenerateMeData -Session $TeamsEndpointRequest.data.id
-SessionIDToUserBin -session $TeamsEndpointRequest.data.id
-
-Stop-Process -Name parsecd -Force
-
diff --git a/PreInstall/Template Assets/Template Assets/Music/Guess-Who.wav b/PreInstall/Template Assets/Template Assets/Music/Guess-Who.wav
new file mode 100644
index 0000000..b942a02
Binary files /dev/null and b/PreInstall/Template Assets/Template Assets/Music/Guess-Who.wav differ
diff --git a/PreInstall/Template Assets/Template Assets/Music/LoFi-Monday.wav b/PreInstall/Template Assets/Template Assets/Music/LoFi-Monday.wav
new file mode 100644
index 0000000..6b49088
Binary files /dev/null and b/PreInstall/Template Assets/Template Assets/Music/LoFi-Monday.wav differ
diff --git a/PreInstall/Template Assets/Template Assets/Videos/01caller.mp4 b/PreInstall/Template Assets/Template Assets/Videos/01caller.mp4
new file mode 100644
index 0000000..203f00e
Binary files /dev/null and b/PreInstall/Template Assets/Template Assets/Videos/01caller.mp4 differ
diff --git a/PreInstall/Template Assets/Template Assets/Videos/02caller.mp4 b/PreInstall/Template Assets/Template Assets/Videos/02caller.mp4
new file mode 100644
index 0000000..b4608a1
Binary files /dev/null and b/PreInstall/Template Assets/Template Assets/Videos/02caller.mp4 differ
diff --git a/PreInstall/Template Assets/Template Assets/Videos/03caller.mp4 b/PreInstall/Template Assets/Template Assets/Videos/03caller.mp4
new file mode 100644
index 0000000..f25e450
Binary files /dev/null and b/PreInstall/Template Assets/Template Assets/Videos/03caller.mp4 differ
diff --git a/PreInstall/Template Assets/Template Assets/Videos/04caller.mp4 b/PreInstall/Template Assets/Template Assets/Videos/04caller.mp4
new file mode 100644
index 0000000..ba1b4e8
Binary files /dev/null and b/PreInstall/Template Assets/Template Assets/Videos/04caller.mp4 differ
diff --git a/PreInstall/Template Assets/Template Assets/Videos/05caller.mp4 b/PreInstall/Template Assets/Template Assets/Videos/05caller.mp4
new file mode 100644
index 0000000..23e5e95
Binary files /dev/null and b/PreInstall/Template Assets/Template Assets/Videos/05caller.mp4 differ
diff --git a/PreInstall/Template Assets/Template Assets/Videos/06caller.mp4 b/PreInstall/Template Assets/Template Assets/Videos/06caller.mp4
new file mode 100644
index 0000000..d37b70f
Binary files /dev/null and b/PreInstall/Template Assets/Template Assets/Videos/06caller.mp4 differ
diff --git a/PreInstall/Template Assets/Template Assets/Videos/07caller.mp4 b/PreInstall/Template Assets/Template Assets/Videos/07caller.mp4
new file mode 100644
index 0000000..005a6ce
Binary files /dev/null and b/PreInstall/Template Assets/Template Assets/Videos/07caller.mp4 differ
diff --git a/PreInstall/Template Assets/Template Assets/Videos/08caller.mp4 b/PreInstall/Template Assets/Template Assets/Videos/08caller.mp4
new file mode 100644
index 0000000..bf1b926
Binary files /dev/null and b/PreInstall/Template Assets/Template Assets/Videos/08caller.mp4 differ
diff --git a/PreInstall/VBCABLE_A_Driver_Pack43.zip b/PreInstall/VBCABLE_A_Driver_Pack43.zip
new file mode 100644
index 0000000..fef7ce3
Binary files /dev/null and b/PreInstall/VBCABLE_A_Driver_Pack43.zip differ
diff --git a/PreInstall/VBCABLE_B_Driver_Pack43.zip b/PreInstall/VBCABLE_B_Driver_Pack43.zip
new file mode 100644
index 0000000..36f74ac
Binary files /dev/null and b/PreInstall/VBCABLE_B_Driver_Pack43.zip differ
diff --git a/PreInstall/VBCABLE_Driver_Pack43.zip b/PreInstall/VBCABLE_Driver_Pack43.zip
new file mode 100644
index 0000000..7f46ca8
Binary files /dev/null and b/PreInstall/VBCABLE_Driver_Pack43.zip differ
diff --git a/PreInstall/VBCable_CD_PackSetup.exe b/PreInstall/VBCable_CD_PackSetup.exe
new file mode 100644
index 0000000..b1b29b5
Binary files /dev/null and b/PreInstall/VBCable_CD_PackSetup.exe differ
diff --git a/PreInstall/WarningMessage.ps1 b/PreInstall/WarningMessage.ps1
deleted file mode 100644
index 8b303f4..0000000
--- a/PreInstall/WarningMessage.ps1
+++ /dev/null
@@ -1,24 +0,0 @@
-
-$CountSinceStart = 0
-Function CountSinceStart {$MinutesSinceStart = [int]3240 - $($(get-date) - $(Get-EventLog -LogName System -InstanceId 12 -Newest 1).TimeGenerated).TotalSeconds
-If ($MinutesSinceStart -lt 0) {
-$MinutesSinceStart = 0}
-Else{}
-
-Do {
-$CountSinceStart++
-Start-Sleep -s 1
-}
-Until
-(
-$CountSinceStart -ge $MinutesSinceStart
-)
-Start-Process powershell.exe -ArgumentList "-windowstyle hidden -executionpolicy bypass -file $env:programdata\ParsecLoader\ShowDialog.ps1"
-}
-
-
-CountSinceStart
-
-
-
-
diff --git a/PreInstall/hovercastWallpaper.jpg b/PreInstall/hovercastWallpaper.jpg
new file mode 100644
index 0000000..1269bb1
Binary files /dev/null and b/PreInstall/hovercastWallpaper.jpg differ
diff --git a/README.md b/README.md
index b6dc461..3cb0ad3 100644
--- a/README.md
+++ b/README.md
@@ -1,133 +1,40 @@
- ((//////
- #######//////
- ##########(/////.
- #############(/////,
- #################/////*
- #######/############////.
- #######/// ##########////
- #######/// /#######///
- #######/// #######///
- #######/// #######///
- #######//// #######///
- ########////// #######///
- ###########////#######///
- ####################///
- ################///
- *#############///
- ##########///
- ######(*
-
-
-
- ~Parsec Self Hosted Cloud Setup Script~
-
-
-### Parsec Cloud Preparation Tool
-This script sets up your cloud computer with a bunch of settings and drivers
-to make your life easier.
-
-It's provided with no warranty, so use it at your own risk.
-
-### Who this script is for:
-Home users who want to experiment with creating their own cloud server to play games.
-
-If you are an IT person or business owner who is looking to roll out Parsec enabled cloud desktops for your business, you must license a [Parsec Teams subscription](https://parsec.app/teams/).
-
-### Instructions:
-1. Set up your GPU accelerated cloud machine on Microsoft Azure, Amazon AWS, Google Cloud or Paperspace.
-2. Azure, AWS, Google: Log in via RDP and make note of the password - you'll need it later - Paperspace: Connect via Paperspace web app.
-3. Open Powershell on the cloud machine.
-4. Copy the below code and follow the instructions in the script - you'll see them in RED
-
-### Special notes for Google Cloud users:
-Do not select "Turn on Display Device" when setting up the instance, this will cause you to have a display that cannot be removed. Parsec can't use this display and you will need to start again from scratch if you create an instance with that option enabled.
+~~~ ,,,
+ ,,,,,,,,,,,,,,,,,
+ ,,,,,,,,,,,,,,,,,,,,,,,,,,
+ ,,,,,,,,,,,, ,,,,,,,,,,,,
+ ,,,,,,,,,,, ,,,,,,,,,,,,
+ .,,,,,,,,,,, .,,,,,,,,,,,
+ ,,,,,,,,,,,, ,,,,,, ,,,,,,,,,,,,
+ ,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,
+ ,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,, .,,,,,,,,,,,
+ ,,,,,,,, ,,,,,,,,,,,, ,,,,,,,,,,, ,,,,,,,,
+,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,, ,,,,,,
+ ,,,,,,,,,. ,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,, ,,,,,,,,,,
+ ,,,,,,,,,,,,,,,,,,,, ,,,,,,,,. ,,,,,,,,,,,,,,,,,,,,
+ (,,,,,,,,,,, , ,,,,,,,,,,,(
+ ,,(((((((,,,,,,,,,,,, ,,,,,,,,, .,,,,,,,,,,,((((((/,,
+ ,,,,,,,,* ,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,
+,,,,,, ,,,,,,,,,,, ,,,,,,,,,,,,,, ,,,,,
+ ,,,,,,,, ,,,,,,,,,,,. .,,,,,,,,,,, ,,,,,,,,
+ ,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,.
+ ,,,,,,,,,,,, .,,,,,,,,,,,,,. ,,,,,,,,,,,,
+ ,,,,,,,,,,, ,,,,, ,,,,,,,,,,,
+ ,,,,,,,,,,,. ,,,,,,,,,,,,
+ ,,,,,,,,,,,, ,,,,,,,,,,,,
+ ,,,,,,,,,,, ,,,,,,,,,,,
+ ,,,,,,,,,,,,,,,,,,,,,,,,,
+ ,,,,,,,,,,,,,,,,,
+ ,,,
+
+ ~Hovercast VCR Prep Script~
+~~~
### START HERE! Copy this code into Powershell (you may need to press enter at the end):
```
[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls"
-$ScriptWebArchive = "https://github.com/parsec-cloud/Parsec-Cloud-Preparation-Tool/archive/master.zip"
-$LocalArchivePath = "$ENV:UserProfile\Downloads\Parsec-Cloud-Preparation-Tool"
+$ScriptWebArchive = "https://github.com/Hovercast/VCR-Prep-Tool/archive/master.zip"
+$LocalArchivePath = "$ENV:UserProfile\Downloads\Hovercast-VCR-Prep-Tool"
(New-Object System.Net.WebClient).DownloadFile($ScriptWebArchive, "$LocalArchivePath.zip")
Expand-Archive "$LocalArchivePath.zip" -DestinationPath $LocalArchivePath -Force
-CD $LocalArchivePath\Parsec-Cloud-Preparation-Tool-master\ | powershell.exe .\Loader.ps1
-```
-
-This tool supports:
-
-### OS:
-Server 2016
-Server 2019
-
-### CLOUD SKU:
-AWS g3.4xLarge (Tesla M60)
-AWS g2.2xLarge (GRID K520)
-AWS g4dn.xLarge (Tesla T4 with vGaming driver)
-AWS g4ad.4xlarge (AMD Radeon Pro V520)
-Azure NV6 (Tesla M60)
-Paperspace P4000 (Quadro P4000)
-Paperspace P5000 (Quadro P5000)
-Google P100 VW (Tesla P100 with Virtual Workstation Driver)
-Google P4 VW (Tesla P4 with Virtual Workstation Driver)
-Google T4 VW (Tesla T4 with Virtual Workstation Driver)
-
-### RDP:
-Only use RDP to intially setup the instance. Parsec and RDP are not friendly with each other.
-
-### Special notes for Parsec Team customers:
-On AWS EC2 you can populate the instance userdata and the machine will automatically be provisioned as a team machine. Each value must be seperated by : as shown in the example.
-Available arguments:
-[type: string]key= (required)
-[type: string]team_id= (required)
-[type: string]name= (name of the host as you want it to appear in Parsec)
-[type: int]team_group_id= (group id of the group you want to assign this computer to)
-[type: int]user_id= (user id of the user you want to assign this computer to)
-[type: string]user_email= (email address of the user you want to assign this computer to)
-[type: boolean]is_guest_access= {true or false} (if you want this machine to have guest access enabled)
-
+CD $LocalArchivePath\Hovercast-VCR-Prep-Tool-master\ | powershell.exe .\HoverLoader.ps1
```
-example: team_id=1234:key=5678:name=mycoolhost:user_email=person@company.com:is_guest_access=true
-```
-
-### Issues:
-Q. Stuck at 24%
-A. Keep waiting, this installation takes a while.
-
-Q. My cloud machine is stuck at 1366x768
-A. Make sure you use GPU Update Tool to install the driver, and on Google Cloud you need to select the Virtual Workstation option when selecting an NVIDIA GPU when setting up an instance.
-
-Q. My Xbox 360 Controller isn't detected in Windows Server 2019
-A. You will need to visit Device Manager, and choose to Automatically Update "Virtual Xbox 360 Controller" listed under the Unknown Devices catagory in Device Manager.
-
-Q. I made a mistake when adding my AWS access key or I want to remove it on my G4DN Instance
-A. Open Powershell and type `Remove-AWSCredentialProfile -ProfileName ParsecGPUUpdate` - This will remove the profile from the machine.
-
-Q. What about GPU X or Cloud Server Y - when will they be supported?
-A. That's on you to test the script and describe the errors you see, do not create an issue in Github that does not contain an issue. Do not create an issue without any actual diagnosis information or error messages.
-
-Q. How do I change my wallpaper?
-A. Delete the Wallpaper registry value from HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System
-
-Q. I created an Amazon AMI using this script but when I create a machine from the AMI I can't select high display resolutions above 1366x768
-A. You didn't create the AMI correctly. You should search for "Run Sysprep with EC2Launch" on [this page](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/Creating_EBSbacked_WinAMI.html). It's important when using the tool, you select"
-Shutdown with sysprep". When the instance has shutdown/stopped after running the AWS tool, then you can create the image. If you must turn on the instance again, you should run the sysprep tool again and shutdown.
-
-Q. I connect to my cloud machine with Parsec and see a Parsec logo on the desktop, and the Windows Task bar, but when I click icons in the task bar, nothing happens.
-A. There is another screen on the cloud machine that Parsec can't capture, that is set to your default/primary display. Do the following to switch the primary display to the screen that Parsec can capture.
-
-1. Connect to the host via Parsec
-2. Press CTRL + Shift + i (this will enter into immersive mode)
-3. Press Windows Key + P
-4. Press Down Arrow, Down Arrow, Enter.
-
-Q. I want to run this script automatically without user interraction.
-A. It's possible to do so but you will need to figure out how to install the GPU Driver on your own. The below code will do everything but install the GPU Driver.
-```
-[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls"
-$ScriptWebArchive = "https://github.com/parsec-cloud/Parsec-Cloud-Preparation-Tool/archive/master.zip"
-$LocalArchivePath = "$ENV:UserProfile\Downloads\Parsec-Cloud-Preparation-Tool"
-(New-Object System.Net.WebClient).DownloadFile($ScriptWebArchive, "$LocalArchivePath.zip")
-Expand-Archive "$LocalArchivePath.zip" -DestinationPath $LocalArchivePath -Force
-CD $LocalArchivePath\Parsec-Cloud-Preparation-Tool-master\PostInstall
-powershell.exe .\PostInstall.ps1 -DontPromptPasswordUpdateGPU
-```
-
diff --git a/jackInstaller b/jackInstaller
new file mode 100644
index 0000000..e69de29