Intune Win32 App Packager
A Visual Studio Code extension that simplifies packaging Win32 applications using Microsoft's IntuneWinAppUtil.exe tool. This extension adds a convenient context menu item to the Explorer view, allowing you to quickly package folders for Intune deployment.
Features
- Explorer Context Menu Integration: Right-click any folder in VS Code Explorer to access the packaging command
- Sandbox Testing: Right-click .intunewin files to test them in a sandbox environment
- First-Run Configuration: Automatically prompts to configure IntuneWinAppUtil.exe path when first activated
- Smart Script Detection: Automatically determines the appropriate script file based on folder naming conventions:
- Folders ending with
PSADT: Uses Deploy-Application.exe
- Folders ending with
PSADTv4: Uses Invoke-AppDeployToolkit.exe
- Other folders: Uses
{FolderName}.ps1
- Configurable Tool Paths: Set paths to IntuneWinAppUtil.exe and sandbox test script in extension settings
- Comprehensive Error Handling: Clear notifications for success, warnings, and errors with action buttons
- Quiet Operation: Uses the
-q flag for silent packaging
- Easy Configuration Access: Configure paths via Command Palette or error dialog buttons
Requirements
Installation
- Install the extension from the VS Code Marketplace
- On first activation, the extension will prompt you to configure the IntuneWinAppUtil.exe path
- Choose "Configure Now" to set the path immediately, or "Download Tool" to get IntuneWinAppUtil.exe first
Alternative Configuration Methods
- Command Palette: Press
Ctrl+Shift+P and type "Configure IntuneWinAppUtil Path"
- Manual Settings: Open VS Code Settings (
Ctrl+,) → Search for "Intune Win32 App Packager" → Set the full path
Usage
Packaging Folders
- Right-click on any folder in the VS Code Explorer
- Select "Pack folder with IntuneWinAppUtil" from the context menu
- The extension will:
- Determine the appropriate script file based on the folder name
- Execute IntuneWinAppUtil.exe with the correct parameters
- Show progress and result notifications
Testing .intunewin Files
- Right-click on any .intunewin file in the VS Code Explorer
- Select "Run test in Sandbox" or "Run test user context" from the context menu
- The extension will:
- Execute the configured Invoke-Test.ps1 script with the .intunewin file as parameter
- Add the
-RunAsUser switch when running in user context
- Show progress and result notifications from the sandbox test
Configuration
| Setting |
Description |
Default |
intuneWin32Packager.intuneWinAppUtilPath |
Full path to IntuneWinAppUtil.exe |
"" |
intuneWin32Packager.sandboxTestScriptPath |
Full path to Invoke-Test.ps1 script for sandbox testing |
"C:\\SandboxEnvironment\\bin\\Invoke-Test.ps1" |
Command Line Arguments
Packaging Command
The extension builds the following command for packaging:
IntuneWinAppUtil.exe -c "<folderPath>" -s "<scriptPath>" -o "<folderPath>" -a "<folderPath>" -q
Where:
-c: Source folder containing the app files
-s: Setup file (script) to run
-o: Output folder for the .intunewin file
-a: App folder (same as source folder)
-q: Quiet mode (no prompts)
Sandbox Testing Command
The extension builds the following command for sandbox testing:
C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -executionpolicy bypass -command "& 'C:\SandboxEnvironment\bin\Invoke-Test.ps1' -PackagePath '<pathToIntuneWinFile>'"
User-context testing adds the following switch:
-RunAsUser
Where:
-executionpolicy bypass: Allows script execution without restrictions
-command: Executes the specified PowerShell command
&: PowerShell call operator to execute the script
- Single quotes around paths handle spaces and special characters properly
-PackagePath: Path to the .intunewin file being tested
Development
This extension is built with TypeScript and uses the VS Code Extension API.
Building from Source
- Clone the repository
- Install dependencies:
npm install
- Compile TypeScript:
npm run compile
- Press F5 to run the extension in a new Extension Development Host window
Scripts
npm run compile: Compile TypeScript to JavaScript
npm run watch: Watch for changes and recompile automatically
Contributing
Contributions are welcome! Please feel free to submit issues or pull requests.
License
This project is licensed under the MIT License.