mirror of
https://github.com/techahold/rustdeskinstall.git
synced 2024-06-13 09:24:33 +02:00
little refactoring:
- get latest client from github - replace $username and use $env:AppData (installations via RDP will fail otherwise) - use $env:Temp instead of C:\temp (there are rare cases when windows is not installed on c: plus we already have an environment variable defined for this) - use $env:ProgramFiles instead of hardcoded path (see $env:Temp) - use a function to output ID and Password - use a variable for content of RustDesk2.toml file - use a longer password (8 chars is definitely not enough)
This commit is contained in:
parent
bd6d09319e
commit
b1bcafade9
|
@ -2,77 +2,117 @@ $ErrorActionPreference= 'silentlycontinue'
|
|||
#Requires -RunAsAdministrator
|
||||
# Replace wanipreg and keyreg with the relevant info for your install. IE wanipreg becomes your rustdesk server IP or DNS and keyreg becomes your public key.
|
||||
|
||||
If (!(test-path "c:\temp")) {
|
||||
New-Item -ItemType Directory -Force -Path "c:\temp" > null
|
||||
$restdesk_url = 'https://github.com/rustdesk/rustdesk/releases/latest'
|
||||
$request = [System.Net.WebRequest]::Create($restdesk_url)
|
||||
$response = $request.GetResponse()
|
||||
$realTagUrl = $response.ResponseUri.OriginalString
|
||||
$restdesk_version = $realTagUrl.split('/')[-1].Trim('v')
|
||||
Write-Output("Installing RestDesk version $restdesk_version")
|
||||
|
||||
function OutputIDandPW([String]$rustdesk_id, [String]$rustdesk_pw) {
|
||||
Write-Output("######################################################")
|
||||
Write-Output("# #")
|
||||
Write-Output("# CONNECTION PARAMETERS: #")
|
||||
Write-Output("# #")
|
||||
Write-Output("######################################################")
|
||||
Write-Output("")
|
||||
Write-Output(" RustDesk-ID: $rustdesk_id")
|
||||
Write-Output(" RustDesk-Password: $rustdesk_pw")
|
||||
}
|
||||
cd c:\temp
|
||||
|
||||
If (!(test-path "C:\Program Files\Rustdesk\RustDesk.exe")) {
|
||||
cd c:\temp
|
||||
If (!(Test-Path $env:Temp)) {
|
||||
New-Item -ItemType Directory -Force -Path $env:Temp > null
|
||||
}
|
||||
|
||||
Invoke-WebRequest https://github.com/rustdesk/rustdesk/releases/download/1.1.9/rustdesk-1.1.9-windows_x64.zip -Outfile rustdesk.zip
|
||||
cd $env:Temp
|
||||
|
||||
expand-archive rustdesk.zip
|
||||
cd rustdesk
|
||||
start .\rustdesk-1.1.9-putes.exe --silent-install
|
||||
If (!(Test-Path "C:\Program Files\Rustdesk\RustDesk.exe")) {
|
||||
|
||||
# Set URL Handler
|
||||
New-Item -Path "HKLM:\SOFTWARE\Classes\RustDesk" > null
|
||||
Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\RustDesk" -Name "(Default)" -Value "URL:RustDesk Protocol" > null
|
||||
New-ItemProperty -Path "HKLM:\SOFTWARE\Classes\RustDesk" -Name "URL Protocol" -Type STRING > null
|
||||
New-Item -Path "HKLM:\SOFTWARE\Classes\RustDesk\DefaultIcon" > null
|
||||
Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\RustDesk\DefaultIcon" -Name "(Default)" -Value "RustDesk.exe,0" > null
|
||||
New-Item -Path "HKLM:\SOFTWARE\Classes\RustDesk\shell" > null
|
||||
New-Item -Path "HKLM:\SOFTWARE\Classes\RustDesk\shell\open" > null
|
||||
New-Item -Path "HKLM:\SOFTWARE\Classes\RustDesk\shell\open\command" > null
|
||||
Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\RustDesk\shell\open\command" -Name "(Default)" -Value '"C:\Program Files\RustDesk\RustDeskURLLauncher.exe" "%1"' > null
|
||||
New-Item "C:\Program Files\RustDesk\urlhandler.ps1" > null
|
||||
Set-Content "C:\Program Files\RustDesk\urlhandler.ps1" "`$url_handler = `$args[0]`n`$rustdesk_id = `$url_handler -creplace '(?s)^.*\:',''`nStart-Process -FilePath 'C:\Program Files\RustDesk\rustdesk.exe' -ArgumentList ""--connect `$rustdesk_id""" > null
|
||||
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force > null
|
||||
Install-Module ps2exe -Force > null
|
||||
Invoke-ps2exe "C:\Program Files\RustDesk\urlhandler.ps1" "C:\Program Files\RustDesk\RustDeskURLLauncher.exe" > null
|
||||
Remove-Item "C:\Program Files\RustDesk\urlhandler.ps1" > null
|
||||
cd $env:Temp
|
||||
|
||||
Start-sleep -s 20
|
||||
Invoke-WebRequest https://github.com/rustdesk/rustdesk/releases/download/$restdesk_version/rustdesk-$restdesk_version-windows_x64.zip -Outfile rustdesk.zip
|
||||
|
||||
Expand-Archive rustdesk.zip
|
||||
cd rustdesk
|
||||
start .\rustdesk-$restdesk_version-putes.exe --silent-install
|
||||
|
||||
# Set URL Handler
|
||||
New-Item -Path "HKLM:\SOFTWARE\Classes\RustDesk" > null
|
||||
Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\RustDesk" -Name "(Default)" -Value "URL:RustDesk Protocol" > null
|
||||
New-ItemProperty -Path "HKLM:\SOFTWARE\Classes\RustDesk" -Name "URL Protocol" -Type STRING > null
|
||||
|
||||
New-Item -Path "HKLM:\SOFTWARE\Classes\RustDesk\DefaultIcon" > null
|
||||
Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\RustDesk\DefaultIcon" -Name "(Default)" -Value "RustDesk.exe,0" > null
|
||||
|
||||
New-Item -Path "HKLM:\SOFTWARE\Classes\RustDesk\shell" > null
|
||||
New-Item -Path "HKLM:\SOFTWARE\Classes\RustDesk\shell\open" > null
|
||||
New-Item -Path "HKLM:\SOFTWARE\Classes\RustDesk\shell\open\command" > null
|
||||
$rustdesklauncher = '"' + $env:ProgramFiles + '\RustDesk\RustDeskURLLauncher.exe" %1"'
|
||||
Set-ItemProperty -Path "HKLM:\SOFTWARE\Classes\RustDesk\shell\open\command" -Name "(Default)" -Value $rustdesklauncher > null
|
||||
|
||||
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force > null
|
||||
Install-Module ps2exe -Force > null
|
||||
|
||||
$urlhandler_ps1 = @"
|
||||
`$url_handler = `$args[0]
|
||||
`$rustdesk_id = `$url_handler -creplace '(?s)^.*\:',''
|
||||
Start-Process -FilePath 'C:\Program Files\RustDesk\rustdesk.exe' -ArgumentList "--connect `$rustdesk_id"
|
||||
"@
|
||||
|
||||
New-Item "$env:ProgramFiles\RustDesk\urlhandler.ps1" > null
|
||||
Set-Content "$env:ProgramFiles\RustDesk\urlhandler.ps1" $urlhandler_ps1 > null
|
||||
Invoke-Ps2Exe "$env:ProgramFiles\RustDesk\urlhandler.ps1" "$env:ProgramFiles\RustDesk\RustDeskURLLauncher.exe" > null
|
||||
Remove-Item "$env:ProgramFiles\RustDesk\urlhandler.ps1" > null
|
||||
|
||||
Start-Sleep -s 20
|
||||
}
|
||||
|
||||
# Write config
|
||||
$username = ((Get-WMIObject -ClassName Win32_ComputerSystem).Username).Split('\')[1]
|
||||
New-Item C:\Users\$username\AppData\Roaming\RustDesk\config\RustDesk2.toml
|
||||
Set-Content C:\Users\$username\AppData\Roaming\RustDesk\config\RustDesk2.toml "rendezvous_server = 'wanipreg' `nnat_type = 1`nserial = 0`n`n[options]`ncustom-rendezvous-server = 'wanipreg'`nkey = 'keyreg'`nrelay-server = 'wanipreg'`napi-server = 'https://wanipreg'"
|
||||
$RustDesk2_toml = @"
|
||||
rendezvous_server = 'wanipreg'
|
||||
nat_type = 1
|
||||
serial = 0
|
||||
|
||||
[options]
|
||||
custom-rendezvous-server = 'wanipreg'
|
||||
key = keyreg'
|
||||
relay-server = 'wanipreg'
|
||||
api-server = 'https://wanipreg'
|
||||
enable-audio = 'N'
|
||||
"@
|
||||
|
||||
New-Item $env:AppData\RustDesk\config\RustDesk2.toml
|
||||
Set-Content $env:AppData\RustDesk\config\RustDesk2.toml $RustDesk2_toml
|
||||
New-Item C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk2.toml
|
||||
Set-Content C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk2.toml "rendezvous_server = 'wanipreg' `nnat_type = 1`nserial = 0`n`n[options]`ncustom-rendezvous-server = 'wanipreg'`nkey = 'keyreg'`nrelay-server = 'wanipreg'`napi-server = 'https://wanipreg'"
|
||||
Set-Content C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk2.toml $RustDesk2_toml
|
||||
|
||||
$rdpass = (-join ((65..90) + (97..122) | Get-Random -Count 8 | % {[char]$_}))
|
||||
start "C:\Program Files\RustDesk\RustDesk.exe" "--password $rdpass"
|
||||
$random_pass = (-join ((65..90) + (97..122) | Get-Random -Count 24 | % {[char]$_}))
|
||||
start "C:\Program Files\RustDesk\RustDesk.exe" "--password $random_pass"
|
||||
|
||||
Start-sleep -s 5
|
||||
Start-Sleep -s 5
|
||||
|
||||
# Get RustDesk ID
|
||||
|
||||
If (!("C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk.toml")) {
|
||||
$username = ((Get-WMIObject -ClassName Win32_ComputerSystem).Username).Split('\')[1]
|
||||
$rustid=(Get-content C:\Users\$username\AppData\Roaming\RustDesk\config\RustDesk.toml | Where-Object { $_.Contains("id") })
|
||||
$rustid = $rustid.Split("'")[1]
|
||||
$rustdesk_id = (Get-Content $env:AppData\RustDesk\config\RustDesk.toml | Where-Object { $_.Contains("id") })
|
||||
$rustdesk_id = $rustdesk_id.Split("'")[1]
|
||||
$rustdesk_pw = (Get-Content $env:AppData\RustDesk\config\RustDesk.toml | Where-Object { $_.Contains("password") })
|
||||
$rustdesk_pw = $rustdesk_pw.Split("'")[1]
|
||||
Write-Output("Config file found in user folder")
|
||||
|
||||
$rustpword = (Get-content C:\Users\$username\AppData\Roaming\RustDesk\config\RustDesk.toml | Where-Object { $_.Contains("password") })
|
||||
$rustpword = $rustpword.Split("'")[1]
|
||||
Write-output "$rustid"
|
||||
Write-output "$rustpword"
|
||||
Write-output "Config file found in user folder"
|
||||
}
|
||||
else {
|
||||
$rustid=(Get-content C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk.toml | Where-Object { $_.Contains("id") })
|
||||
$rustid = $rustid.Split("'")[1]
|
||||
OutputIDandPW $rustdesk_id $rustdesk_pw
|
||||
|
||||
} Else {
|
||||
$rustdesk_id = (Get-Content C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk.toml | Where-Object { $_.Contains("id") })
|
||||
$rustdesk_id = $rustdesk_id.Split("'")[1]
|
||||
$rustdesk_pw = (Get-Content C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk.toml | Where-Object { $_.Contains("password") })
|
||||
$rustdesk_pw = $rustdesk_pw.Split("'")[1]
|
||||
Write-Output "Config file found in windows service folder"
|
||||
|
||||
OutputIDandPW $rustdesk_id $rustdesk_pw
|
||||
|
||||
$rustpword = (Get-content C:\Windows\ServiceProfiles\LocalService\AppData\Roaming\RustDesk\config\RustDesk.toml | Where-Object { $_.Contains("password") })
|
||||
$rustpword = $rustpword.Split("'")[1]
|
||||
Write-output "$rustid"
|
||||
Write-output "$rustpword"
|
||||
Write-output "Config file found in windows service folder"
|
||||
}
|
||||
|
||||
Start-sleep -s 10
|
||||
Start-Sleep -s 10
|
||||
|
||||
taskkill /IM "rustdesk.exe" /F > null
|
||||
net start rustdesk > null
|
||||
|
|
Loading…
Reference in New Issue
Block a user