MAIN MENU

Open Source

Tools we built for our own pipelines

Portable, cross-platform command-line utilities for packaging, PowerShell, and code signing. Free and open source — grab them on GitHub and drop them straight into your scripts.

pinget

C# · Rust · PowerShell

WinGet, made fully portable

A complete, portable WinGet — no MSIX, no Desktop App Installer, and it even runs on Linux. It works just like the original winget, with extra muscle for scripting: pull manifest metadata with clean, parsable output, and run it in a system context where the native client can't. Comes with a PowerShell module too. Written entirely in C# and Rust, ported from the original C++ winget-cli.

View on GitHub pinget
pinget

# CLI - parsable output for scripts

PS> pinget show --id Devolutions.Gateway --output json

# PowerShell module — returns objects

PS> Find-PingetPackage -Id Devolutions.Gateway

multi-pwsh

Rust · PowerShell

Every PowerShell version, side by side

Install multiple PowerShell versions at once, each reachable through its own alias executable — pwsh-lts, pwsh-7.4, and more. Then go further with PowerShell virtual environments, just like Python's, complete with import/export. Testing scripts against an exact version and its dependencies — and reproducing that setup anywhere — finally becomes effortless.

View on GitHub multi-pwsh
multi-pwsh
PS> multi-pwsh install lts
PS> multi-pwsh install 7.4
PS> pwsh-lts --version

PowerShell 7.6.0

psign

Rust · PowerShell

Cross-platform code signing

A fully portable signtool.exe replacement that runs on Linux, covering every format you sign in practice. One tool that also does what you'd reach for AzureSignTool, Azure Artifact Signing, dotnet sign, and rdpsign to do — no Windows required. Available as a PowerShell module as well.

Signs .exe .dll .sys .msi .msp .cab .cat .msix .appx .appinstaller .nupkg .snupkg .vsix .zip .rdp .ps1 .psm1 .psd1
View on GitHub psign
psign-tool

# CLI — signtool-compatible, runs on Linux

PS> psign-tool sign /fd SHA256 app.msix

# PowerShell module

PS> Set-PsignSignature -LiteralPath .\app.msix -Certificate $cert

cirup

Rust

Localization files, under control

Diff, merge, convert, and sort localization resources straight from the command line. Under the hood it loads your strings into SQLite virtual tables, so finding missing keys, merging translations, or gating a build in CI is fast and fully scriptable. Built in Rust, and shipped as a dotnet tool and an MSBuild task.

Formats .resx .json .restext
View on GitHub cirup
cirup

# fail CI when a translation is missing keys

PS> cirup --check file-diff Resources.resx Resources.fr.resx

# convert .resx to .json

PS> cirup file-convert Resources.resx strings.json