Wow – it’s hard to believe we’ve marked almost two months off the calendar in 2025 already. Let’s start it off with a bang, shall we?
If you’re into device management and/or application packaging, have you ever wished you could have some additional validation that the app actually functions post-install without waiting on app owners to jump on and manually test?
Let’s face it – we’ve all been bitten by “false positives” on app deployments – we think an app install succeeded just because we have a good success code. Sure, the install itself may have succeeded, but is it functional? What about supporting packages or .NET dependencies? Or application configuration? Antivirus/firewall exclusions? The list goes on and on for things that could go wrong. If only we had a way to automatically validate the functionality and performance post-install…
What if I told you this was totally possible? Imagine having a virtual user test the software and generate a report of both performance and functionality on the endpoint (physical or virtual) after the test was completed. It may seem like a pipe dream in the far distant future, but this is possible today, and it’s actually fairly simple. This is what it will look like when we put it all together!
The Components
There are four components I’m using in this example:
Intune – Microsoft’s cloud-based endpoint management solution.
Login Enterprise – The de facto standard for automated testing across all physical and virtual Windows desktops and applications.
PSAppDeployToolkit – An open-source project used by many organizations to streamline their application deployments.
ServiceUI.exe – Part of the Microsoft Deployment Toolkit, ServiceUI allows for processes initiated under SYSTEM to be displayed in the user’s session. This is especially handy for deployments that need user input or allowing the user to delay the install.
This will be a two-part post. For this one, we’ll focus on preparing and validating the package. Part two will cover the actual deployment. I’ll be using Notepad++ in this example, so just fill in the blanks for other apps/tests/installs. I have all of the files provided in links throughout the post, as well as at the bottom.
Import the Application Test to Login Enterprise
First, get your Notepad++ test (CS file) uploaded to the Login Enterprise Appliance if you haven’t already, underneath Applications:

Next, head to Manage Tests -> Application Tests. Create a new Desktop-based application test, so choose the Desktop Connector. This means we’ll be running the test directly without involving the Launcher component.

Add the Notepad++ application as a step for the test:

Back under the Manage Application Tests page, grab the test GUID from the “Information” icon. We’ll need this for our script later:


Prepare the Package
Next, we’re going to wrap the Notepad++ installer with the PSAppDeployToolkit. I’m using the new v4 framework, which has many refactored modules/commandlets compared to v3, so keep that in mind.
Download the PSAppDeployToolkit v4 template via GitHub here.

Extract the template and put it into a folder named “Notepad++ w App Test” or something similar. We’ll call this the “root” directory. Put your ServiceUI.exe executable directly in here – I like to name it ServiceUIx64.exe to differentiate from the x86 one. Within the Files folder, we’ll place the Notepad++ Installer and the Login EXE.

Within the Files directory:

Now, in the root directory, edit your Invoke-PSAppDeployToolkit.ps1.
For the Pre-Install and Pre-Uninstall tasks, you’ll see a line in each for Show-ADTInstallationWelcome. The default here is to close explorer, so we’ll switch this out with notepad++ and not allow the user to defer, so it looks like this:
Show-ADTInstallationWelcome -CloseProcesses notepad++ -CloseProcessesCountdown 60
Under the Install section, specifically under the line that says ## <Perform Installation tasks here>, add this line:
Start-ADTProcess -FilePath “$($adtSession.DirFiles)\npp.8.7.6.Installer.x64.exe” -ArgumentList ‘/S’
Under the Post-Installation section, put this under the line that says ## <Perform Post-Installation tasks here>:
Start-ADTProcessAsUser -FilePath “$($adtSession.DirFiles)\LoginPI.Logon.exe” -ArgumentList ‘LoginPI.Logon.exe https://<LOGIN-ENT-FQDN> <APP-TEST-GUID>’
For example, mine looks like this, using the screenshot from the information icon earlier in the Application Test:
Start-ADTProcessAsUser -FilePath “$($adtSession.DirFiles)\LoginPI.Logon.exe” -ArgumentList ‘LoginPI.Logon.exe https://nick-loginvs1.nick.local 25a1dea2-bd96-476a-bbab-08dcede77940′
That is one awesome thing about PSAppDeployToolkit; we can actually use that Start-ADTProcessAsUser commandlet to easily switch the Logon Executable test back to the user session. You’ll notice I added an extra argument in there, LoginPI.Logon.exe. For some reason, the first argument was totally being ignored by the Logon Executable (it was trying to use the app test GUID as the URL) when using the Start-ADTProcessAsUser commandlet.
For the Uninstall section, add the following line under ## <Perform Uninstallation tasks here>:
Start-ADTProcess -FilePath “C:\Program Files\Notepad++\uninstall.exe” -ArgumentList ‘/S’
Note that all of this is already completed in the .zip below, so you’ll just need to change your Login Enterprise appliance URL and app test GUID if you’re wanting to try it out-of-the-box.
Test the Package and Application Test
All righty – we should theoretically now have a functioning package. On a test machine, right-click the Invoke-AppDeployToolkit.exe and Run as Administrator. Notepad++ should install itself, and then the app test automatically gets fired off, just like in the video above. How freakin cool is that!?
That wraps up Part One of this series. Part Two will focus on porting this to an Intune package using IntuneWinAppUtil. As always, if you have any questions, don’t hesitate to reach out. Check out Part Two here!
Happy testing!
Notepad++ w App Test.zip (just fill in the Login Enterprise URL and app test GUID for your environment)