📋 Guide Info

18 min read

Updated August 3, 2026

950 reads

IntunePSAppDeployToolkitPSADTWin32 AppsApplication PackagingBluebeam RevuMSI DeploymentPowerShell
PSAppDeployToolkit with Intune Part 1

PSAppDeployToolkit with Intune Part 1: Install and Uninstall Bluebeam Revu

Liladhar Sapkota - Author
Liladhar SapkotaAugust 3, 2026

What this Part 1 guide covers

This is a real beginner-friendly example of packaging Bluebeam Revu 21 with PSAppDeployToolkit (PSADT) and deploying it as a Microsoft Intune Win32 app. I used a working Beam/Bluebeam MSI package, tested the PSADT install flow on a Windows device, generated the .intunewin package, and uploaded it to Intune.

This page is only Part 1: install and uninstall. I am intentionally not covering app updates, supersedence, or version replacement here. That will be Part 2, because updating Win32 apps needs its own careful workflow.

Important: I am not using any company branding or company logo in this guide. The screenshots show a simple PSADT package so a beginner can understand the install and uninstall flow first.
PSADT version style: This guide uses the newer PSADT v4 style with Invoke-AppDeployToolkit.ps1 and Invoke-AppDeployToolkit.exe. Older PSADT v3 guides usually talk about Deploy-Application.ps1, which can confuse beginners.
1

Understand PSADT in simple terms

PSADT is a PowerShell toolkit that wraps normal installers inside a repeatable deployment script. Instead of giving Intune a raw MSI command and hoping it works, PSADT gives you a clean structure for app metadata, install logic, uninstall logic, user prompts, and logs.

  • Install: run the MSI with consistent logging and optional user prompts.
  • Uninstall: call the matching removal command from the same package.
  • User experience: show a proper install/defer window instead of a silent mystery install.
  • Logs: make troubleshooting easier when Intune says an app failed.

For this example, I packaged Bluebeam Revu 21 as a Win32 app because this is exactly the type of installer many IT teams need to manage through Intune.

2

Prepare the PSADT source folder

I created a clean source folder at C:\IntuneApps\Bluebeam. This is the folder that later gets wrapped into a Win32 .intunewin package.

PSADT Bluebeam source folder in C IntuneApps showing Files, Config, SupportFiles, toolkit files and Invoke-AppDeployToolkit entry points
Figure: Real PSADT source folder used for the Bluebeam Revu package.
C:\IntuneApps\Bluebeam
├── Files
│   └── Bluebeam Revu x64 21.msi
├── Config
├── PSAppDeployToolkit
├── PSAppDeployToolkit.Extensions
├── Strings
├── SupportFiles
├── Invoke-AppDeployToolkit.exe
└── Invoke-AppDeployToolkit.ps1
  • Files: where I placed the Bluebeam MSI.
  • Invoke-AppDeployToolkit.ps1: where I changed the app name, version, install command, and uninstall command.
  • Invoke-AppDeployToolkit.exe: the file Intune runs for install and uninstall.
  • PSAppDeployToolkit folders: toolkit engine files. I do not recommend editing these as a beginner.
Keep the Microsoft Win32 Content Prep Tool outside the source folder. If you put packaging tools, output files, or old test packages inside the source folder, Intune can include unnecessary content and make the package much bigger.
3

Edit the app metadata

Open Invoke-AppDeployToolkit.ps1 in Visual Studio Code. Locate the $adtSession hashtable and replace the template values with your real application details.

PSADT app metadata configured for BlueBeam Revu 21 version 21.0.10 with Revu process close setting
Figure: The real app metadata I used for the Bluebeam Revu package.
$adtSession = @{
    AppVendor = 'BlueBeam'
    AppName = 'BlueBeam Revu 21'
    AppVersion = '21.0.10'
    AppArch = 'x64'
    AppLang = 'EN'
    AppRevision = '01'
    AppSuccessExitCodes = @(0)
    AppRebootExitCodes = @(1641, 3010)
    AppProcessesToClose = @(
        @{
            Name = 'Revu'
            Description = 'Bluebeam Revu'
        }
    )
    AppScriptVersion = '1.0.0'
    AppScriptDate = '2026-01-14'
    AppScriptAuthor = 'Liladhar'
    RequireAdmin = $true
}

The important beginner detail here is AppProcessesToClose. Bluebeam Revu runs as Revu.exe, so I used Revu without the .exe extension. That lets PSADT warn the signed-in user before install or uninstall continues.

4

Add the Bluebeam install command

Find the Install-ADTDeployment function. In the install phase, I used Start-ADTMsiProcess to install the MSI that is stored inside the PSADT Files folder.

PSADT install command using Start-ADTMsiProcess Action Install with Bluebeam Revu x64 21 MSI
Figure: The tested install command in Invoke-AppDeployToolkit.ps1.
Start-ADTMsiProcess -Action Install -FilePath 'Bluebeam Revu x64 21.msi'
Because the MSI is inside the Files folder, I only need to reference the MSI filename. PSADT resolves it from the package content.
5

Add the Bluebeam uninstall command

In the same Invoke-AppDeployToolkit.ps1 file, find Uninstall-ADTDeployment. For this MSI example, I used Start-ADTMsiProcess again, but changed the action to Uninstall.

PSADT uninstall command using Start-ADTMsiProcess Action Uninstall with Bluebeam Revu x64 21 MSI
Figure: The tested uninstall command for the same Bluebeam MSI.
Start-ADTMsiProcess -Action Uninstall -FilePath 'Bluebeam Revu x64 21.msi'
If a future app uses a different MSI product code or an EXE installer, do not blindly copy this uninstall command. Test the uninstall locally first, then use the command that removes only the intended app.
6

Test the PSADT install on a device

Before opening Intune, test the package locally. This is where I confirmed the Bluebeam install flow actually works on a Windows device.

# Interactive install test
.\Invoke-AppDeployToolkit.exe -DeploymentType Install -DeployMode Interactive

# Silent install test - closest basic test for Intune
.\Invoke-AppDeployToolkit.exe -DeploymentType Install -DeployMode Silent

# Silent uninstall test
.\Invoke-AppDeployToolkit.exe -DeploymentType Uninstall -DeployMode Silent
PSADT install or defer prompt for BlueBeam Revu 21 showing Install and Defer buttons
Figure: PSADT prompts the user to install now or defer.
PSADT installation in progress window for BlueBeam Revu 21
Figure: Installation progress window while Bluebeam is installing.
PSADT installation successful message for BlueBeam Revu 21
Figure: Successful installation message after the MSI completed.
7

Check logs before packaging

After testing locally, check the PSADT log and MSI log. This is much easier than waiting for Intune to fail and then guessing what happened.

  • Confirm PSADT started with the expected deployment type: Install or Uninstall.
  • Confirm it used the Bluebeam MSI from the package.
  • Confirm the MSI returned success, usually exit code 0.
  • Check whether a restart was requested, for example 3010.
  • Fix local errors before uploading anything to Intune.
8

Package the PSADT folder as .intunewin

After the local install and uninstall tests passed, I used the Microsoft Win32 Content Prep Tool to package the PSADT source folder.

C IntuneApps folder showing Bluebeam source folder and IntuneWinAppUtil executable
Figure: Keep IntuneWinAppUtil.exe outside the Bluebeam source folder.
PowerShell running IntuneWinAppUtil from C IntuneApps and asking for source folder
Figure: Starting the Win32 Content Prep Tool from PowerShell.
cd C:\IntuneApps
.\IntuneWinAppUtil.exe

When the tool asks questions, I used these values:

Source folder:
C:\IntuneApps\Bluebeam

Setup file:
Invoke-AppDeployToolkit.exe

Output folder:
C:\IntuneApps\Output

Catalog folder:
N
Win32 Content Prep Tool values showing source folder C IntuneApps Bluebeam setup file Invoke-AppDeployToolkit.exe and output folder C IntuneApps Output
Figure: Final packaging values before the tool creates the package.
PowerShell output showing Invoke-AppDeployToolkit intunewin generated successfully in C IntuneApps Output
Figure: The .intunewin package was generated successfully.
The generated file name may start as Invoke-AppDeployToolkit.intunewin. In my Intune upload screenshot, the selected file is named Beam-AppDeployment.intunewin. Renaming the finished .intunewin file is okay; Intune still reads the setup file metadata inside the package.
9

Upload the package to Intune

  1. Open Intune admin center > Apps > Windows > Create.
  2. Select Windows app (Win32).
  3. Upload the generated .intunewin package.
  4. Enter the app name, description, publisher, and version.
  5. For this beginner guide, skip custom company branding or a company logo until the deployment works.
Microsoft Intune Win32 app upload screen showing Beam-AppDeployment intunewin selected and setup file Invoke-AppDeployToolkit.exe
Figure: Uploading the real PSADT package to Intune as a Windows app (Win32).
10

Configure install and uninstall commands in Intune

The Intune Program page should call the PSADT executable, not the MSI directly. Intune runs PSADT, and PSADT runs the Bluebeam MSI inside the script.

Install command:
Invoke-AppDeployToolkit.exe -DeploymentType Install -DeployMode Auto

Uninstall command:
Invoke-AppDeployToolkit.exe -DeploymentType Uninstall -DeployMode Auto
  • Install behavior: System
  • Device restart behavior: Determine behavior based on return codes
  • Return code 0: Success
  • Return code 1641: Hard reboot
  • Return code 3010: Soft reboot
  • Return code 1618: Retry
I used DeployMode Auto for Intune. This lets PSADT show the user-friendly install experience when a user session is available, while still behaving safely when Intune needs to run in the background.
11

Add a simple detection rule

Detection is how Intune decides whether Bluebeam is already installed. PSADT installs the app, but Intune detection confirms the final state.

For a beginner MSI deployment, start with one of these detection methods:

  • MSI detection: use the MSI product code if Intune reads it from the package and it matches the version you are deploying.
  • File detection: detect a known Bluebeam executable path and version after you confirm it on the test device.
  • Registry detection: detect the uninstall registry key if that is more reliable for your environment.
Do not use a random detection rule from another guide. Install the app on your own test device first, confirm exactly what file or registry key exists, then build detection from that evidence.
12

Troubleshoot install or uninstall failures

Use both log sets:

  • PSADT logs: check the deployment type, mode, commands, and toolkit exit code.
  • MSI logs: check the actual Bluebeam installer result.
  • Intune Management Extension logs: check policy, download, execution, detection, and reporting under C:\ProgramData\Microsoft\IntuneManagementExtension\Logs.
SymptomFirst check
Works manually but fails in IntuneTest with the same install command and use System context in Intune.
Application installed but Intune reports failedFix the detection rule. Install success and detection success are separate checks.
PSADT dialog does not appearConfirm DeployMode Auto, a signed-in user session, and whether the app is running in ESP/OOBE.
Install hangsCheck whether the MSI is waiting for a prompt or another installer process is already running.
Uninstall does nothingConfirm the MSI file supports uninstall, or use a product code based uninstall after testing.
Exit code 1603Read the MSI log for the actual failure. Check pending restart, permissions, old version, or custom actions.

Part 1 beginner checklist

  • Bluebeam MSI is inside the PSADT Files folder
  • $adtSession metadata has the real app name, version, architecture, and process name
  • Install command uses Start-ADTMsiProcess -Action Install
  • Uninstall command uses Start-ADTMsiProcess -Action Uninstall
  • Install works interactively on a test device
  • Install works silently before Intune deployment
  • Uninstall works silently before Intune deployment
  • Win32 package is created from C:\IntuneApps\Bluebeam
  • Intune install and uninstall commands call Invoke-AppDeployToolkit.exe
  • Detection rule is based on what exists on the test device after install
  • Deployment is tested with a small pilot group first

Frequently Asked Questions

Is this guide based on a real package?
Why not deploy the MSI directly in Intune?
Why is update or supersedence not covered here?
Can the same PSADT package install and uninstall the app?
Liladhar Sapkota - IT Professional
About the Author

Liladhar Sapkota is an IT professional with expertise in Microsoft 365, Intune, and automation. Writing documentation based on real production experience.