Skip to content

Conversation

@CalvinAllen
Copy link
Contributor

Summary

  • Add --user flag to dtvem init for non-admin Windows installation
  • Uses User PATH instead of System PATH (no admin required)
  • Warns when system runtimes would shadow dtvem shims

Changes

File Description
src/internal/config/settings.go Settings struct and persistence
src/internal/config/settings_test.go Unit tests for settings
src/cmd/init.go --user flag, settings persistence, switch detection
src/cmd/init_test.go Unit tests for init command
src/internal/path/path_windows.go User PATH support, conflict detection
src/internal/path/path_unix.go Signature update for API consistency
install.ps1 -UserInstall parameter
install.sh --user-install argument
schemas/settings.schema.json JSON Schema for settings file
.github/workflows/integration-test-init.yml E2E tests for init command

Usage

# Windows - Standard (admin required)
irm dtvem.io/install.ps1 | iex

# Windows - User install (no admin)
iex "& { $(irm dtvem.io/install.ps1) } -UserInstall"

# Direct command
dtvem init --user      # User PATH
dtvem init             # System PATH (admin)

Test Plan

Closes #204

@CalvinAllen CalvinAllen force-pushed the feat/init/user-install branch from d36fd7c to 1a86f22 Compare January 25, 2026 21:54
Add support for installing dtvem without administrator privileges on
Windows by using User PATH instead of System PATH.

Changes:
- Add --user flag to `dtvem init` command
- Add settings.json to persist install type preference
- Add User PATH modification functions for Windows
- Add system runtime conflict detection and warnings
- Add install type switching detection with cleanup instructions
- Update install.ps1 with -UserInstall parameter
- Update install.sh with --user-install argument

On Windows, System PATH is evaluated before User PATH, so users are
warned when system-installed runtimes would shadow dtvem shims.

Closes #204
- Add pathActionAdd constant to fix goconst warning
- Fix "cancelled" -> "canceled" spelling (American English)
Fix PSScriptAnalyzer PSReviewUnusedParameter warning by explicitly
passing the script-level parameter to the Main function.
@CalvinAllen CalvinAllen force-pushed the feat/init/user-install branch from f3bc44b to 2996c34 Compare January 25, 2026 23:00
@CalvinAllen CalvinAllen merged commit 0b1f13f into main Jan 25, 2026
17 checks passed
@CalvinAllen CalvinAllen deleted the feat/init/user-install branch January 25, 2026 23:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

feat(windows): allow non-administrator installations

2 participants