Skip to content

Releases: PSAppDeployToolkit/PSAppDeployToolkit

PSAppDeployToolkit 4.1.0-rc1

09 Jul 00:18
f59e831
Compare
Choose a tag to compare
Pre-release

πŸ–₯️ What's New in v4.1 (Release Candidate) - 2025-07-08

NOTE: This is currently a release candidate for PSADT 4.1. which has not yet reached final status. While we are confident that it is rock solid, we are still testing it and may make changes before final release. As such, it is not recommended for production use at this time.

🎯 Major Improvements

  • Up until now, it was not possible to display any user interface when deploying an application as SYSTEM using Intune (or any endpoint management tool) without using ServiceUI. Well, now it IS possible:

    • I REPEAT! You no longer need to use ServiceUI, EVER AGAIN! πŸ₯³πŸŽ‰πŸŽŠπŸͺ…πŸͺ©πŸ‘―‍♂️
    • In fact, we strongly advise you stop using it as soon as possible. ServiceUI works by manipulating system security tokens in a way that could allow malicious actors to escalate privileges or bypass security controls.
    • We've taken a fresh approach which leverages the Windows security model and separates out user interactions onto a process running in the users' session - we never perform any user interaction or messaging of any kind within the SYSTEM context. This means a more secure and reliable deployment experience.
    • We have also removed the requirement for the 'Allow users to view and interact with the program installation' checkbox in Configuration Manager deployments.
  • There is now full feature parity between the Fluent and Classic User Interfaces:

    • Deferral Deadline and Countdown Timer on Close Apps Dialog
    • Ability to prevent the Restart Dialog from being dismissed once a certain point in the countdown is reached
    • Ability to allow users to move dialogs
    • Ability to set the initial dialog placement to multiple locations
    • PowerShell ISE compatibility
  • Furthermore, the Fluent UI has gained new features:

    • Due to the rearchitecture of how we handle user interaction with Dialogs, it is now possible to prompt the user for input using Show-ADTInstallationPrompt's -InputBox parameter
    • Support for formattable text (Bold, Italic & Accent) as well as URL hyperlinks in dialog messages
    • You can now set the % complete of the progress bar in the Progress Dialog (for example, if you are running a custom script that you want to show incremental progress changes for)
    • Ability to set different icons for Light / Dark mode
  • The security rearchitecture required all of our process execution code to be rewritten. This has enabled us to provide a wealth of new capabilities to both Start-ADTProcess and Start-ADTProcessAsUser using the following new parameters:

    • -UseUnelevatedToken parameter to force a process run without elevation, for deploying user-context apps with Windows 11 Administrator Protection enabled
    • -WaitForChildProcesses parameter to wait for all child processes to end - useful for installers/uninstallers that hand off to another process and exit early
    • -KillChildProcessesWithParent parameter to close all started child processes once main process has ended - useful when installers start the application post-install, which is typically undesired when running as system
    • -Timeout parameter along with supporting -TimeoutAction and -NoTerminateOnTimeout parameters to control the outcome
    • -ExpandEnvironmentVariables parameter to allow variable expansion such as %AppData% when running a process as a user
    • -StreamEncoding parameter, useful for apps like Winget that write to the console using UTF8
    • -PassThru output now has a new 'interleaved' property that combines stdout/stderr in order
  • It's now possible to set PSADT configuration settings via Group Policy using the included ADMX templates, which will override any settings in the config.psd1 file. This allows you to change, update or enforce settings across an organization.

πŸ› οΈ New and Enhanced Functions

πŸ› οΈ Other Improvements

  • Show-ADTHelpConsole has been given some love and a facelift with High-DPI awareness, resizability, PowerShell 7 compatibility, and extension module display
  • Added -NoWait support to Show-ADTDialogBox
  • Added process detection code to enable automatic silent deployments when processes aren't running
  • Added /Debug switch to Invoke-AppDeployToolkit.exe to show terminal output for debugging purposes
  • Added /Core switch to Invoke-AppDeployToolkit.exe to allow PowerShell 7 usage

πŸ› οΈ Changes

  • Changed default DeferExitCode from 60012 to 1602, since ConfigMgr and Intune recognize this natively as 'User cancelled the installation'
  • Changed toolkit to exit with 3010 if a suppressed reboot was encountered without having to use -AllowRebootPassThru. To mask 3010 return codes and exit with 0, you can now add -SuppressRebootPassThru
  • Changed default msiexec.exe parameters in interactive mode from /qb-! to /qn
  • Changed UI functions to no longer minimize windows by default, -MinimizeWindows can be added to enable this
  • Changed the 'Processes to close' in the Invoke-AppDeployToolkit template to the AppProcessesToClose ADTSession parameter, where they can be re-used over Install / Uninstall / Repair
  • Changed installation failure to be silent as it was in v3.x; however, you can still uncomment a line to get the full detailed stack trace as used in v4.0.x, or a new minimal example using the Fluent UI

πŸ› οΈ Fixes

  • Fixed Start-ADTProcessAsUser function to work as expected
  • Fixed Block-ADTAppExecution to avoid triggering AV solutions
  • Fixed dialogs to show correct deployment type Install / Uninstall / Repair
  • Fixed SCCM pending reboot tests within Get-ADTPendingReboot
  • Fixed MSI repair to default to 'Reinstall' to avoid forced unavoidable reboots when running msiexec /f against an app that is in-use
  • Fixed OOBE detection code to factor in User ESP phase

PSAppDeployToolkit 4.0.6

24 Feb 05:53
Compare
Choose a tag to compare

Version 4.0.6 [2025-02-23]

What's Changed?

  • Move session buffer adding/removing back to the Open/Close-ADTSession.
  • Update the -Silent parameter setup as it should only be forced on when its unbound.
  • Change "installation" for "deployment" in Show-ADTInstallationWelcome.
  • Replace bad reference to AppDeployToolkitConfig.xml.
  • Remove last remaining reference to AppDeployToolkitConfig.xml within comment-based help.
  • Fix bad cherry pick from 4.1.0 development track.
  • Fix missing space within Set-ADTActiveSetup preventing PowerShell scripts from firing.
  • Recompile developmental PSADT.dll file.
  • Update markdown help exports.
  • Set up proper disposal of the balloon tip by way of an event handler.
  • Re-write Get-ADTApplication main loop to handle bad uninstall entries without bombing out entirely.
  • Fix bad parameter set setup in Invoke-ADTFunctionErrorHandler.
  • Make version casting in Set-ADTActiveSetup more robust against failures.
  • Don't fail out on Get-ADTPendingReboot's $IsIntuneClientRebootPending tests if the key doesn't exist.
  • Amend bad example for Get-ADTMsiTableProperty.
  • Update markdown help export for Invoke-ADTFunctionErrorHandler.
  • Ensure the live documentation follows that of 4.0.x, not develop.
  • Fix bad default for Invoke-ADTFunctionErrorHandler's -LogMessage parameter.
  • Widen out the buttons in Show-ADTWelcomePromptClassic as much as possible.
  • Allow Open-ADTSession's unbound arguments setup to accept null/empty values.
  • Rework ConvertValuesFromRemainingArguments() to perform null checking of arguments.
  • Clean up the comment-based help for Show-ADTInstallationRestartPrompt and properly group parameters into parameter sets.
  • Update markdown help export for Invoke-ADTFunctionErrorHandler.
  • Add some null checking to the parameters passed through to DeploymentSession's constructor.
  • Remove the Where() method usage within InternalDatabase.Init().
  • Use consistent scoping when accessing module's CommandTable in the C# code.
  • Don't pre-calculate the LogTimeOffset for CMTrace logging as it'd result in incorrect logging if DST kicks in mid-way through a deployment.
  • Remove superfluous whitespace from C# project files.
  • Add forced line breaks in comment-based help so the markdown exports look right.
  • Fix nameFilterScript reference.
  • Replace classic progress dialog's synchronised hashtable for more modern ConcurrentDictionary.
  • Minor OCD fix on a variable's casing within Start-ADTMsiProcess.
  • Always print script info properties irrespective of whether we're in Zero-Config MSI mode or not.
  • Ensure all null characters are stripped from log messages as they break CMTrace.
  • Remove line feeds from logged messages in the exe.
  • Don't add classic progress window errors to the SyncHash, better to get them from the SessionStateProxy.
  • Rework OneTrace spacing fixes to make replacement text more robust.
  • Don't specify default values within Invoke-AppDeployToolkit.ps1 for -DeploymentType and -DeployMode.
  • Leverage [PSDefaultValue()] decorations where it makes sense to do so.
  • Properly escape slashes in yaml help examples.
  • Replace Get-ChildItem -Path call with Get-ChildItem -LiteralPath within module init system to prevent erroneous wildcard characters from a given module path affecting the operation.
  • Fix bad string formatting for dialog subtitles.
  • Fix #1261. PSADT windows can be closed from taskbar.
  • Recompile DLL files following recent changes.
  • Amend comment-based help for Block-ADTAppExecution/Unblock-ADTAppExecution.
  • Amend comment-based help links for all functions.
  • Fix bad SYSTEM user check within Set-ADTActiveSetup.
  • Don't allow -WindowStyle Hidden in Set-ADTActiveSetup when running scripts for the current user.
  • Properly handle delimited strings in Invoke-ServiceUI.ps1 when running from powershell.exe -File setup.
  • Fix bad $FileCopyError setup in Copy-ADTFile.
  • Tighten up some code in Invoke-ADTServiceAndDependencyOperation.
  • Move service validation for Start/Stop-ADTServiceAndDependencies into the scriptblock so ErrorAction works against it as one would expect.
  • Simplify the relative path cleanup in New-ADTTemplate.
  • Tidy up bad uses of DeploymentSession.ScriptDirectory throughout module since it can now be an array.
  • Fix for CloseProgressDialog being unable to close.
  • Rework user ESP phase detection code.
  • Changed Copyright date.
  • Revamp README.

New Contributors

Full Changelog: 4.0.6...4.0.5

PSAppDeployToolkit 4.0.5

20 Jan 09:12
Compare
Choose a tag to compare

Version 4.0.5 [2025-01-20]

What's Changed?

  • Update markdown help exports.
  • Remove bad setup in Set-ADTActiveSetup (fixes #1275)
  • Correct the setup for -DeferTimes by not allowing signed input.
  • Avoid pipeline delays when calling Stop-Process.
  • Fix -ForceCountdown setup to stop it infinitely looping.
  • Revert accidentally committed test changes.
  • Update markdown help export for Show-ADTInstallationWelcome.
  • Refactor the classic dialog's countdown code into something sane and proper.
  • Optimise most intellisense warnings from MSVC for DeploymentSession class.
  • Optimise parameter processing in DeploymentSession's ctor.
  • Simplify WelcomeState setup within Show-ADTInstallationWelcome.
  • Fix bad string table accesses within Show-ADTWelcomePromptClassic.
  • Get module working on Windows again following last commit.
  • Rework module init process to support a minimal mode for New-ADTTemplate to function.
  • Don't update the session exit code in Start-ADTProcess when the value is specified via -IgnoreExitCodes.
  • Use Get-ADTBoundParametersAndDefaultValues against Open-ADTSession so it can include default values.
  • Fix bad process setup in Test-ADTMutexAvailability.
  • Fix bad commentary regarding service deletion via Test-ADTServiceExists.
  • Fix shortcut icon setup.
  • Fix shortcut function path extension checks.
  • Fix bad character escaping for DeploymentSession.InstallTitle.
  • Patch out bad setup in previous commit.
  • Escape curly braces in log format lines in case they happen to be present.
  • Do better string tests within Import-ADTConfig.
  • Fix bad call to New-Item within New-ADTShortcut.
  • Further refinement to Get-ADTUniversalDate setup.
  • Fix lost .ToUniversalTime() method within Get-ADTUniversalDate.
  • Clean up main loop within Set-ADTItemPermission.
  • Restore proper error handling/control within Convert-ADTNTAccountOrSID.
  • Pre-calculate the domain SID in ConvertTo-ADTNTAccountOrSID.
  • Amend comment-based help for Set-ADTItemPermission.
  • Fix bad constructors for ShortcutLnk and ShortcutUrl.
  • Repair bad setups in Get-ADTShortcut.
  • Fix printing of logged on session information.
  • Fix build system running PSScriptAnalyzer twice on files.
  • Fix build system issues from previous commit.
  • Initialise the classic UI assets late to allow v3 compatibility mode to work for Server Core.
  • Fix CompressLogs setup that wasn't creating directory as required.
  • Add -ErrorAction Ignore to line in previous commit to make GitHub Actions happy.
  • Make the module build system throw if there's an installed instance of the module.
  • Allow specifying specific ErrorRecord properties to resolve in Invoke-ADTFunctionErrorHandler.
  • Rework build system ScriptAnalyzer setup to properly incorporate all files.
  • Revert back to using Import-LocalizedData to import the module manifest in the build system.
  • Fix bad calls to Get-ADTBoundParametersAndDefaultValues within Uninstall-ADTApplication.
  • Pre-cache regenerated regex in loop within Uninstall-ADTApplication.
  • Optimise call to Get-ADTApplication within Start-ADTMsiProcess.
  • Don't use [System.IO.Path]::GetFileNameWithoutExtension() within Start-ADTMsiProcess as it mucks with log filenames that contain dots.
  • Amend comment-based help for previous commit.
  • Re-write Send-ADTKeys.
  • Fix order in Export-ADTEnvironmentTableToSessionState.
  • Add -Force to the Remove-Item command in Remove-ADTContentFromCache (fixes #1229)
  • Correct help example in New-ADTShortcut
  • Amend help for Uninstall-ADTApplication.
  • Prevent superfluous IFEO data from affecting the Block-ADTAppExecution code.
  • Rework version checking within Set-ADTActiveSetup.
  • Fix bad $ActiveSetupFileName setup within Set-ADTActiveSetup.
  • Fix bad continuance within Update-ADTGroupPolicy.
  • Fix bad enum equality check in DeploymentSession.Close().
  • Add guard clause preventing classic dialog operation on Server Core environments.
  • Make the build system report the full file's name on encoding failure issues.
  • Repair nullable issue for PSADT.Shared.ConvertValuesFromRemainingArguments().
  • Fix bug where blocked executables weren't properly resetting.
  • Extend changes from previous commit to the development psm1 file also.
  • Wrap module's procedural code in try/catch blocks as it makes the error from Import-Module look better.
  • Perform better null checks when instantiating InstalledApplication objects in Get-ADTApplication.
  • Add HelpLink to Get-ADTApplication output.
  • Use PowerShell native utilities to amend Invoke-AppDeployToolkit content within New-ADTTemplate.
  • Apply fix from "- Fix bad setup in New-ADTShortcut's -Path ValidateScript decoration." to other shortcut functions also.
  • Fix bad comment in Close-ADTProcess.
  • Remove unnecessary trim from split stack trace in module init code.
  • Explicitly specify the manifest's filename against Import-LocalizedData while importing the module.
  • Ensure Close-ADTSession while being ran directly from the command line properly breaks out of the runspace.
  • Add unbound arguments in Open-ADTSession to $PSBoundParameters for non-[PSADT.Module.DeploymentSession] session objects.
  • Only process unbound arguments in Open-ADTSession for [PSADT.Module.DeploymentSession] session objects.

Full Changelog: 4.0.4...4.0.5

PSAppDeployToolkit 4.0.4

19 Dec 23:31
Compare
Choose a tag to compare

Highlights

  • Add Convert-ADTValueType to provide casted value type conversions without overflow exceptions.
  • Add DisableDefaultMsiProcessList to Open-ADTSession to allow disabling the zero-config MSI process list evaluation.
  • Add Export-ADTEnvironmentTableToSessionState to toolkit to allow manual environment table exportation to the provided SessionState object.
  • Add Get-ADTPresentationSettingsEnabledUsers to test whether the user has enabled presentation mode via the mobility settings on the device.
  • Add New-ADTExampleFunction as an example function within PSAppDeployToolkit.Extensions.
  • Add -SkipUnloadedProfiles parameter to Invoke-ADTAllUsersRegistryAction.
  • Add a copy of the module's public certificate to the module root.
  • Add config option to allow sending log files to a subfolder of LogPath.
  • Add in process to allow custom variables to be added to a DeploymentSession object.
  • Add in some empty files to the Files/SupportFiles folders to stop GitHub upload-artifact from dropping the empty folders.
  • Add new function Get-ADTOperatingSystemInfo.
  • Add stronger typing to Get-ADTUserProfiles returned object output.
  • Advise that -WindowLocation has no effect for Show-ADTInstallationProgress with fluent dialogs.
  • Allow overriding a session's default LogName value.
  • Allow specifying a DeploymentSession class override against Open-ADTSession.
  • Allow the CreateProcessAsUser() code to work for non-SYSTEM admin users.
  • Change loading of PSAppDeployToolkit.Extensions to wildcard search for PSAppDeployToolkit.*.
  • Ensure a failed Close-ADTSession operation exits out with an exit code.
  • Ensure a message dialog from the exe is always topmost.
  • Ensure PSADT.Invoke doesn't show any messages if running in NonInteractive/Silent modes.
  • Ensure ServiceUI wrapper batch scripts exit with PowerShell's exit code.
  • Ensure Show-ADTDialogBox is bypassed in Non-Interactive mode, because it's interactive
  • Ensure throws from DeploymentSession's constructor maintain the exception's stack trace that it's rethrowing.
  • Fix bad $StartMode re-writing within Start-ADTServiceStartMode.
  • Fix bad _installName regex setup within DeploymentSession's constructor.
  • Fix bad setup in DeploymentSession.Close() stemming from bad auto-completion during "- Initial porting of ADTSession.Close() into C# code.".
  • Fix bad setup in New-ADTShortcut's -Path ValidateScript decoration.
  • Fix badly escaped formatting in log compression string.
  • Fix IFEO path length constraints potentially effecting BlockExecution functionality.
  • Fix recovery scheduled task creation in Block-ADTAppExecution.
  • Get custom scripts working with the exe as the parameter parsing was wrong.
  • Have our build system sign our own compiled wpfui DLL files.
  • Import our assemblies via the psm1 file so we can load them from UNC paths/mapped network drives if required.
  • Improve exception handling within PSADT.GUI.Explorer.RefreshDesktopAndEnvironmentVariables().
  • Make Close-ADTSession throw if it's called without an active session.
  • Make DynamicProcessEvaluation = $false work right for Show-ADTWelcomePromptFluent.
  • Make all string comparisons for exe arguments case insensitive
  • Make the exe pass through -NonInteractive on the powershell.exe command line.
  • Minor refactor for Show-ADTWelcomePromptFluent to optimise out an extra Get-ADTRunningProcesses call.
  • Numerous fixes to Set-ADTActiveSetup.
  • Only use the .NET Framework 4.6.2 DLL files with our project.
  • Optimise setup in Get-ADTPEFileArchitecture to avoid an unnecessary try/catch block.
  • Provide more/better filtration within Get-ADTWindowTitle.
  • Relax the duplicate assembly checking stringency by allowing existing assemblies if the hashes match the currently importing module's assemblies.
  • Remove the HelpInfoURI value from the manifest, we don't support this.
  • Replace bad Get-CimInstance calls with the correct Invoke-CimMethod calls.
  • Reset PSModulePath environment variable in the ext to handle pwsh.exe > exe > powershell.exe invocations.
  • Resolve New-ADTTemplate's -Destination parameter prior to using it.
  • Restore lost log message within Update-ADTDesktop.
  • Rework DeploymentSession's RunspaceOrigin parameter to be NoExitOnClose, which is what it actually means.
  • Rework Open-ADTSessions $runspaceOrigin setup so that setups via functions don't exit powershell.exe unless -NonInteractive is explicitly passed.
  • Rework arguments setup within Invoke-ServiceUI.ps1 as you can't pass booleans to SwitchParameter values via powershell.exe -File <script.ps1> setups.
  • Rework DeploymentSession instantiation to not require sending in module internals during construction.
  • Rework how we manage caller preference values to make the implementation more robust between modules.
  • Rework process closing code when entering the -PromptToSave branch.
  • Rework the architecture setup to always use the x64 ServiceUI executable on any 64-bit target.
  • Sub-express Get-ADTRegistryKey calls in Get-ADTUserProfiles to avoid typing errors.
  • Unseal PSADT.Module.DeploymentSession] to allow inheritance for advanced customisations.
  • Updated wording of Norwegian.
  • When compiling configs/string tables, don't erase defined values with null/empties from successive imports.
Full Changelog
  • Ensure the build system removes Invoke-AppDeployToolkit.pdb from the v3 frontend folder.
  • Get custom scripts working with the exe as the parameter parsing was wrong.
  • Ensure a message dialog from the exe is always topmost.
  • Reset PSModulePath environment variable in the ext to handle pwsh.exe > exe > powershell.exe invocations.
  • Fix config/strings path print issues within DeploymentSession's constructor.
  • Ensure Show-ADTDialogBox is bypassed in Non-Interactive mode, because it's interactive
  • Make all string comparisons for arguments case insensitive
  • Ensure PSADT.Invoke doesn't show any messages if running in NonInteractive/Silent modes.
  • Throw a better exception on PowerShell process failure.
  • Catch MessageBox.Show() exceptions in PSADT.Invoke and swallow them.
  • Amend check in module initialisation code to prevent localisation issues.
  • Extend previous commit to make Open-ADTSession's -ScriptDirectory parameter a string array also.
  • Allow Initialize-ADTModule to accept an array of ScriptDirectory values.
  • Synchronise changes within Invoke-AppDeployToolkit.ps1 with the example scripts.
  • Rework the architecture setup to always use the x64 ServiceUI executable on any 64-bit target.
  • Rework arguments setup as you can't pass booleans to SwitchParameter values via powershell.exe -File <script.ps1> setups.
  • Ensure Invoke-ServiceUI.ps1 stops on a dime if there's an error.
  • Ensure ServiceUI wrapper batch scripts exit with PowerShell's exit code.
  • Fix bad $StartMode re-writing within Start-ADTServiceStartMode.
  • Change last remaining Write-Error call to a throw on the back of the previous commit.
  • Relax the duplicate assembly checking stringency by allowing existing assemblies if the hashes match the currently importing module's assemblies.
  • Rework module importing to remove remaining $RequiredModules from module's global scope.
  • Relocate a throw in ImportsFirst.ps1 so that it doesn't break due to $CommandTable substitution which doesn't exist yet.
  • Optimise function imports to prevent cycling through function names twice.
  • Extend previous commit to the unbuilt PSAppDeployToolkit.psm1 file as well.
  • Make the build system do $CommandTable translations in ImportsFirst.ps1/ImportsLast.ps1.
  • Use PowerShell's Add-Type for the normal assembly load pathway.
  • Optimise previous commit by only doing network checks once, and ensure changed code uses our $CommandTable.
  • Add check for mapped drive
  • Import our assemblies via the psm1 file so we can load them from UNC paths if required.
  • Rework module import via manifest check to not be dependent on the assembly.
  • Add a bit more modularity to the build system.
  • Resolve New-ADTTemplate's -Destination parameter prior to using it.
  • Set the DefaultUser SID in Get-ADTUserProfiles using WellKnownSidType.NullSid instead of a string literal.
  • When compiling configs/string tables, don't erase defined values with null/empties from successive imports.
  • Ensure -Force is honoured in Exit-ADTInvocation.
  • Make Close-ADTSession throw if it's called without an active session.
  • Remove leftover markdown help for Show-ADTBlockedAppDialog.
  • Set up proper enums for DeploymentType and DeployMode as well.
  • Fix module build system following IFEO changes/fixes.
  • Minimise amount of Get-ADTStringTable calls within Block-ADTAppExecution and add some quote safety.
  • Amend previous commit to use conhost.exe --headless to hide the window.
  • Fix IFEO path length constraints potentially effecting BlockExecution functionality.
  • Fix recovery scheduled task creation in Block-ADTAppExecution.
  • Fix bad SwitchParameter evaluation when constructing a DeploymentSession object.
  • Sub-express Get-ADTRegistryKey calls in Get-ADTUserProfiles to avoid typing errors.
  • Optimise previous commit to ensure a session is always removed from the buffer during a close failure.
  • Ensure a failed Close-ADTSession operation exits out with an exit code.
  • Update markdown help export for Open-ADTSession.
  • Pack DeploymentSession's numerous bools into a bitfield.
  • Change DeploymentSession.GetDeploymentStatus() to be a proper enum.
  • Don't flush the module's callbacks upon module init otherwise it defeats the purpose of the system.
  • Allow specifying a DeploymentSession class override against Open-ADTSession.
  • Add better throws to InternalDatabase's getters.
  • Store out the SessionState w...
Read more

PSAppDeployToolkit 4.0.3

09 Dec 10:17
Compare
Choose a tag to compare

Bugfix release to address several reported issues, including:

  • Add warning to Start-ADTProcessAsUser that the toolkit needs to be running as SYSTEM for it to operate.
  • Use a better exception type for native binaries that finish with a bad exit code.
  • Amend examples in comment-based help for New-ADTTemplate.
  • Amend all comment-based help areas that reference old 3.x variables that don't exist anymore.
  • Amend poorly translated French MessageInstallDetail string.
  • Update markdown help exports following recent changes.
  • Use string.IsNullOrWhiteSpace() everywhere.
  • Strongly type the parameters for ConvertTo-ADTNTAccountOrSID.
  • Add missing Norwegian translations (AI generated via DeepL, may not be amazing).
  • Hook up -NoCountdown for Show-ADTInstallationRestartPromptFluent.
  • Add IsIntuneClientRebootPending property to Get-ADTPendingReboot output.
  • And logging issue within Start-ADTProcessAsUser.
  • Amend the CMTrace log time offsetting to properly factor in negative offsets.
  • Remove the PowerShell host version restriction as compatible hosts can have version numbers drastically different the PowerShell version.
  • Fix the throw message for Start-ADTMsiProcess's -FilePath parameter.
  • Throw in Start-ADTMsiProcess if a ProductCode is used with an Install action.
    Rework $msiProduct setup within Start-ADTMsiProcess.
  • Completely rework log file setup within Start-ADTMsiProcess.
  • Resiliency improvements around determining the ProductCode in Start-ADTMsiProcess.
  • Remediate minor issues within Invoke-ADTServiceAndDependencyOperation.
  • Repairs and immutability improvements to output of Get-ADTPendingReboot.
  • Patch bad setup in Show-ADTInstallationWelcome preventing sessionless usage of the function.

Please note that the PSADT documentation is being revised and updated continuously over the coming few days. Please check back for updates.

Full Changelog: 4.0.2...4.0.3

PSAppDeployToolkit 4.0.2

05 Dec 07:46
Compare
Choose a tag to compare

What's Changed

  • Patch out null access for $envLogonServer within New-ADTEnvironmentTable.
  • Fix bad setup in Show-ADTBalloonTip that was preventing Get-ADTBoundParametersAndDefaultValues from working right.
  • Revise Get-ADTBoundParametersAndDefaultValues to exclude common parameters by default.

Full Changelog: 4.0.1...4.0.2

PSAppDeployToolkit 4.0.1

04 Dec 22:53
Compare
Choose a tag to compare

What's Changed

  • Patch out issue with the v3 Deploy-Application.exe file.
  • Fix bad setup producing two executables within the New-ADTTemplate -Version 3 output via the build system.
  • Remove sub-expression within PSAppDeployToolkit.psd1 which was preventing PSGallery publishing.

Full Changelog: 4.0.0...4.0.1

PSAppDeployToolkit 4.0.0

04 Dec 19:49
Compare
Choose a tag to compare

Version 4.0.0 [2024-12-04]

  • Digitally signed PowerShell module
  • Codebase completely refactored and optimized
  • Defensively coded to ensure security and reliability
  • Now provides PowerShell 7 and ARM support
  • Complete removal of VBScript code from the project
  • All C# code is now compiled and digitally signed
  • Integrated Zero-Config WIM file support
  • Support for overriding config via the registry - ADMX template to follow
  • Support for PowerShell standard error handling, such as - ErrorAction, etc.
  • **Support for PowerShell standard filtering like Where-Object, etc.
  • Strongly typed and defined object types, no more PSCustomObjects, etc.
  • Extensions supported as supplemental modules
  • Custom action support for extensions on deployment start/finish
  • Backwards-compatibility with v3 deployment scripts
  • Object-oriented Design encapsulates deployments, facilitating complex scenarios such as parallel operations
  • Immutable Command Lookup Table ensures functions cannot be spoofed or overwritten
  • PowerShell Strict Mode v3 compliance for code safety
  • Performance Optimizations using efficient object types
  • CI / CD Build System for code validation and linting, unit and integration testing, documentation generation, and more.

Full Changelog: 3.10.2...4.0.0

PSAppDeployToolkit 3.10.2

13 Aug 19:12
Compare
Choose a tag to compare

Version 3.10.2 [08/13/2024]

  • Added support for MARKs in VSCode. #994
  • Added Pester Tests for Copy-File, Execute-ProcessAsUser and Set-ActiveSetup
  • Fixed an issue with Test-ServiceExists / Get-LoggedOnUser working in a Windows Sandbox. #1031 #1032 #1035
  • Fixed an issue with log file rotation and log file permissions when running in user context. #1024 #1029 #1030
  • Fixed a number of issues relating to Robocopy in Copy-Files. #868 #1015 #1020 #1021 #1038
  • Fixed an issue where the Show-InstallationPrompt dialog would not display when run through MCM / SCCM in interactive mode. #1004 #1016
  • Fixed an issue where Execute-ProcessAsUser would throw a terminating error when no user logged on #1027
  • Fixed escaping of invalid characters in Block-AppExecution. #1036
  • Fixed a number of issues in Set-ActiveSetup / Execute-ProcessAsUser. #1017
  • Fixed an issue in French translations. #1019
  • Fixed an issue with Get-FileVersion #1007

Full Changelog: 3.10.1...3.10.2

PSAppDeployToolkit 3.10.1

03 May 16:47
Compare
Choose a tag to compare

Version 3.10.1 [05/03/2024]

What's Changed

  • Added Turkish language support. Fixes #973.
  • Added parameter sets to Configure-EdgeExtensions to ensure mandatory parameters are correctly grouped.
  • Added missing elements to XML for Finnish language. Fixes #967.
  • Added -ExcludeServiceProfiles to Get-UserProfiles, add passthru of Exclude-ServiceProfiles/ExcludeSystemProfiles/ExcludeDefaultUser/ExcludeNTAccount to Copy-FileToUserProfiles & Remove-FileFromUserProfiles.
  • Added back the folder structure, changelog, license, and examples to the release zip file.
  • Added VLC and WinSCP as new example deployment scripts.
  • Added ServiceUI launch helper script and launch testing batch files to examples.
  • Added Contributing Guide, Code of Conduct, Security Policy and Support docs.
  • Added GitHub form-based Bug Report and Feature Request templates.
  • Added RoboCopyParams to Copy-File, which allows full override of Robocopy Parameters. Added /IT /IM to default parameters.
  • Changed Welcome Prompt so that the Deferral Time Remaining is now bolded. App Title size was also slightly increased so as to remain more prominent.
  • Changed button font so that text wasn't cut off for some localized languages. Fixes #980.
  • Changed RunHidden.vbs to get rid of use of ArrayList as it caused problems on some systems.
  • Changed Robocopy folder creation code to match native PowerShell Copy-File.
  • Changed Execute-ProcessAsUser to include an example for executing the function using "LeastPrivilege".
  • Fixed an issue where Execute-ProcessAsUser was not able to execute with RunLevel = 'LeastPrivilege' in some cases.
  • Fixed an issue in Execute-ProcessAsUser where the command line for two of the examples was incorrect.
  • Fixed an issue with Configure-EdgeExtensions where a new extension would not be added if no extensions were configured previously. Fixes #931 and #984.
  • Fixed an issue where Robocopy mode of Copy-File fails to copy files or folders when path begis with "." or "..". Fixes #938.
  • Fixed AppDeployToolkitExtensions.ps1 dot-sourcing to where it's always been dot-sourced from.
  • Fixed PowerShell v2 and .NET 3.5 Compatibility. Fixes #948.
  • Removed check on SecurityHealthSystray. Fixes #941.
  • Removed the PDF documentation, the website will be the primary source for this going forward.
  • Updated existing example deployment scripts.
  • Updated Pull Request template.
  • Updated Spanish translations. Fixes #805.

New Contributors

Full Changelog: 3.10.0...3.10.1