What Apps do you use PSADT for?

I have been using the PSADT for a while - not sure if we are the only ones to coin the term of ‘wrapping application deployments in PSADT’
I have been observing this forum as a guest for some time too, recently I signed up to ask my first question (Unable to get Show-InstallationRestartPrompt function to work with ServiceUI.exe) - If anyone else had an experience of something similar or can advise that’d be grand :wink:

But I was wondering if anyone would consider sharing the list of apps they have successfully ‘wrapped’ in the PSADT - this might be a particularly useful way to widen the communities knowledge sharing and real hand experience around the behaviour of particular apps in conjunction with PSADT

Background
I work for a UK charity as part of a small team responsible for End User Compute builds (OS and Apps). 99% of our app deployments are automated to some extent (more automation is always better to save time and have repeatable & reliable deployments).
We use Evergreen in most of our automation scripts to discover and download the latest installer version of an App, but where the app is not yet supported under Evergreen we have our own Powershell screen scrape (Invoke-Webrequest) to do this.
Once downloaded if the app is normally wrapped in PSADT, we customise the PSADT Deploy-Application.ps1 with info captured during the download phase and make a small tweak to the AppDeployToolkitConfig.xml (We disable the balloon notifications as Intune handles these perfectly well enough for our needs), once the customisation is complete, the entire application (and PSADT if used) is automatically packaged as an intunewin file, before being ready to upload during the creation of the deployment within Intune.

N.B. As we use Intune for our application deployments we choose to always package our apps (whether wrapped in PSADT or not) using the Microsoft Win32 Content Prep Tool - “IntuneWinApp.exe” this ensures all deployments are Intune Win32App deployments, which standardises our deployments.

Anyhow, enough of the rambling… here’s my list of apps for starters

Application Reason for using PSADT Notes
Adobe Acrobat Pro To prompt user to close any existing running version of Acrobat Pro and block launch during install Deployed as System to all users, usually deployed with 3 deferals
Microsoft Azure Data Studio To prompt user to close any existing running version of Azure Data Studio and block launch during install Deployed as System to all users, usually deployed with 3 deferals
Microsoft VS Code To prompt user to close any existing running version of VS Code and block launch during install Deployed as System to all users, usually deployed with 3 deferals
Mozilla Firefox To prompt user to close any existing running version of Firefox and block launch during install
(We found if you deployed a new version of Firefox while an existing version was running, the users running version stopped responding after 5-30 minutes of use after the new install had completed)
Deployed as System to all users, usually deployed with 3 deferals
Zoom Outlook (COM) plugin To prompt user to close Microsoft Outlook before install commences and block launch during install Deployed as System to all users, usually deployed with 3 deferals
Zotero To prompt user to close any existing running version of Zotero and block launch during install Deployed as System to all users, usually deployed with 3 deferals

P.S. There are plenty of other apps we deploy, but we don’t feel there is an immediate need for these to be wrapped in PSADT, this may change in the future if we discover a particular use case.

I’m looking forward to seeing your list of apps and their PSADT use cases :smiley:

1 Like

Personally I just access each app as it comes in, as things change between releases

If the app can insall with an MSI and no config is needed, then I’ll just use the MSI but as soon as any config is needed I’ll use PSADT

Hi Adrian,
Welcome to the PSADT community!
If you’re looking to see a broad range of what can be packaged with PSADT, take a look at Silent Install HQ . Jason has created a great resource for quite a number of app installations. Whenever we get a new app request it’s where I go first to see what he’s done and if I can tweak it for our needs.

1 Like

Thanks I have actually been using Silent Install HQ for a while as it is a great resource for the uncommon / undocumented switches or syntax especially for those obscure applications that seem to be hard to find accurate answers on some vendors sites.
I vaguely remember seeing the scripts page previously, but I think I must of skimmed past noticing all the PSADT integration in all those scripts, so definitely a great resource thanks - some look like a slightly simplified version of mine (as I build my Deploy-Application.ps1 scripts on the fly from a ‘template’ Deploy-Application-Template.ps1 using the latest version of PSADT and the App I am packaging)

In my ‘template’ I have replaced these lines:

[string]$appVendor = ''
    [string]$appName = ''
    [string]$appVersion = ''
    [string]$appArch = ''
    [string]$appLang = ''
    [string]$appRevision = ''
    [string]$appScriptVersion = '1.0.0'
    [string]$appScriptDate = 'XX/XX/20XX'

and the default

Show-InstallationWelcome -CloseApps 'iexplore' -AllowDefer -DeferTimes 3 -CheckDiskSpace -PersistPrompt -TopMost $true

with strings (variables) like this:

[string]$appVendor = 'VendorVariable'
    [string]$appName = 'AppNameVariable'
    [string]$appVersion = 'AppVersionVariable'
    [string]$appArch = 'AppArchVariable'
    [string]$appLang = ''
    [string]$appRevision = ''
    [string]$appScriptVersion = '1.0.0'
    [string]$appScriptDate = 'DateTodayVariable'

and

Show-InstallationWelcome -CloseApps 'CloseAppsVariable' -AllowDefer -DeferTimes 3 -CheckDiskSpace -PersistPrompt -TopMost $true

During packaging, this allows me to do a (PowerShell) find and replace with app specific info injected into a new Deploy-Application.ps1
N.B. I also use a really great function I found somewhere to get the Date Ordinal (st, nd, rd, th etc), and as I like to have nice human readable dates (in UK date format obviously :wink: ), I replace the DateTodayVariable with the results of this:

function Get-DateOrdinalSuffix([datetime]$Date) {
    switch -regex ($Date.Day.ToString()) {
        '1(1|2|3)$' { 'th'; break }
        '.?1$'      { 'st'; break }
        '.?2$'      { 'nd'; break }
        '.?3$'      { 'rd'; break }
        default     { 'th'; break }
    }
}

which can be easily called with:

$date = (Get-Date)
$suffix = Get-DateOrdinalSuffix $date
$Today = "{2}{3} {1:MMMM} {4}" -f $date.DayOfWeek, $date, $date.Day, $suffix, $date.Year

so for today, $today would result in: 25th April 2023

This gives me a fully customised Deploy-Application.ps1 script ready for use with our Intune deployments.
But improvements can always be made - so my next planned improvement is to prompt during the script build for the urgency or deadline, so we can set the -DeferTimes or include a Deadline / countdown.
Probably useful for deploying those zero-day fixes

But alongside the day job and creating our own app deployment workflow (or customising someone elses), this tweak will probably sit on the back burner for a little while.