Ein Release-Build ist die fertige Version von Pointer, die an andere Nutzer weitergegeben werden kann.
| Dev-Modus | Release-Build | |
|---|---|---|
| Starter | run\start-dev.bat |
run\build-pointer.bat |
| Kompilierung | Watcher (esbuild, live) | Gulp (vollständiger Build) |
| Minifizierung | Nein | Ja (JS + CSS) |
| ASAR-Paketierung | Nein (läd aus out/) |
Ja (app.asar) |
| Native Module | System-Version | Neu-kompiliert für Electron |
| Icon | Standard | resources/win32/code.ico |
| Zweck | Entwicklung | Tester / Nutzer |
| Output | Kein finales App-Verzeichnis | .build/artifacts/ |
Pointer wird als eigenständige App gebaut und ausgeliefert.
Pointer ist:
- ein eigener Build aus dem Code-OSS-Upstream
- ein eigener Rebrand (Name, Icons, App-IDs)
- kein offizielles Microsoft-Produkt
- nicht Microsoft-signiert
- aktuell nicht code-signiert
- nicht automatisch identisch mit irgendeinem anderen Editor-Download
- ohne Zugang zum offiziellen Microsoft Marketplace (Open VSX wird empfohlen)
| Komponente | Version | Zweck |
|---|---|---|
| Node.js | 22.22.1 | Wird automatisch heruntergeladen falls nötig |
| npm | 10.x | Paketmanager (im Node.js-Paket enthalten) |
| Visual Studio 2022 | C++ Desktop Workload | Native Module Kompilierung (node-gyp) |
| Python | 3.x | node-gyp Abhängigkeit |
| Inno Setup | 6.x (optional) | Installer-Erstellung |
Node.js 22.22.1 wird automatisch vom Build-Skript nach .codex-tools/node-v22.22.1-win-x64/ heruntergeladen,
falls nicht vorhanden. Es muss nicht manuell installiert werden.
Die VS DevShell wird automatisch erkannt und gestartet falls nötig.
run\build-pointer.batrun\build-pointer.bat --Ziprun\build-pointer.bat --Installerrun\build-pointer.bat --Installer --ZipVor einem öffentlichen Release siehe zusätzlich docs/LAUNCH_CHECKLIST.md.
| Flag | Beschreibung |
|---|---|
--Arch x64 |
Architektur (Standard: x64, Alternativ: arm64) |
--SkipInstall |
npm-Installation überspringen (schneller wenn up-to-date) |
--Fresh |
Komplett-Neuinstallation aller Dependencies |
--Installer |
Inno Setup Installer erstellen |
--Zip |
ZIP-Archiv der portablen App erstellen |
--NativeJobs max |
MSBuild-Parallelität pro Native Package (CI kann höher gehen; lokal konservativ lassen) |
--NativePackageConcurrency 3 |
Mehrere Native Packages parallel rebuilden (für CI empfohlen; lokal konservativ lassen) |
run\build-pointer.bat --Fresh --Installer --ZipDas Skript prüft ob es in einer Visual Studio Developer Command Prompt läuft. Falls nicht, wird es sich automatisch in einer neuen starten:
- Sucht
VsDevCmd.batin diesen Pfaden:C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.batC:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\Tools\VsDevCmd.batC:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.batC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\Tools\VsDevCmd.bat
- Startet PowerShell neu mit
-arch=x64 -host_arch=x64 - Fügt die lokale Node.js Runtime zum PATH hinzu
Prüft ob .codex-tools/node-v22.22.1-win-x64/node.exe existiert.
Falls nicht, wird Node.js von https://nodejs.org/dist/v22.22.1/ heruntergeladen
und nach .codex-tools/ entpackt.
-
Root (
npm ci --ignore-scripts):- Installiert alle Hauptabhängigkeiten
- Ohne Build-Scripts (werden später ausgeführt)
- Speed-up: Wird übersprungen wenn
node_modules/bereits gesund ist
-
Node-Gyp Headers:
- Installiert die C++ Headers für die Electron-Version (39.8.8)
- Wird benötigt für native Module Kompilierung
- Versucht mehrere Mirror-URLs bei Download-Fehlern
-
SpectreMitigation Patching:
- Entfernt
/QspectreCompiler-Flags aus allen.gypDateien - Verhindert Build-Fehler mit Standard-Windows-SDKs
- Entfernt
-
Native Module Rebuild:
- Neu-kompiliert alle nativen Module mit MSVC
- Wird nur ausgeführt wenn kein Marker-File existiert
- Marker:
.codex-tools/native-rebuild-x64.marker - Module:
@vscode/spdlog,@vscode/sqlite3,@vscode/ripgrep,node-pty,kerberos, etc.
-
Electron Download:
- Lädt Electron 39.8.8 nach
.build/electron/ - Die Binary wird auf den Namen aus
product.json.nameShortumbenannt (Pointer.exe)
- Lädt Electron 39.8.8 nach
-
Sub-Projekte:
- Installiert Dependencies in
build/,extensions/ - Und in ca. 30 Extension-Unterordnern
- Installiert Dependencies in
Lädt die in product.json definierten Extensions herunter:
ms-vscode.js-debug-companionms-vscode.js-debugms-vscode.vscode-js-profile-table
Landen in .build/builtInExtensions/.
Generiert Windows Group Policy Dateien für Enterprise-Deployment nach .build/policies/.
Der Haupt-Paketierungs-Task in build/gulpfile.vscode.ts:
- TypeScript kompilieren nach
out-build/ - JS/CSS minifizieren
- Electron Pack (
@vscode/gulp-electron) product.jsonmit Commit-Hash und Versionsinfo anreichern- ASAR-Archiv erstellen (
app.asar) - Ressourcen kopieren (Icons, HTML, NLS)
- Native
.nodeModule kopieren - Built-In Extensions kopieren
- EXE-Icon setzen (
rceditaufresources/win32/code.ico) - Output:
../Pointer-win32-x64/(ein Ordner über dem Repo-Root)
Kopiert build/win32/inno_updater.exe und vcruntime140.dll in den Build
und setzt das Icon. Dies wird für Auto-Updates benötigt.
- Ordner
../Pointer-win32-x64/wird nach.build/artifacts/Pointer-win32-x64/kopiert - Die EXE heißt
Pointer.exe - Der temporäre Ordner wird aufgeräumt
Erstellt .build/artifacts/Pointer-win32-x64.zip aus dem portablen Ordner.
Führt Gulp-Task vscode-win32-x64-user-setup aus:
- Generiert Inno Setup Definitions aus
product.json - Ruft ISCC.exe mit
build/win32/code.issauf - Erstellt
.build/artifacts/PointerSetup-x64-<version>.exe
Nach einem erfolgreichen Build mit --Installer --Zip:
.build/artifacts/
├── Pointer-win32-x64/ # Portable App
│ ├── Pointer.exe # Haupt-Executable
│ ├── resources/
│ │ └── app/
│ │ ├── app.asar # Komprimierter App-Code
│ │ ├── product.json # Versionsinfo
│ │ └── extensions/ # Built-In Extensions
│ ├── tools/
│ │ └── inno_updater.exe # Update-Helper
│ └── ...
├── Pointer-win32-x64.zip # ZIP der portablen Version
└── PointerSetup-x64-<version>.exe # Windows Installer
Diese Dateien werden während des Builds erstellt und danach bereinigt:
| Pfad | Beschreibung |
|---|---|
../Pointer-win32-x64/ |
Temporärer Gulp-Package-Output |
.build/win32-x64/user-setup/ |
Temporärer Inno Setup Output |
.codex-tools/logs/ |
Build-Logs (bleiben erhalten) |
Jeder Build erzeugt detaillierte Logs unter:
.codex-tools/logs/<YYYYMMDD-HHMMSS>-<PID>/
├── root-npm-ci-ignore-scripts.log
├── node-gyp-headers-...-attempt-1.log
├── root-rebuild-@vscode_sqlite3.log
├── download-electron.log
├── download-builtin-extensions.log
├── generate-win32-policies.log
├── gulp-vscode-win32-x64.log
├── gulp-vscode-win32-x64-inno-updater.log
└── ...
Der Pfad zum letzten Build steht in:
.codex-tools/logs/latest-run.txt
Installiere Visual Studio 2022 mit der C++ Desktop Workload:
- Visual Studio 2022 Community
- Bei der Installation: "Desktopentwicklung mit C++" auswählen
Die VS DevShell wird automatisch gestartet. Falls das nicht funktioniert:
- Öffne "Developer Command Prompt for VS 2022"
- Navigiere zum Projektordner
- Führe
run\build-pointer.bataus
node build/lib/electron.tsDas wird normalerweise automatisch vom Build-Skript ausgeführt.
Das Build-Skript hat ein Auto-Repair-System:
- Erkennt fehlende Module im Gulp-Log
- Führt
npm ciin root, build, und extensions aus - Wiederholt den fehlgeschlagenen Task einmal
Manuell beheben:
npm ci --ignore-scripts
cd build && npm ci
cd ../extensions && npm cirun\dev-stop.bat
run\start-dev.batAGENTS.md- Vollständige Projekt-Dokumentation für Agentendocs/LAUNCH_CHECKLIST.md- Release-Checkliste, Smoke-Test und Signatur-Hinweisbuild/gulpfile.vscode.ts- Paketierungs-Task (Quellcode)build/gulpfile.vscode.win32.ts- Windows-spezifische Tasksbuild/win32/code.iss- Inno Setup Installer-Skriptproduct.json- Branding-Konfigurationpackage.json- Dependencies und NPM-Scripts