Skip to content

Instantly share code, notes, and snippets.

@thenextman
Created April 17, 2024 16:29
Show Gist options
  • Save thenextman/2061ada9461f1f7a217ec84ffc5e79d1 to your computer and use it in GitHub Desktop.
Save thenextman/2061ada9461f1f7a217ec84ffc5e79d1 to your computer and use it in GitHub Desktop.
Create portable RDM 2024.x installation
function BootstrapPortableRDM {
<#
.SYNOPSIS
Bootstrap a portable installation of RDM 2024.x
.DESCRIPTION
You must provide the zipped .NET Runtime and .NET Windows Desktop Runtime. The
zip releases are not available on the Microsoft download page but can be found
in the project releases at https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/8.0/releases.json.
Additionally you must provide the zipped Remote Desktop Manager and a location to
create the portable package root.
A launch script will be generated in the packaged `RDM` directory.
.EXAMPLE
$PackageRoot=Join-Path $Env:USERPROFILE "portable"
./setup-environment.ps1 -DotNetRuntimeArchiveFilePath "dotnet-runtime-8.0.4-win-x64.zip" -DotNetDesktopRuntimeArchiveFilePath "windowsdesktop-runtime-8.0.4-win-x64.zip" -RemoteDesktopManagerArchiveFilePath "Devolutions.RemoteDesktopManager.Bin.2024.1.25.0.zip" -PackageRootDirectory $PackageRoot
& $(Join-Path $PackageRoot "RDM/launch-rdm.ps1")
#>
param(
[Parameter(Mandatory, HelpMessage="The .NET Runtime .zip archive")]
[string] $DotNetRuntimeArchiveFilePath,
[Parameter(Mandatory, HelpMessage="The .NET Windows Desktop Runtime .zip archive")]
[string] $DotNetDesktopRuntimeArchiveFilePath,
[Parameter(Mandatory, HelpMessage="The Remote Desktop Manager .zip archive")]
[string] $RemoteDesktopManagerArchiveFilePath,
[Parameter(Mandatory, HelpMessage="The root packaging folder")]
[string] $PackageRootDirectory
)
$ErrorActionPreference = "stop"
$DotNetRuntimeArchiveFilePath = Resolve-Path $DotNetRuntimeArchiveFilePath
$DotNetDesktopRuntimeArchiveFilePath= Resolve-Path $DotNetDesktopRuntimeArchiveFilePath
$RemoteDesktopManagerArchiveFilePath= Resolve-Path $RemoteDesktopManagerArchiveFilePath
New-Item -Path $PackageRootDirectory -Type Directory -Force
Push-Location $PackageRootDirectory
Expand-Archive $RemoteDesktopManagerArchiveFilePath -DestinationPath "RDM"
Expand-Archive $DotNetRuntimeArchiveFilePath -DestinationPath "dotnet"
Expand-Archive $DotNetDesktopRuntimeArchiveFilePath -DestinationPath "dotnet"
$LaunchScript = @'
$DotNetRoot = Join-Path $(Get-Item $PSScriptRoot).Parent.FullName "dotnet"
$Env:DOTNET_ROOT=$DotNetRoot
$RdmDir = Join-Path $(Get-Item $PSScriptRoot).Parent.FullName "RDM"
$Rdm = Join-Path $RdmDir "RemoteDesktopManager.exe"
& "$Rdm"
'@
$LaunchScript | Out-File $(Join-Path RDM "launch-rdm.ps1")
Pop-Location
}
BootstrapPortableRDM @args
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment