A modular, intelligent PowerShell installer for Windows. Pick a persona (Dev, Finance Pro, IT Pro, Cybersecurity, Personal, Testbench) or get smart recommendations based on your system analysis.
- Installation History: Track all persona installations with timestamps and results
- App Update Management: Check for and apply updates to installed apps
- Persona Backup/Restore: Export and import persona configurations
- Installation Profiles: Save and reuse optional app selections
- Enhanced Visual Feedback: Consistent status icons and colors throughout
- Testing Infrastructure with Pester test suite
- CI/CD Pipeline with GitHub Actions
- Full PowerShell 5.1 and 7.x compatibility
| Feature | Status | Description |
|---|---|---|
| Persona-based Install | Active | JSON profiles with base + optional apps |
| Smart Recommendations | Active | AI-powered persona suggestions based on system analysis |
| Dependency Management | Active | Automatic prerequisite resolution with conflict detection |
| Enhanced Progress | Active | Rich progress bars with ETA and speed metrics |
| Installation History | Active | Track installations with timestamps and results |
| App Update Management | Active | Check for and apply updates via winget |
| Persona Backup/Restore | Active | Export and import persona configurations |
| Installation Profiles | Active | Save and reuse optional app selections |
| Dry Run Mode | Active | Preview installations without changes |
| Structured Logging | Active | JSON-formatted logs with performance metrics |
| Configurable Settings | Active | External Settings.psd1 for all behavior |
| Dual Catalog Format | Active | Legacy (simple) and enhanced (with dependencies) |
| PowerShell Compatibility | Active | Works on PS 5.1 and PS 7.x |
| Feature | Status | Description |
|---|---|---|
| Parallel Installation | Planned | Install multiple apps simultaneously |
| Community Repository | Planned | Share and download community personas |
| GUI Mode | Planned | Graphical interface option |
| Enterprise Deployment | Planned | MSI installer, GPO support |
# Clone or download ZIP from GitHub
git clone https://github.com/24Skater/persona-installer.git
cd persona-installer/scripts# Set execution policy for session
Set-ExecutionPolicy Bypass -Scope Process -Force
# Preview mode (no actual installs)
.\Main.ps1 -DryRun
# Normal installation
.\Main.ps1
# With custom configuration
.\Main.ps1 -ConfigPath "C:\MyConfig\Settings.psd1"
# Skip welcome banner
.\Main.ps1 -NoWelcomeTip: Run as Administrator for silent installations and optimal performance.
| Persona | Base Apps | Use Case |
|---|---|---|
| Personal | Git, VS Code, Chrome, VLC, WhatsApp, Zoom | General home use |
| Dev | Git, VS Code, Node.js, Python, Docker, .NET SDK | Software development |
| Finance Pro | Microsoft 365, Power BI, Teams, Slack | Financial/business work |
| IT Pro | PowerShell 7, Sysinternals, Wireshark, PuTTY | System administration |
| Cybersec Pro | Nmap, Wireshark, Burp Suite, Ghidra | Security testing |
| Testbench | PowerShell 7, Python, Git | Minimal testing setup |
Each persona has optional apps you can select during installation.
All settings are in scripts/config/Settings.psd1:
@{
Installation = @{
MaxRetries = 3 # Retry failed installations
SilentInstallFirst = $true # Try silent mode first
RetryDelay = 2 # Seconds between retries
InstallPauseSeconds = 1 # Pause between apps
}
Features = @{
DependencyChecking = $true # Resolve dependencies
SmartRecommendations = $true # Enable AI recommendations
EnhancedProgress = $true # Rich progress bars
UseEnhancedCatalog = $true # Use catalog-enhanced.json
}
Logging = @{
LogRetentionDays = 30 # Auto-cleanup old logs
PerformanceLogging = $true # Track install timing
}
}{
"Git": "Git.Git",
"VS Code": "Microsoft.VisualStudioCode"
}{
"Docker Desktop": {
"id": "Docker.DockerDesktop",
"category": "Development",
"dependencies": ["WSL2"],
"system_requirements": {
"min_memory_gb": 4,
"requires_admin": true
}
}
}Both formats are supported. Enable enhanced catalog in Settings.psd1:
Features = @{ UseEnhancedCatalog = $true }persona-installer/
├── scripts/
│ ├── Main.ps1 # Entry point
│ ├── config/
│ │ └── Settings.psd1 # Configuration
│ └── modules/
│ ├── CatalogManager.psm1 # Catalog operations
│ ├── PersonaManager.psm1 # Persona operations
│ ├── InstallEngine.psm1 # Installation logic
│ ├── DependencyManager.psm1 # Dependency resolution
│ ├── UIHelper.psm1 # User interface
│ ├── Logger.psm1 # Logging system
│ ├── EnhancedProgressManager.psm1 # Rich progress
│ ├── PersonaRecommendationEngine.psm1 # AI recommendations
│ └── CompatibilityHelper.psm1 # PS5/7 compatibility
├── data/
│ ├── catalog.json # Legacy catalog
│ ├── catalog-enhanced.json # Enhanced catalog
│ └── personas/ # Persona definitions
├── tests/
│ ├── Unit/ # Unit tests
│ ├── Integration/ # Integration tests
│ └── Invoke-Tests.ps1 # Test runner
├── docs/ # Documentation
└── logs/ # Installation logs
# Run unit tests
.\tests\Invoke-Tests.ps1 -TestType Unit
# Run all tests with coverage
.\tests\Invoke-Tests.ps1 -TestType All -Coverage
# Run integration tests
.\tests\Invoke-Tests.ps1 -TestType IntegrationRequires Pester 5.0+:
Install-Module Pester -MinimumVersion 5.0.0 -Force
| Log Type | Location | Content |
|---|---|---|
| App Logs | logs/<AppName>.log |
Detailed winget output |
| Session Logs | logs/session-*.txt |
Full session transcript |
| Performance | Embedded in session | Timing and metrics |
Logs are auto-cleaned after 30 days (configurable).
- Windows 10/11
- PowerShell 5.1+ (PowerShell 7 recommended)
- winget (App Installer from Microsoft Store)
- Fork the repository
- Create a feature branch
- Run tests:
.\tests\Invoke-Tests.ps1 -TestType All - Submit a pull request
See CONTRIBUTING.md for details.
MIT - free to use, modify, and share.
See CHANGELOG.md for version history.