Auf Windows hat Emacs eine ruhige, gut gepflegte Heimat — die offiziellen Windows-Builds vom GNU-Projekt werden seit Jahren zuverlässig veröffentlicht. Dazu kommen drei Paketmanager-Wege (Chocolatey, Scoop und Microsofts winget) sowie ein vollwertiges POSIX-Setup über MSYS2 für alle, die Emacs eng mit Unix-Tooling kombinieren wollen. Dieser Artikel zeigt jede der fünf Varianten Schritt für Schritt, klärt die für Windows typischen Fallen rund um HOME-Variable, Native-Compilation und Antivirus — und sortiert, wann welcher Weg sinnvoll ist.

Die Wege auf einen Blick

Es gibt unter Windows keinen einzelnen „richtigen" Weg, Emacs zu installieren — alle nachfolgenden Varianten liefern dieselbe Editor-Codebasis. Sie unterscheiden sich in der Update-Mechanik, in den Berechtigungen (Admin oder nicht) und darin, wie eng die Installation mit dem restlichen System verzahnt ist.

VarianteQuelleStärkeWann sinnvoll
Offizielles Buildgnu.org / GNU-Mirrordirekter Bezug, signiert von Corwin Brustwer einen Build ohne Zwischen-Layer will
Chocolateycommunity.chocolatey.orgAuto-Update über choco upgrade, system-weitWorkstations mit zentralem Software-Management
Scoopscoop bucket extrasInstallation ins Benutzerprofil, keine Admin-RechteEntwickler-Setups ohne lokale Adminrechte
wingetMicrosoft-eigener Paketmanagerbereits an Bord auf Windows 11, kürzester Einzeilerwer ohne Drittanbieter-Manager auskommen will
MSYS2 / MINGWpacman im MSYS2-UniversumUnix-Tooling, einfache Native-Comp-ToolchainPower-User mit Bash, Git und Compiler-Workflow

Die kurze Empfehlung lautet: Offizielles Build oder Scoop für die meisten Einsteiger — beides ohne Adminrechte einsetzbar, klar verortet und gut zu deinstallieren. Wer bereits Chocolatey oder winget im Einsatz hat, bleibt konsequent dabei. MSYS2 lohnt sich, wenn Emacs als Teil eines vollwertigen Unix-ähnlichen Workflows laufen soll.

Variante A — Offizielles Build von gnu.org

Das vom GNU-Projekt selbst veröffentlichte Windows-Build liegt unter ftp.gnu.org/gnu/emacs/windows/ bereit (sowie auf jedem GNU-Mirror) und wird von Corwin Brust gebaut und signiert. Es gibt zwei Formate: einen Installer (emacs-XX-installer.exe) und ein portables ZIP (emacs-XX.zip).

Schritt 1 — Herunterladen

Im Verzeichnis findest du pro Major-Version ein eigenes Unterverzeichnis (z. B. emacs-30/). Lade dort die jeweils aktuellste Datei für 64-Bit:

text Typische Dateinamen
emacs-30.2-installer.exe    # geführter Installer
emacs-30.2.zip              # portables ZIP-Archiv
emacs-30.2.zip.sig          # GPG-Signatur (optional verifizieren)

Schritt 2 — Installer oder ZIP entpacken

Der Installer richtet Emacs in einem Programmpfad ein und legt Start-Verknüpfungen an. Wer keine Adminrechte hat oder Emacs portabel halten will, nimmt das ZIP und entpackt es an einen ruhigen Ort. Bewährt hat sich ein kurzer Pfad ohne Leerzeichen — etwa C:\emacs\:

powershell ZIP entpacken (PowerShell)
# Beispielhaft: ZIP unter C:\emacs entpacken
Expand-Archive -Path "$HOME\Downloads\emacs-30.2.zip" -DestinationPath "C:\emacs"

Nach dem Entpacken liegen unter C:\emacs\ die üblichen Unterordner: bin\ mit den Executables, share\ mit Lisp-Sourcen und Hilfedateien, var\ mit Laufzeitdaten.

Schritt 3 — PATH ergänzen (optional, empfohlen)

Damit Emacs aus jeder Shell aufrufbar ist, ergänzt du C:\emacs\bin im Benutzer-PATH:

powershell PATH dauerhaft ergänzen
# Benutzer-PATH lesen und um C:\emacs\bin erweitern
$alt = [Environment]::GetEnvironmentVariable("Path", "User")
$neu = "$alt;C:\emacs\bin"
[Environment]::SetEnvironmentVariable("Path", $neu, "User")

Eine neue Shell-Session sieht den geänderten Pfad — danach lassen sich runemacs.exe, emacs.exe und emacsclientw.exe ohne Pfadangabe starten.

Variante B — Chocolatey

Chocolatey ist der älteste systemweite Paketmanager für Windows. Wer ihn schon einsetzt, bekommt Emacs in einer Zeile:

powershell Emacs per Chocolatey installieren
# Aus einer Admin-PowerShell ausführen
choco install emacs

# Später aktualisieren
choco upgrade emacs

Chocolatey installiert Emacs systemweit (typischerweise unter C:\ProgramData\chocolatey\lib\Emacs\tools\) und legt Shims unter C:\ProgramData\chocolatey\bin\ an, sodass runemacs.exe aus jeder Shell aufrufbar ist. Vorteil: ein einheitliches Update-Tool für alle deine Pakete. Nachteil: Admin-Rechte sind Pflicht, und du bist an die Update-Kadenz des Paket-Maintainers gebunden — neue Emacs-Versionen erscheinen hier mit ein paar Tagen Verzögerung gegenüber gnu.org.

Variante C — Scoop

Scoop installiert ausschließlich ins Benutzerprofil und kommt deshalb komplett ohne Adminrechte aus — der populärste Weg in Firmen, in denen lokale Adminrechte fehlen. Emacs wohnt im sogenannten extras-Bucket, der einmalig registriert werden muss.

powershell Scoop und Emacs einrichten
# Falls Scoop noch fehlt — einmaliges Setup
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex

# Extras-Bucket registrieren und Emacs installieren
scoop bucket add extras
scoop install emacs

# Update später
scoop update emacs

Scoop legt die Installation unter %USERPROFILE%\scoop\apps\emacs\current\ ab und richtet Verknüpfungen für runemacs.exe und einen separaten Emacs-Client auf dem Desktop ein. Da Scoop alle Binaries seines shims-Ordners automatisch in den User-PATH einträgt, sind emacs.exe, runemacs.exe und emacsclient.exe sofort in der Shell verfügbar.

Variante D — winget

winget ist der Microsoft-eigene Paketmanager und auf aktuellen Windows-11-Installationen vorinstalliert. Der Einzeiler ist die kürzeste Variante überhaupt:

powershell Emacs per winget installieren
winget install --id GNU.Emacs -e

# Update
winget upgrade --id GNU.Emacs

Der -e-Schalter erzwingt einen exakten ID-Match — sicher gegen Tippfehler oder gleichnamige Pakete. winget greift im Hintergrund auf den offiziellen Installer von gnu.org zurück. Vorteil: kein Drittanbieter-Tool nötig. Nachteil: Die ID-Form (GNU.Emacs) kann sich zwischen Pretest- und Stable-Veröffentlichungen verschieben — im Zweifel mit winget search emacs die aktuelle ID prüfen.

Variante E — MSYS2 / MINGW

MSYS2 bringt eine vollständige POSIX-ähnliche Umgebung samt pacman-Paketmanager auf Windows. Emacs ist dort als nativer MINGW-Build verfügbar und profitiert direkt von der mitgelieferten GCC-Toolchain — was die Einrichtung von Native-Compilation deutlich erleichtert.

shell Emacs in MSYS2 (UCRT64-Shell)
# In der UCRT64-Shell von MSYS2 ausführen
pacman -Syu                              # System aktualisieren
pacman -S mingw-w64-ucrt-x86_64-emacs    # natives Emacs installieren

MSYS2 kennt mehrere Subsysteme — empfohlen ist heute das UCRT64-Environment (Universal C Runtime, Microsofts moderne CRT). Wer einen klassischen MINGW64-Build bevorzugt, nimmt entsprechend mingw-w64-x86_64-emacs. Nach der Installation liegt emacs.exe unter C:\msys64\ucrt64\bin\emacs.exe und ist sowohl aus der MSYS2-Shell als auch aus PowerShell aufrufbar — letzteres nur, wenn der MSYS2-bin-Pfad im Windows-PATH liegt. Faustregel: MSYS2 lohnt, wenn du Emacs ohnehin mit Bash, git, ripgrep und einem C-Compiler kombinieren willst. Wer Emacs „nur" als Editor sucht, fährt mit einer der vier Varianten weiter oben einfacher.

Erster Start und Versions-Check

Im bin\-Ordner liegen drei verschiedene Start-Programme, die oft Verwirrung stiften:

ExecutableWofür
runemacs.exestartet die GUI ohne separates Konsolen-Fenster — der Standard-Desktop-Start
emacs.exestartet die GUI, hängt aber ein Konsolen-Fenster an (sinnvoll für Debug-Logs)
emacs.exe -nwstartet Emacs als reine Terminal-Anwendung in der aktuellen Konsole

Den schnellen Versions-Check macht man am besten aus der Shell:

powershell Versions-Check in PowerShell
emacs --version
Output
GNU Emacs 30.2
Copyright (C) 2025 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.

Für den ersten Eindruck reicht ein simpler Doppelklick auf runemacs.exe oder die im Installer angelegte Start-Verknüpfung. Das Splash-Window erklärt sich weitgehend selbst, und der Editor lässt sich über das Datei-Menü sauber wieder beenden.

HOME-Variable und init.el-Pfad

Eine der konsequentesten Quellen für Verwirrung unter Windows ist die Frage, wo Emacs nach seiner Konfiguration sucht. Auf Unix-Systemen ist das schlicht $HOME/.emacs.d/. Unter Windows ist die Reihenfolge mehrstufig:

  1. Existiert die Umgebungsvariable HOME, sucht Emacs unter %HOME%\.emacs.d\init.el (bzw. %HOME%\.config\emacs\init.el nach XDG-Konvention).
  2. Fehlt HOME, fällt Emacs auf %APPDATA%\ zurück — typischerweise C:\Users\<name>\AppData\Roaming\.emacs.d\.

Punkt 2 ist der Klassiker für „warum lädt meine init.el nicht?" — die Datei liegt am vermuteten Pfad, Emacs liest aber einen anderen. Die saubere Lösung ist, HOME einmalig zu setzen:

powershell HOME-Variable dauerhaft setzen
# Standard-Empfehlung: das eigene Benutzer-Verzeichnis
[Environment]::SetEnvironmentVariable("HOME", "$HOME", "User")

# Alternative: ein eigenes Konfig-Verzeichnis, z. B. mit Git versioniert
[Environment]::SetEnvironmentVariable("HOME", "C:\Users\michael\dotfiles", "User")

Nach einer neuen Shell-Session zeigt echo $env:HOME den neuen Wert; Emacs liest init.el dann verlässlich aus dem dort vermerkten Unterordner. Wer sich nicht sicher ist, welche Datei Emacs tatsächlich geladen hat, kann das später im laufenden Editor mit dem Befehl user-init-file prüfen — die genaue Bedien-Notation erklären wir im Kapitel zur Tasten-Notation.

Daemon und emacsclientw

Auch unter Windows kann Emacs als Hintergrund-Daemon laufen. Neue Frames hängen sich dann per emacsclientw.exe in den Daemon ein und öffnen in Millisekunden — die Konfiguration ist bereits geladen, kein Neustart-Aufwand.

powershell Daemon und Client manuell
# Daemon im Hintergrund starten
emacs --daemon

# Neuen GUI-Frame aufrufen (emacsclientw blockiert die Konsole nicht)
emacsclientw.exe -c

# Frame öffnen und eine Datei darin anzeigen
emacsclientw.exe -c -n "C:\Projekte\hello.txt"

Wer den Daemon dauerhaft im Hintergrund halten will, legt eine Auto-Start-Verknüpfung auf emacs --daemon im Windows-Autostart-Ordner an oder richtet eine Geplante Aufgabe zur Anmeldung ein. Das Detail-Setup gehört in das spätere Kapitel Daemon und emacsclient; auf dieser Seite reicht das Wissen, dass der Modus existiert und sich mit emacs --daemon einmalig testen lässt.

Häufige Stolperfallen

HOME nicht gesetzt — init.el liegt am unerwarteten Ort

Ohne gesetzte HOME-Variable sucht Emacs die Konfiguration unter %APPDATA%\.emacs.d\ — also irgendwo unter C:\Users\<name>\AppData\Roaming\. Wer seine init.el im Benutzer-Verzeichnis erwartet, sucht dort vergebens. Setze HOME als allerersten Schritt nach der Installation, dann verhält sich Emacs wie auf Unix.

Antivirus und Defender bremsen .elc und Native-Comp drastisch

Emacs erzeugt beim Start und bei der ersten Nutzung vieler Pakete kompilierte Elisp-Dateien (.elc) und, bei aktiver Native-Compilation, zusätzlich .eln-Dateien. Echtzeit-Scanner prüfen jede dieser Dateien — das kann den ersten Start spürbar verlangsamen. Die saubere Lösung: in der Defender- oder Antivirus-Konfiguration eine Ausnahme für den Emacs-Installations- und den Cache-Ordner (~/.emacs.d/eln-cache/) hinterlegen.

Native-Compilation braucht eine GCC-Toolchain

Damit libgccjit Elisp zu nativem Code übersetzen kann, muss eine passende GCC-Toolchain erreichbar sein. Die offiziellen Builds von gnu.org bringen die nötigen DLLs meist bereits mit; bei einem MSYS2-Setup übernimmt pacman das automatisch. Falls native-comp trotzdem schweigt, liefert die Funktion native-comp-available-p im laufenden Editor die Antwort — wir kommen darauf im Konfigurations-Kapitel zurück.

Pfade in Elisp immer mit Forward-Slashes

Emacs und Elisp nutzen intern Unix-Style-Pfade — auch unter Windows. Statt C:\Users\michael\notes schreibst du in der init.el C:/Users/michael/notes. Einfache Backslashes funktionieren als Escape-Sequenzen und führen zu schwer zu findenden Fehlern. Wer ganz sichergehen will, nutzt die Helfer expand-file-name und file-name-as-directory.

Zeilenenden — CRLF, LF und gemischte Dateien

Windows-Programme erzeugen üblicherweise CRLF-Zeilenenden, viele Cross-Plattform-Projekte erwarten LF. Emacs erkennt und respektiert beim Öffnen das vorhandene Format und zeigt es in der Modeline ((DOS) oder (Unix)) an. Beim Erzeugen neuer Dateien greift der Default des aktuellen Buffers — wer plattformübergreifend arbeitet, setzt projektweise eine bewusste Coding-System-Konvention.

Deutsche Sonderzeichen in Pfaden

Pfade mit Umlauten (ä, ö, ü) oder Leerzeichen funktionieren, sind aber eine Quelle subtiler Probleme — vor allem bei externen Tools wie git, ripgrep oder aspell, die Emacs als Subprozess aufruft. Empfehlung: das Konfigurations-Verzeichnis (HOME) in einem kurzen, ASCII-only-Pfad ohne Leerzeichen halten, etwa C:\Users\michael\ direkt.

runemacs.exe vs. emacs.exe — bewusst wählen

Beide starten dieselbe GUI. runemacs.exe ist ein dünner Wrapper, der ohne das anhängende Konsolen-Fenster auskommt — sauber für Desktop-Verknüpfungen. emacs.exe behält das Konsolen-Fenster offen, was beim Debuggen von Start-Fehlern und Daemon-Problemen unbezahlbar ist. Für den Alltag runemacs.exe, für die Fehlersuche emacs.exe.

PGTK gibt es auf Windows nicht

Aus der Linux-Welt kennt man PGTK-Builds (Pure-GTK, Wayland-freundlich). Unter Windows ist PGTK schlicht nicht relevant — der Windows-Build nutzt die native Win32-GUI direkt. Wer auf Tutorials trifft, die zu einem PGTK-Build raten, hat versehentlich eine Linux-Anleitung erwischt.

Weiterführende Ressourcen

Externe Quellen

Verwandte Artikel

/ Weiter

Zurück zu Grundlagen

Zur Übersicht