In this third and last blog post, read part 1 and part 2, We will take a closer look at the inner workings of the Powershell App Deploy Toolkit (PSADT).
We’ll cover the PSADT AppDeployToolkitConfig and my recommended changes to this config file. We’ll also have a look at how to use the PSADT notification feature, which among other thing, support application deployment deferral.
Lastly we’ll cover how to configure a banner logo as a part of the PSADT notification process. In my experience a corporate logo is a way to assure the end user that the application currently being deployed or removed, is a trusted process coming from the IT department.
PSADT config file
The AppDeploytoolkitConfig.xmlfile is in the AppDeployTollkit folder:
This XML file controls a lot of functionality in PSADT. However, there are only a few values where I make changes.
The first thing I always do is verify which version of PSADT I am dealing with:
These values shown the version of PSADT and the data of release. Depending on the version of PSADT there may be new features available or existing features might have changed compared to any previous versions. It’s always a good idea to check out the release notes on the PSADT GitHub page to familiarize yourself with changes and/or additions to PSADT.
The first change is the Toolkit_LogPath:
This configures the PSADT logging folder. The path configured here is the default Intune logging location which is among the locations where Intune can do log collection via the Collect Diagnostics feature. This is very useful when troubleshooting application deployment issue as you don’t have to be in front of the device to go through the log files.
The Collect Diagnostics feature is found on the Windows device object in the Intune admin center.
The second change is the MSI_LogPath:
This configures the MSI logging folder. By default, PSADT enables logging of an MSI based deployment, I configure this log fil to go in the same folder as the PSADT log file. As with the PSADT log fil, this enables log collection of MSI based log files as well.
I want to highlight one more feature here, the installationUI_LanguageOverride:
By default, PSADT displays notifications based on the Windows OS language. Which means that on a Danish (da-DK) Windows all notifications from PSADT are in Danish. This value overrides the default value so that PSADT displays notifications in a specific language and doesn’t consider the Windows language configuration.
PSADT banner logo configuration
Another cool feature is that we can change the banner logo displayed during deployment of an application. This provides us with the possibility of applying a company logo that the users are familiar with. In part 2 of the series, I have included a screen recording which show a Notepad++ deployment process using PSADT. Here you’ll see the default PSADT banner logo during the deployment process.
If you want to include your own banner logo, all you must do to overwrite the AppdeployToolkitBanner.png with your own banner logo file retaining the file name. The banner logo file must be in PNG format and must be 450 x 50 in size.
Let’s see how this looks with my brand new kasperjohansen.net banner logo:
The logo used does not fit the recommended size, but I hope you get the idea about how a custom logo banner looks like.
PSADT notification feature
PSADT has a few different ways of providing notifications during application deployment. In the PSADT docs there are more than a handful of commands which can provide different kinds of notifications:
These commands are configured in the Deploy-Applications.ps1 and 3 of them is configured by default, Show-InstallationWelcome, Show-InstallationProgress and Show-DialogBox.
Both the Show-InstallationWelcome and Show-InstallationProgress are used during the pre-install, pre-uninstall and pre-repair phases, we’ll have a closer look at these commands in a moment.
The Show-DialogBox is used as a part of the error handling in the Deploy-Application.ps1 script:
Unless you run into an error with the Deploy-Application.ps1 script execution, you shouldn’t encounter anything from the Show-DialogBox command.
Show-InstallationWelcome
This command supports quite a few parameters which enables certain features, presenting different kinds of notifications to the user and some of these features even support interaction from the user. Let’s look at some of the notification features.
In the pre-install phase I usually use the Show-InstallationWelcome command with these parameters:
This will close any running notepad++ processes and check if there is enough available disk space.
In this case the -CheckDiskSpace parameter automatically calculates the required available disk space based on the total size of the files in the Files and SupportFiles folders.
If you want to configure a specific amount of available disk space, you can use the -RequiredDiskSpace to provide the required available disk space in MB.
There are other cool parameters we can provide with the Show-InstallationWelcome command, like -CloseApps, -AllowDefer and -DeferTimes:
With the -CloseApps property we can provide one or more processes to stop before proceeding with the deployment. In this case I have configured the notepad++ process name. Multiple process names are separated by a comma. This is useful if you know that certain processes cannot be running during deployment of an application.
With the -AllowDefer property we can provide the user with the possibility of deferring an application deployment. Obviously, this is not something we should do with business-critical applications, but maybe with non-critical applications where it doesn’t matter whether the software is deployed instantly or in 1 or 2 hours.
From the user’s point of view an application with deferral enabled looks like this:
The -DeferTimes property configures how many times the user may defer the application deployment, in this case I have set a value of 3, which translates to 3 times. As you can see in the screenshot, this is tracked, and the user is able to see how many remaining deferrals are available with this application. The remaining number of deferrals per application is stored in registry on the Windows device here:
As you can see, I now have 2 remaining deferrals available for Notepad++.
Once the deferral limit is reached, the user will longer be able to defer the deployment of the application, and the application will be deployed without any further possibility of the user interacting with the deployment process.
I have made a small screen recording of how it looks from the user’s point of view when the deferral limit is reached:
Show-InstallationProgress
With the Show-InstallationProgress command you can convey a message to the user, when deploying an application. In some situations, you might want to provide some additional information to the user during deployment, it could be that the deployment process takes longer than usual maybe because of a configuration or cleanup task is running after the application installation process.
Again, I have made a small screen recording where I show how this message looks from the user’s point of view and in this case the PSADT information box has been moved to the top left corner:
In this case I have configured the additional properties of the Show-InstallationProgress in the pre-installation phase, however, you are also able to configure the Show-InstallationProgress in both the pre-repair and pre-uninstall phases.
The -Statusmessage property is where you would configure whatever message you want to convey to the user. The -WindowsLocation property is where the PSADT information box is located, the values supported are – TopLeft, Top, TopRight,TopCenter, BottomLeft, Bottom and BottomRight. Lastly, with the -TopMost property you can configure if the PSADT information box should always be in the foreground, meaning it will always be visible during the deployment process.
This concludes this part 3 the last in the serie of blog posts on how to streamline application management with PSADT and Intune. I hope you have enjoyed reading the blog posts and hopefully you now have a good understanding of how PSADT works. With these 3 blog posts I have only scratched the surface of what we can do with PSADT, keep an eye on my blog for future post with more advanced ways of building applications deployment packages with PSADT.
Feel free to reach out to me on X or on LinkedIn if you have any comments or questions.