Per-user installers

7-Zip

Download

7-Zip needs to be installed in two parts.

First, the standalone 7zr.exe binary should be downloaded. This can stay in the Downloads directory as it will only be needed once.

Second, the 64-bit Windows x64 installer (.exe) should be downloaded. This should be extracted using the previous standalone executable.

mkdir %LOCALAPPDATA%\Programs\7zip
cd %LOCALAPPDATA%\Programs\7zip
%USERPROFILE%\Downloads\7zr.exe x %USERPROFILE%\Downloads\7z2201-x64.exe

The 7zip path can then be added to the %PATH% environment variable.

Firefox

Download

Use the non-MSI installer for per-user installation.

Git

Download

Git can install to a user directory when run without admin permissions.

Go Mono fonts

Download

Download and extract the TTF files from the .tar.gz file, or checkout the binaries from Git:

git clone https://go.googlesource.com/image

The font files are in image/font/gofont/ttfs.

Select all the .ttf files, right-click, and select Install.

KeePassXC

Download

ZIP version can run from any directory.

Requires the Visual C++ Redistributable to be downloaded and extracted.

The Wix binaries ZIP should be downloaded and extracted. Then the Wix dark.exe command should be used to extract the VC_redist.x64.exe file.

dark.exe -x vcruntime VC_redist.x64.exe

Then open vcruntime\AttachedContainer\packages\vcRuntimeMinimum_amd64\cab1.cab and copy all the files into the KeePassXC directory.

Microsoft Terminal

Download

The .msixbundle will install without admin permissions.

mRemoteNG

Download

ZIP version can run from any directory.

MSYS2 (development environment)

Download

Download and run the msys2-base-x86_64-*.sfx.exe installer. Install to a directory that you have write access to, e.g. under %USERPROFILE%\msys64. Note: the installer will extract to .\msys64 by default.

Start the MSYS2 UCRT64 environment by running ucrt64.exe. UCRT64 is Microsoft's Universal C Runtime Library and is the preferred build environment on modern (Windows 10 and above) Windows operating systems. For more information, see Environments.

Update the MSYS2 environment with pacman -Syu. You might be prompted to terminate the environment to complete the installation of all the updates. Relaunch ucrt64.exe if necessary, and install the toolchain package group with pacman -S mingw-w64-ucrt-x86_64-toolchain. This will install all of the build tools including gcc, g++, and mingw32-make, plus the libstdc and libstdc++ libraries.

Optionally, add %USERPROFILE%\msys64\ucrt64\bin to the %PATH% environment variable to get access to the tools from the normal Windows Command Prompt or PowerShell.

A profile can be added to Windows Terminal with the following settings:

Name: MSYS2 UCRT64
Command line: %USERPROFILE%\msys64\msys2_shell.cmd -defterm -here -no-start -ucrt64
Starting directory: %USERPROFILE%\msys64\home\%USERNAME%
Icon: %USERPROFILE%\msys64\ucrt64.ico

PuTTY

Download

The Windows built-in ssh-agent needs admin to be started, so we have to use PAGEANT.EXE instead.

The ZIP file can be extracted to any directory.

Running PAGEANT.EXE --openssh-config %USERPROFILE%\.ssh\config.d\pageant.config will write an OpenSSH config file with the path to the pipe used for communication. This can be used by the built-in Windows OpenSSH client by adding an Include config.d\pageant.config line to %USERPROFILE%\.ssh\config.

Vim

Download

The installer can run without admin permissions, or the ZIP version can run from any directory.

The following can be put into a batch file named vim.cmd in the %PATH% to make it easier to launch without pulling in all the other programs:

@ECHO OFF
"%LOCALAPPDATA%\Programs\vim\vim90\vim.exe" %*

WinCompose

Download

Use the NoInstall ZIP file.

Use the following PowerShell one-liner to download the latest Compose file from the libX11 project to %USERPROFILE%\.XCompose. You can then disable all of the Sequences on the Composing tab to use only these sequences.

[IO.File]::WriteAllLines("$env:USERPROFILE\.XCompose", [string]((Invoke-WebRequest "https://gitlab.freedesktop.org/xorg/lib/libx11/-/raw/master/nls/en_US.UTF-8/Compose.pre").Content).replace('XCOMM', '#'))