NetDesk 1.5.0 — source release

This commit is contained in:
NetDesk committed 2026-10-18 02:02:46 +00:00
commit 40318aafdd
227 files changed
+80798

No files matched your search

+129
View File
@@ -0,0 +1,129 @@
<#
NetDesk by Akronlogic -- PORTABLE build + staging script.
Builds the release viewer (cargo build --release -p netdesk-viewer) with the
MinGW GNU toolchain on PATH, then assembles a self-contained portable folder
(NetDesk.exe + NetDeskHost.exe host engine + the 3 MinGW runtime DLLs +
README) and zips it. No install needed -- the user unzips it anywhere and
runs NetDesk.exe from the folder. One app = full host + remote-control viewer.
Outputs land in packaging\dist\ :
NetDesk-Portable\ (staging folder, also consumed by the installer)
NetDesk-Portable-win64.zip (the portable artifact)
Usage:
powershell -ExecutionPolicy Bypass -File build-portable.ps1
powershell -ExecutionPolicy Bypass -File build-portable.ps1 -SkipBuild # reuse existing exe
#>
[CmdletBinding()]
param(
[string]$MingwBin = "C:\mingw-netdesk\mingw64\bin",
[string]$CargoBin = (Join-Path $env:USERPROFILE ".cargo\bin"),
[switch]$SkipBuild
)
$ErrorActionPreference = "Stop"
# ---- paths -----------------------------------------------------------------
$PkgDir = $PSScriptRoot
$RootDir = Split-Path -Parent $PkgDir
$DistDir = Join-Path $PkgDir "dist"
$StageDir = Join-Path $DistDir "NetDesk-Portable"
$ZipPath = Join-Path $DistDir "NetDesk-Portable-win64.zip"
$ExeSrc = Join-Path $RootDir "target\x86_64-pc-windows-gnu\release\netdesk-viewer.exe"
$Dlls = @("libstdc++-6.dll", "libgcc_s_seh-1.dll", "libwinpthread-1.dll")
Write-Host "=== NetDesk portable build (Akronlogic) ===" -ForegroundColor Cyan
Write-Host "root : $RootDir"
Write-Host "dist : $DistDir"
# ---- 1. build --------------------------------------------------------------
if (-not $SkipBuild) {
if (-not (Test-Path (Join-Path $MingwBin "gcc.exe"))) {
throw "MinGW toolchain not found at '$MingwBin' (no gcc.exe). Pass -MingwBin <path> or install it."
}
$env:PATH = "$MingwBin;$CargoBin;$env:PATH"
Write-Host "`n[1/4] cargo build --release -p netdesk-viewer" -ForegroundColor Yellow
Push-Location $RootDir
try {
& cargo build --release -p netdesk-viewer --target x86_64-pc-windows-gnu
if ($LASTEXITCODE -ne 0) { throw "cargo build failed (exit $LASTEXITCODE)" }
} finally {
Pop-Location
}
} else {
Write-Host "`n[1/4] -SkipBuild set: reusing existing binary" -ForegroundColor Yellow
}
if (-not (Test-Path $ExeSrc)) { throw "viewer binary not found: $ExeSrc" }
# ---- 2. assemble staging folder -------------------------------------------
Write-Host "[2/4] assembling portable folder: $StageDir" -ForegroundColor Yellow
if (Test-Path $StageDir) { Remove-Item $StageDir -Recurse -Force }
New-Item -ItemType Directory -Path $StageDir -Force | Out-Null
# viewer renamed to the product name
Copy-Item $ExeSrc (Join-Path $StageDir "NetDesk.exe") -Force
# the 3 MinGW runtime DLLs beside the exe
foreach ($d in $Dlls) {
$src = Join-Path $MingwBin $d
if (-not (Test-Path $src)) { throw "missing runtime DLL: $src" }
Copy-Item $src (Join-Path $StageDir $d) -Force
}
# NOTE: NetDesk is now ONE pure-Rust binary. Start Service runs the native host
# engine (DXGI capture + hardware H.264 + SendInput) IN-PROCESS, so there is no
# separate NetDeskHost.exe to bundle any more — NetDesk.exe + the 3 runtime DLLs
# are the whole app (host panel + remote-control viewer).
# ---- 3. README.txt ---------------------------------------------------------
# Built from an array of lines (no here-string: Windows PowerShell 5.1
# mis-parses here-strings in LF-only script files). Joined with CRLF and
# written BOM-less so Notepad and every editor render it cleanly.
Write-Host "[3/4] writing README.txt" -ForegroundColor Yellow
$readmeLines = @(
'NetDesk -- Portable Edition (Full Client)',
'Developed by Akronlogic (https://akronlogic.com)',
'',
'NetDesk is ONE unified app. It is both the HOST (let someone control this PC)',
'and the remote-control VIEWER (control another PC) -- a full client, like',
'TeamViewer. Open it, and the home screen is your host panel; enter a Partner',
'ID to connect out and it becomes the viewer.',
'',
'HOW TO RUN',
' 1. Unzip this folder anywhere you like (Desktop, a USB stick, etc.).',
' 2. Double-click NetDesk.exe.',
' There is nothing to install and no admin rights are required. Keep every',
' file in this folder together -- NetDesk.exe needs the three *.dll files',
' beside it to run.',
'',
'WHAT''S IN THIS FOLDER',
' NetDesk.exe The NetDesk full client (host engine + viewer, all in one).',
' libstdc++-6.dll MinGW C++ runtime (required).',
' libgcc_s_seh-1.dll MinGW GCC runtime (required).',
' libwinpthread-1.dll MinGW threading runtime (required).',
' README.txt This file.',
'',
'NOTES',
' * Connects to the NetDesk server (netdesk.space) using the existing protocol.',
' * To remove NetDesk, just delete this folder. Nothing is written elsewhere.',
' * Prefer a Start Menu entry / Desktop shortcut + uninstaller? Use the',
' installer edition (NetDesk-Setup-win64.exe) instead.',
'',
'(c) Akronlogic. All rights reserved.'
)
$readme = ($readmeLines -join "`r`n") + "`r`n"
[System.IO.File]::WriteAllText((Join-Path $StageDir "README.txt"), $readme, (New-Object System.Text.UTF8Encoding($false)))
# ---- 4. zip ----------------------------------------------------------------
Write-Host "[4/4] zipping -> $ZipPath" -ForegroundColor Yellow
if (Test-Path $ZipPath) { Remove-Item $ZipPath -Force }
Compress-Archive -Path (Join-Path $StageDir "*") -DestinationPath $ZipPath -CompressionLevel Optimal
$zi = Get-Item $ZipPath
Write-Host "`nPortable build complete." -ForegroundColor Green
Write-Host (" zip : {0}" -f $zi.FullName)
Write-Host (" size : {0:N0} bytes ({1:N2} MB)" -f $zi.Length, ($zi.Length/1MB))
Write-Host (" stage : {0}" -f $StageDir)