Catalyst: Lean, powerful PowerShell deployment template with native Windows GUI, colored logging, and enterprise-ready Intune/SCCM integration.
A production-ready PowerShell installer/uninstaller framework for enterprise deployments. Catalyst delivers professional-grade functionality in ~280 lines with dark-themed native Windows Forms GUI, comprehensive logging, and seamless MDM platform support.
- Compact Design - Professional functionality in ~280 lines
- Dark-Themed GUI - Native Windows Forms with Azure blue accents and modern styling
- Dual Mode - Interactive GUI and silent (automated) deployment modes
- Colored Logging - Real-time log display with severity levels (Info, Warning, Error, Success)
- Multiple Uninstall Methods - GUID, MSI, Program Name, or Custom uninstall support
- MDM Ready - Optimized for Microsoft Intune, SCCM, and modern deployment platforms
- Administrator Enforcement - Requires elevation with automatic checks
- Rich Error Handling - User-friendly error messages with detailed logging
- Universal Compatibility - Works with any EXE, MSI, or custom installer
- PowerShell: 5.0 or higher
- OS: Windows 7/8/10/11 (Server editions supported)
- Permissions: Administrator rights required
- Framework: .NET Framework 4.5+ (for Windows Forms)
.\install.ps1.\install.ps1 -Silent.\install.ps1 -Uninstall.\install.ps1 -ScheduleAll settings are managed through the $Config hashtable at the top of install.ps1:
$Config = @{
AppName = "Your Application Name"
AppVersion = "1.0.0"
AppVendor = "Your Company"
SetupFileName = "setup.exe"
SetupParameters = "/s /norestart"
UninstallMethod = "GUID"
UninstallGUID = "{GUID-HERE}"
RequiresReboot = $false
EnableGUI = $true
AlwaysOnTop = $true
}| Option | Type | Description |
|---|---|---|
AppName |
String | Application display name |
SetupFileName |
String | Installer executable filename |
SetupParameters |
String | Command line arguments for setup |
EnableDriverInstallation |
Boolean | Enable/disable driver installation |
UninstallMethod |
String | Uninstall method: GUID, MSI, ProgramName, Custom |
RequiresReboot |
Boolean | Prompt for reboot after installation |
AlwaysOnTop |
Boolean | Keep window on top |
| Parameter | Type | Description |
|---|---|---|
-Silent |
Switch | Run without GUI (automated mode) |
-NoInteractive |
Switch | Disable all user interactions |
-Uninstall |
Switch | Run uninstallation instead of installation |
-Schedule |
Switch | Schedule installation for later |
-Quick |
Switch | Fast mode with minimal UI updates |
-DisableCloseButton |
Switch | Hide close button on main window |
-LogPath |
String | Custom log file path |
catalyst-deployer/
βββ install.ps1 # Main template script
βββ README.md # This file
βββ LICENSE # MIT License
βββ .gitignore # Git ignore rules
βββ CONTRIBUTING.md # Contribution guidelines
βββ docs/
β βββ CONFIGURATION.md # Detailed configuration guide
β βββ PARAMETERS.md # Parameter reference
β βββ CUSTOMIZATION.md # Customization guide
β βββ EXAMPLES.md # Real-world examples
β βββ TROUBLESHOOTING.md # Common issues and solutions
βββ examples/
βββ sample-installer/ # Example implementation
βββ install.ps1
βββ setup.exe
βββ img/
β βββ icon.ico
β βββ logo.png
β βββ background.png
βββ README.md
- Update the
$Confighashtable with your application details - Place your installer files in the script directory
- Add custom icon and background images in
img/folder - Run and test the installer
See CUSTOMIZATION.md for:
- Custom GUI styling
- Advanced logging configuration
- Custom uninstall procedures
- Integration with external tools
Logs are stored in C:\ProgramData\Logs\ by default:
- Installation Log:
Installation.log - Uninstallation Log:
Uninstallation.log
Log format:
2026-04-08 14:30:45: [Info] Script started. Current directory: C:\path\to\script
2026-04-08 14:30:46: [Info] Copied setup.exe to C:\Users\user\AppData\Local\Temp
2026-04-08 14:30:50: [Success] Installation completed successfully
- Script requires administrator rights
- Sensitive credentials should be stored in environment variables, not hardcoded
- Logs are stored in protected system directories
- Always validate setup file integrity before deployment
- Review the script before deployment in production
Catalyst Deployer is designed for seamless integration with modern enterprise deployment platforms.
$params = @{
FilePath = "C:\path\to\catalyst-deployer"
Filter = "*"
Recurse = $true
}
Get-ChildItem @params- Go to Intune Portal β Apps β Windows
- Create new Win32 app
- Select your packaged installer
- Set install command:
powershell.exe -ExecutionPolicy Bypass -File install.ps1 -Silent - Configure detection rules based on GUID/Registry
Assign to device/user groups and monitor deployment status in Intune console.
# Command line for SCCM packages:
powershell.exe -ExecutionPolicy Bypass -File install.ps1 -Silent
# For uninstallation:
powershell.exe -ExecutionPolicy Bypass -File install.ps1 -Uninstall -SilentConfiguration:
- Source files path: Same directory as
install.ps1 - Programs: Set execution policy bypass
- Detection method: Registry key or file presence
- Return codes: 0 (success), non-zero (failure)
# Group Policy logon/startup script example:
$scriptPath = "\\domain\shares\software\app\install.ps1"
& $scriptPath -Silent -NoInteractive- Windows Package Manager - Compatible with WinGet
- PowerShell Remoting - Remote deployment support
- Custom Scripts - Easy integration with automation frameworks
- Batch Operations - Multi-device parallel deployment
$Config = @{
AppName = "Notepad++"
AppVersion = "8.5.0"
SetupFileName = "npp.8.5.0.Installer.exe"
SetupParameters = "/S"
UninstallGUID = "{YOUR_GUID_HERE}"
}$Config = @{
AppName = "Graphics Driver"
EnableDriverInstallation = $true
DriverFileName = "graphics_driver.inf"
SetupFileName = "setup.exe"
RequiresReboot = $true
}$Config = @{
UninstallMethod = "MSI"
UninstallMSIFile = "C:\ProgramFiles\App\setup.msi"
}See EXAMPLES.md for more detailed examples.
Solution: Check if -Silent flag is enabled. Use $Config.EnableGUI = $true
Solution: Ensure SetupFileName matches the actual file and is in the same directory as the script
Solution: Run PowerShell as Administrator or enable UAC elevation
For more troubleshooting steps, see TROUBLESHOOTING.md
We welcome contributions! Please read CONTRIBUTING.md for guidelines on:
- Code style
- Testing procedures
- Pull request process
- Issue reporting
This project is licensed under the MIT License - see LICENSE file for details.
Lorenzo Scozzafava
GitHub: @scozzadroid-cpu
- Add support for PowerShell 7+ (cross-platform)
- Enhanced progress tracking for large installations
- Built-in rollback functionality
- Automatic driver detection
- Integration with Windows Package Manager
If Catalyst Deployer helps you, please consider:
- Starring the repository
- Sharing with your team
- Contributing improvements
- Reporting issues
Made with β€οΈ for enterprise deployments