Get started with WinGet Studio
November 7, 2025 ยท View on GitHub
WinGet Studio is an experimental tool that simplifies creating and managing WinGet Configuration files. This guide walks you through installing WinGet Studio, creating your first configuration, and deploying it to a system.
Prerequisites
Before you begin, ensure you have:
- Windows 10 version 1809 or later
- Windows Package Manager (WinGet) installed
- PowerShell 7 or later (for Microsoft DSC 3.x configurations)
- Administrator privileges (for certain operations)
Install PowerShell 7
If you don't have PowerShell 7 installed:
winget install Microsoft.PowerShell
Verify the installation:
pwsh --version
Install WinGet Studio
Download and install WinGet Studio from the GitHub releases page:
- Download the latest
.msixfile - Double-click the file to install
- Follow the installation prompts
- Launch WinGet Studio from the Start menu
Creating your first configuration
Option 1: Using the GUI
-
Launch WinGet Studio
- Open WinGet Studio from the Start menu
- The main window displays the configuration editor
-
Create a new configuration
- Click "New configuration"
- WinGet Studio creates a new configuration with a placeholder resource
-
Add resources from the catalog
- Click "Add Resource" in the toolbar
- Browse or search the resource catalog
- Select a resource (e.g.,
Microsoft.WinGet.DSC/WinGetPackage) - Click "Add to Configuration"
-
Configure resource properties
- Select the added resource in the configuration
- Fill in required properties in the properties panel
- Example for WinGetPackage:
- id:
Git.Git - source:
winget
- id:
-
Add more resources
- Repeat the process to add additional resources
- Configure dependencies if needed
- Set security contexts (e.g.,
elevated) where required
-
Test the configuration
- Click "Test" in the toolbar
- Review the test results
- Fix any errors or warnings
-
Save the configuration
- Click "Save", or "Save as" if you want to create a new file
- Choose a location and filename (e.g.,
dev-setup.dsc.yaml) - WinGet Studio exports in Microsoft DSC 3.x format by default
Option 2: Using the CLI
Create a configuration using the WinGet Studio CLI:
# Create a new configuration file
$config = @"
`$schema:
https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json
metadata:
Microsoft.WinGet.Studio:
version: 0.1.0
resources:
- name: Install Git
type: Microsoft.Windows/WindowsPowerShell
properties:
resources:
- name: Git Package
type: Microsoft.WinGet.DSC/WinGetPackage
properties:
id: Git.Git
source: winget
"@
# Save to file
$config | Out-File -FilePath "dev-setup.dsc.yaml" -Encoding utf8
Working with the resource catalog
WinGet Studio maintains a catalog of available DSC resources.
Browsing resources
-
Open the resource catalog
- In WinGet Studio, click "Resources" in the navigation
- The catalog displays available resources
-
Search for resources
- Use the search box to filter by name
- Filter by module or source
- View resource details and properties
-
Refresh the catalog
- Click "Settings" > "Clear resources cache" > Clear cache
- WinGet Studio updates the catalog from PowerShell Gallery and local DSC v3 resources
Understanding resource sources
Resources come from two main sources:
- PowerShell Gallery: Public repository of PowerShell modules with DSC resources
- Local Microsoft DSC v3: Resources installed on your local system
Testing and validating configurations
Test before applying
Always test configurations before applying them:
Using the GUI:
- Open your configuration in WinGet Studio
- Click "Test" in the toolbar
- Review the test results for each resource
- Check for resources not in desired state
Using the CLI:
# Test with wingetstudio CLI
wingetstudio dsc test --file dev-setup.dsc.yaml
# Or use DSC directly
dsc config test --file dev-setup.dsc.yaml
Validate configuration structure
Verify your configuration is well-formed:
Using WinGet Studio:
- Open your configuration
- Click "Validate" in the toolbar
- Review any schema or syntax errors
Using CLI:
dsc config validate --file dev-setup.dsc.yaml
Applying configurations
Once you've tested your configuration, apply it to enforce the desired state.
Apply with WinGet
winget configure --file dev-setup.dsc.yaml
Apply with DSC
dsc config set --file dev-setup.dsc.yaml
Monitor progress
- WinGet and DSC provide progress output during application
- Review success/failure messages for each resource
- Check logs if resources fail
Exporting configurations
Export using CLI
# Export configuration state
wingetstudio dsc export --resource Microsoft.WinGet.DSC/WinGetPackage
Opening existing configurations
Open in WinGet Studio GUI
- Click "Open configuration"
- Browse to your configuration file
- Select the file (
.winget,.dsc.yaml, or.dsc.yml) - Click "Open"
WinGet Studio detects whether it's 0.2.0 or Microsoft DSC 3.x format automatically.
Managing dependencies
Resources can depend on other resources to ensure correct execution order.
Add dependencies in GUI
- Select a resource in edit mode
- Open the "Dependencies" panel
- Select resources that must run first
- WinGet Studio adds
dependsOnreferences
Add dependencies manually
resources:
- name: Install PowerShell 7
type: Microsoft.Windows/WindowsPowerShell
properties:
resources:
- name: PowerShell
type: Microsoft.WinGet.DSC/WinGetPackage
properties:
id: Microsoft.PowerShell
source: winget
- name: Install PowerShell Module
type: Microsoft.Windows/WindowsPowerShell
dependsOn:
- "[resourceId('Microsoft.Windows/WindowsPowerShell', 'Install PowerShell 7')]"
properties:
resources:
- name: Az Module
type: PSDesiredStateConfiguration/PSModule
properties:
Name: Az
Ensure: Present
Example: Complete workflow
Here's a complete example workflow:
# Step 1: Create configuration
$config = @"
`$schema:
https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json
metadata:
description: Basic development environment
resources:
- name: Install Git
type: Microsoft.Windows/WindowsPowerShell
properties:
resources:
- name: Git
type: Microsoft.WinGet.DSC/WinGetPackage
properties:
id: Git.Git
source: winget
- name: Install VS Code
type: Microsoft.Windows/WindowsPowerShell
properties:
resources:
- name: VSCode
type: Microsoft.WinGet.DSC/WinGetPackage
properties:
id: Microsoft.VisualStudioCode
source: winget
"@
# Step 2: Save configuration
$config | Out-File -FilePath "dev-setup.dsc.yaml" -Encoding utf8
# Step 3: Install required modules
Install-Module Microsoft.WinGet.DSC -Scope CurrentUser -Force
# Step 4: Test configuration
dsc config test --file dev-setup.dsc.yaml
# Step 5: Apply configuration
winget configure --file dev-setup.dsc.yaml
# Step 6: Verify
dsc config get --file dev-setup.dsc.yaml
Next steps
Now that you've created your first configuration:
- Customize exported configurations to add parameters and variables
- Understand DSC resources to learn about available resources
- Learn about configuration versions for format differences
- Explore the WinGet Studio CLI for automation scenarios
Troubleshooting
Module not found errors
If you see "module not found" errors:
# Install missing modules
Install-Module Microsoft.WinGet.DSC -Scope CurrentUser
Install-Module PSDesiredStateConfiguration -Scope CurrentUser
Permission denied errors
Some resources require elevated permissions:
- Run WinGet Studio as administrator
- Or use the CLI with elevated privileges:
Start-Process pwsh -Verb RunAs -ArgumentList "-Command",
"dsc config set --file dev-setup.dsc.yaml"
Configuration validation errors
If validation fails:
- Check YAML syntax (indentation, colons, hyphens)
- Verify resource names match available resources
- Ensure required properties are specified
- Check schema URL is correct