Skip to content

About

Catalyst: High-performance PowerShell deployment template with rich GUI, intelligent logging, and Intune-ready configuration

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Catalyst Deployer

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.

🌟 Features

  • 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

πŸ“‹ Requirements

  • 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)

πŸš€ Quick Start

Basic Installation

.\install.ps1

Silent Installation

.\install.ps1 -Silent

Uninstall

.\install.ps1 -Uninstall

Scheduled Deployment

.\install.ps1 -Schedule

πŸ”§ Configuration

All 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
}

Key Configuration Options

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

πŸ“ Parameters

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

πŸ“‚ File Structure

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

🎨 Customization

Basic Customization

  1. Update the $Config hashtable with your application details
  2. Place your installer files in the script directory
  3. Add custom icon and background images in img/ folder
  4. Run and test the installer

Advanced Customization

See CUSTOMIZATION.md for:

  • Custom GUI styling
  • Advanced logging configuration
  • Custom uninstall procedures
  • Integration with external tools

πŸ“Š Logging

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

πŸ”’ Security Considerations

  • 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

🌐 MDM & Enterprise Deployment

Catalyst Deployer is designed for seamless integration with modern enterprise deployment platforms.

Microsoft Intune

Step 1: Prepare Package

$params = @{
    FilePath = "C:\path\to\catalyst-deployer"
    Filter = "*"
    Recurse = $true
}
Get-ChildItem @params

Step 2: Create Win32 App in Intune

  1. Go to Intune Portal β†’ Apps β†’ Windows
  2. Create new Win32 app
  3. Select your packaged installer
  4. Set install command: powershell.exe -ExecutionPolicy Bypass -File install.ps1 -Silent
  5. Configure detection rules based on GUID/Registry

Step 3: Deploy to Devices

Assign to device/user groups and monitor deployment status in Intune console.

Microsoft Endpoint Configuration Manager (SCCM)

# Command line for SCCM packages:
powershell.exe -ExecutionPolicy Bypass -File install.ps1 -Silent

# For uninstallation:
powershell.exe -ExecutionPolicy Bypass -File install.ps1 -Uninstall -Silent

Configuration:

  • 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 & Software Distribution

# Group Policy logon/startup script example:
$scriptPath = "\\domain\shares\software\app\install.ps1"
& $scriptPath -Silent -NoInteractive

Additional Deployment Methods

  • Windows Package Manager - Compatible with WinGet
  • PowerShell Remoting - Remote deployment support
  • Custom Scripts - Easy integration with automation frameworks
  • Batch Operations - Multi-device parallel deployment

πŸ“– Examples

Example 1: Simple Installer

$Config = @{
    AppName = "Notepad++"
    AppVersion = "8.5.0"
    SetupFileName = "npp.8.5.0.Installer.exe"
    SetupParameters = "/S"
    UninstallGUID = "{YOUR_GUID_HERE}"
}

Example 2: Driver Installation

$Config = @{
    AppName = "Graphics Driver"
    EnableDriverInstallation = $true
    DriverFileName = "graphics_driver.inf"
    SetupFileName = "setup.exe"
    RequiresReboot = $true
}

Example 3: MSI-based Uninstall

$Config = @{
    UninstallMethod = "MSI"
    UninstallMSIFile = "C:\ProgramFiles\App\setup.msi"
}

See EXAMPLES.md for more detailed examples.

πŸ› Troubleshooting

Issue: GUI doesn't appear

Solution: Check if -Silent flag is enabled. Use $Config.EnableGUI = $true

Issue: Setup file not found

Solution: Ensure SetupFileName matches the actual file and is in the same directory as the script

Issue: Permission denied

Solution: Run PowerShell as Administrator or enable UAC elevation

For more troubleshooting steps, see TROUBLESHOOTING.md

🀝 Contributing

We welcome contributions! Please read CONTRIBUTING.md for guidelines on:

  • Code style
  • Testing procedures
  • Pull request process
  • Issue reporting

πŸ“„ License

This project is licensed under the MIT License - see LICENSE file for details.

πŸ‘€ Author

Lorenzo Scozzafava
GitHub: @scozzadroid-cpu

πŸ”— Resources

πŸ“‹ Roadmap

  • 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

⭐ Show Your Support

If Catalyst Deployer helps you, please consider:

  • Starring the repository
  • Sharing with your team
  • Contributing improvements
  • Reporting issues

Made with ❀️ for enterprise deployments

About

Catalyst: High-performance PowerShell deployment template with rich GUI, intelligent logging, and Intune-ready configuration

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages