Skip to content

Releases: PSAppDeployToolkit/PSAppDeployToolkit

PowerShell App Deployment Toolkit 3.8.0

23 Sep 05:12
Compare
Choose a tag to compare

Version 3.8.0 [09/23/2019]

  • Added ability to change the dialog banner height, with a configurable maximum
  • Added ability to change the dialog banner and icon filename through the configuration file
  • Added support for animated gifs in the dialog banner
  • Added a dynamic dialog banner height with a configurable maximum to the dialogs
  • Added support for flattening folder structure within Copy-File with -Flatten switch
  • Added architecture independence for Zero Touch MSIs where filename ends in x64.msi or x86.msi
  • Added logging to Remove-Folder function so it is also traceable in the log file when successful
  • Changed ProcessObjects parameter in Get-RunningProcesses function to mandatory=$false so Show-InstallationWelcome without CloseApps parameter does not fail
  • Changed encoding of AppDeployToolkitConfig.xml to UTF-8 (was incorrectly UTF16)
  • Fixed an issue where Execute-Process -MsiExecWaitTime used ticks instead of seconds
  • Fixed a number of glitches relating to illegal characters and locale-specific time / date formats
  • Fixed Get-RunningProcessesDynamically .NET error in Show-WelcomePrompt
  • Fixed issue with Write-Log creating bad formatting for CMTrace in non-English cultures
  • Fixed issue with non-standard quote characters in the Execute-MSP function
  • Fixed issue where Show-WelcomePrompt hangs when ForceCloseAppsCountdown is passed to Show-InstallationWelcomePrompt and application(s) listed in CloseApps are not running when timeout is reached
  • Fixed issue where Set-PinnedApplication did not pin to / unpin from taskbar on Windows 10 because Microsoft removed the taskbar verbs
  • Fixed issue where Get-InstalledApplication only supported Basic Latin unicode characters by removing logic which "removes any control characters which might interfere with logging and creating file path names from these variables", as the creation of file name is only used in Execute-MSI function and the logic there already replaces invalid filename characters
  • Fixed issue where Get-LoggedOnUser failed to detect if user is member of the Administrators group, when Administrator group has an orphaned account listed
  • Fixed issue where active setup execution fails when StubExePath contains ps1 file in Set-ActiveSetup function
  • Fixed issue where Show-InstallationPrompt would not show when using Title parameter in combination with NoWait
  • Fixed issue where defertimes would not decrease from 1 to 0 when Show-InstallationWelcome prompt timed out
  • Fixed issue where a .NET Framework error would appear saying the term 'Get-RunningProcessesDynamically' was not recognized
  • Fixed an ActiveSetup purging error
  • Fixed typo in Remove-Folder function
  • Fixed examples in Enable/Disable-TerminalServerInstallMode
  • Fixed detection of wired network connections in Test-NetworkConnection function on Windows 10 workstations
  • Updated the AppDeployToolkit logo to match the website

PowerShell App Deployment Toolkit 3.7.0

13 Feb 23:33
Compare
Choose a tag to compare

Version 3.7.0 [02/13/2018]

  • Added the ability to dynamically re-enumerate running applications while displaying the Show-InstallationWelcome prompt. If the CloseApps processes were not running when the prompt was displayed and are subsequently detected to be running, the prompt will be updated with the apps to close. If the CloseApps processes were running when the prompt was displayed and are subsequently detected not to be running, then the installation will automatically continue if no deferral is available. If the CloseApps processes change (new processes launched or running processes closed), the list box will dynamically update every 2 seconds to reflect the currently running applications.
  • Added ContinueFileCopyOnError parameter to the File-Copy function to continue copying files if an error is encountered.
  • Added error handling to catch errors retrieving/deleting scheduled task in Unblock-AppExecution
  • Added detection of App-V pending tasks to the Get-PendingReboot function
  • Added support for creating a hotkey to the New-Shortcut function
  • Added the parameter type column to the logging function
  • Added the Win32_BaseService class to the Test-ServiceExists function
  • Added environment variables; CurrentUILanguage
  • BREAKING CHANGE, The "Regex" filter in Remove-MSIApplications previously escaped RegEx characters, but now parses a RegEx statement as expected. Added "Contains" filter which emulates RegEx filter from previous version.
  • Re-named "Refresh-Desktop" to "Update-Desktop" and "Refresh-SessionEnvironmentVariables" to "Update-SessionEnvironmentVariables" to conform to approved Cmdlet verbs, an alias preserves backwards compatibility with the previous function names
  • Fixed issue where OS Revision Version is not always retrieved correctly in Windows 10
  • Fixed issue in Copy-File where it was not possible to copy an array of file objects
  • Fixed issue in Set-RegistryKey where registry keys with forward slashes now contains actual forward slash [char]0x002F instead of [char]0x2215
  • Fixed issue in Execute-ProcessAsUser where result from the task scheduler could not be parsed on non-English language systems. Fix applies for Vista and higher
  • Fixed issue in Execute-ProcessAsUser which could delete the task before executing it if used without the Wait switch
  • Fixed issue in Execute-ProcessAsUser to allow parameters ending with a double quote
  • Fixed issue where Test-Powerpoint erroneously returned False on non-English language systems
  • Fixed issue where zero-config MSI would run when Show-InstallationRestartPrompt is called
  • Fixed issue where BalloonTip doesn't launch asynchronously when initiated from Exit-Script
  • Fixed case sensitivity in the shortcut path passed to New-Shortcut
  • Fixed issue in Remove-File where a confirmation dialogue would hang the script if a non-empty folder is encountered when the Recurse switch is not specified
  • Fixed issue with white spaces in scheduled task creation breaking the -BlockExecution parameter
  • Fixed missing information in documentation and fixed encoding issue with AppDeployToolkitConfig.xml
  • Fixed issue where TopMost parameter in Show-DialogBox function could not be set to $false
  • Removed PS v3.0 minimum check for Get-Hotfix cmdlet used in Test-MSUpdates
  • Improved parameter validation on -CheckDiskSpace and -RequiredDiskSpace paramters in Show-InstallationWelcome prompt
  • Improved comments and documentation

PowerShell App Deployment Toolkit 3.6.9

13 Feb 03:52
Compare
Choose a tag to compare

Version 3.6.9 [02/12/2017]

  • Added SecureParameters parameter to additional section of Execute-ProcessAsUser
  • Added SecureParameters parameter to Execute-ProcessAsUser
  • Added -RegEx parameter to Get-InstalledApplication and modified the help text for the -Name parameter
  • Added DoNotExpandEnvironmentNames parameter to Get-RegistryKey to enable retrieving of unexpanded REG_EXPAND_SZ values
  • Added expandstring functionality to the MSI_InstallParams, MSI_SilentParams, and MSI_UninstallParams XML properties
  • Added support for Windows 10 to the function Set-PinnedApplication to enable pinning and unpinning to the Start Menu
  • Added IncludeUpdatesAndHotfixes Parameter to Execute-MSI and Remove-MSI functions
  • BREAKING CHANGE, Changed variable envCommonPrograms to envCommonStartMenuPrograms
  • Changed behavior of Remove-Folder function to continue deleting files recursively when an error is encountered when $ContinueOnError is used
  • Changed severity of failure messages created in the Set-PinnedApplication to warning (2) from error (3)
  • Changed .ps1 script files so that they are UTF-8 BOM encoded so that you can digitally sign files on non-unicode language systems
  • Fixed issue in Exit-Script where the system tray icon was not being removed at the end of the script
  • Fixed issue in Remove-MSIApplication which caused the function to fail in the case of multiple filtered or excluded applications
  • Fixed issue in Get-PendingReboot where detection of a pending SCCM reboot would cause a fatal error for some clients
  • Fixed issue in Test-MSUpdates giving preference to the Get-Hotfix cmdlet for detecting updates
  • Fixed issue where variable envOSVersion was inconsistent in Windows 8 and 8.1 workstations
  • Fixed issue in Execute-ProcessAsUser with Powershell script execution
  • Fixed issue in Test-MSUpdate which returned a false positive when searching for an installed update
  • Fixed typo in Get-HardwarePlatform function
  • Fixed issue in Set-RegistryKey where registry keys with forward slashes were treated like backslashes and broken up into subkeys
  • Fixed issue in Remove-RegistryKey function where it failed to delete the (Default) value when specified due to limitation of Remove-ChildItem cmdlet
  • Fixed issue in New-Shortcut to use Rename-Item parameter name that is compatible with PS 2.0
  • Fixed issue in Get-RegistryKey function which caused it to ignore the (Default) value

PowerShell App Deployment Toolkit 3.6.8

06 Feb 22:04
Compare
Choose a tag to compare

Version 3.6.8 [02/06/2016]

  • Added environment variables with additions for Pictures, Templates, and Common User locations
  • Added SecureParameters parameter to Execute-MSI and Execute-Process functions
  • Added language translations for Slovak, Hungarian and also updated translations for German
  • Added ParentProcessId property to Get-WindowTitle
  • Fixed issue in Remove-File where deleting of multiple files would stop silently on first error and added LiteralPath parameter
  • Fixed issue in the Uninstall Office 2013 Deploy-Application example where an incorrect variable was referenced to determine if a user session was present for the script execution
  • Fixed issue in Test-MSUpdates where a fatal error occured when no update history is present on the target system
  • Fixed issue in Install-MSUpdates where the full path to the update file was not passed to Execute-Process for installation
  • Fixed issue where Get-InstalledApplication throws an error when attempting to import invalid registry values from the subkeys of the Uninstall key
  • Fixed formatting of window title name when showing the blocked app dialog window or the restart computer window
  • Fixed issue in Test-PowerPoint where detection did not work if there were multiple screens or if presentation was on screen without mouse focus
  • Fixed issue in Get-RegistryKey where reading an empty value or a DWord value of 0 caused function to return $null
  • Fixed issue in Set-DeferHistory where function did now log $deferTimesRemaining and referenced an incorrect variable name instead
  • Fixed issue in Get-HardwarePlatform where function did not detect Microsoft Surface hardware correctly
  • Fixed issue in Remove-MSIApplications to make sure that an invalid ProductCode is not passed to the Execute-MSI function
  • Improved toolkit so that asynchronous executions of the toolkit write to the same log file instead of creating a new one
  • Improved Get-InstalledApplication to verify ProductCode is valid product code before storing value, also added UninstallSubkey property
  • Improved toolkit to allow setting custom $InstallTitle and $InstallName in Deploy-Applicatio
  • Improved temporary logging folder naming convention to include deployment type in the name
  • Improved Office example script by updating Offscrub13.vbs to latest version from Microsoft, fixes issue with completion notice
  • Improved error handling in the Get-InstalledApplication function
  • Improved error handling in the Test-MSUpdates function
  • Improved Execute-MSI so that environment variables created by MSIs are always updated for Windows Explorer
  • Improved Execute-Process function to capture out of range exit codes and return custom 60013 exit code
  • Improved Remove-RegistryKey function to write warning instead of error to log if a property being deleted does not exist
  • Improved Get-PendingReboot function to check if "ROOT\CCM\ClientSDK\CCM_ClientUtilities" WMI class exists before executing method
  • Improved Show-BalloonTip function to suppress balloon notifications if a PowerPoint presentation is in fullscreen slideshow mode or presentation mode
  • Improved comments and documentation

PowerShell App Deployment Toolkit 3.6.7

22 Sep 21:15
Compare
Choose a tag to compare

Fixed critical issue introduced in last release:

  • Fixed Write-Log issue introduced in v3.6.6 that created malformed CMTrace type log files
  • Updated documentation to add section on how to use zero-config MSI install option

PowerShell App Deployment Toolkit 3.6.6

22 Sep 03:43
Compare
Choose a tag to compare

Lots of improvements and bug fixes:

  • Added error handling for Remove-RegistryKey function when used on key with child keys and -Recurse parameter not used to avoid script hanging
  • Added ability in Remove-MSIApplications to filter the list of results returned by Get-InstalledApplication to only those that should be uninstalled
  • Fixed issue with Set-ServiceStartMode where setting the service to Automatic will set it to Automatic (Delayed Start)
  • Fixed issue introduced in v3.6.5 where blocked application dialog did not display for blocked applications
  • Fixed issue with $appRevision being appended to $installName if not defined
  • Fixed issue in Show-InstallationPrompt with $installName being passed instead of $Title for -ReferringApplication parameter when -NoWait option specified
  • Fixed issue in Test-MSUpdates where information about the discovered KBArticle was not being converted to readable text before being logged
  • Fixed issue with detecting UI language by removing faulty detection method for Windows 8
  • Fixed issue in Block-AppExecution by removing illegal characters such as "&" from the arguments string of the XML file before importing it
  • Fixed issue in Get-InstalledApplication where invalid data in the registry could terminate enumeration of the registry
  • Fixed issue with compiling scripts to EXE by removing support for alternative PowerShell hosts from AppDeployToolkitMain.ps1 file
  • Fixed typo in config XML file for Swedish language message for 'ClosePrompt_CountdownMessage'
  • Fixed issue in Show-InstallationWelcome where $notesPath was not defined before it was used
  • Fixed issue in Show-InstallationWelcome where all process names were not enumerated on PS2.0 when trying to close notes processes
  • Changed message update priority, to increase it, from 'Normal' to 'Send' in Show-InstallationProgress (should hopefully address reports that messages do not display on screen on time)
  • Changed Set-Acl and Get-Acl -LiteralPath parameter to -Path in function New-ZipFile as -LiteralPath is not available in PS 2.0
  • Changed $global: variables to $script: variables as these two scopes are the same in the context of the powershell console that executes the script
  • Improved registry functions to throw error if registry hive not specified
  • Improved comments and documentation

PowerShell App Deployment Toolkit 3.6.5

17 Aug 13:17
Compare
Choose a tag to compare

Lots of important fixes and improvements:

  • Added function New-MsiTransform to allow creation of transform files for MSI databases. Supporting functions: Set-MsiProperty, Invoke-ObjectMethod, Get-ObjectProperty.
  • Added ability in Remove-MSIApplications to exclude software from being uninstalled by matching against specified property/value/match-type pairs
  • Added function Get-PendingReboot to get pending reboot status for the local computer (thanks to user 'That-Annoying-Guy' for the original code)
  • Added function Test-RegistryValue to check for the existence of a registry value, needed to support Get-PendingReboot function
  • Added ability to install MSP files as part of a zero-config MSI install
  • Added ability to Get-MsiTableProperty to apply a list of transform files to an MSI database after opening it. Also added ability to read properties from MSP files. Also added -GetSummaryInformation parameter to allow reading of Summary Information from a Windows Installer database file.
  • Added support for retrieving $MyInvocationInfo when using alternative PowerShell hosts such as with Sapien PowerShell compiled EXEs
  • Added following variables: $currentDateTime, $envLogicalDrives, $envUserCookies, $envUserDesktop, $envUserFavorites, $envUserInternetCache, $envUserInternetHistory, $envUserMyDocuments, $envUserSendTo, $envUserStartMenu, $envUserStartMenuPrograms, $envUserStartUp, $envSystem32Directory
  • Added function New-ZipFile to allow creating zip archives, cleaned up the code for zipping the log folder from the Exit-Script function
  • Fixed issue with Get-WindowTitle which caused the -PromptToSave functionality in Show-InstallationWelcome to fail on Win 7 PowerShell 2.0 machines
  • Fixed issue with Show-WelcomePrompt which caused the -TopMost $false option to not work (also affected Show-InstallationWelcome)
  • Fixed issue introduced in v3.6.3 where Norwegian language code in config XML was changed to NO. Code reverted back to NB as this is the proper code for the Bokmål written language supported by Windows.
  • Fixed issue introduced in v3.6.4 by adding back a double quote to the .vbs file generated by Execute-ProcessAsUser (initial reported issue was caused by bad code in the example which has been fixed)
  • Fixed issue in Refresh-Desktop which caused refreshing the global process environment block to fail
  • Fixed issue in Test-MSUpdates where updates that had been uninstalled were detected as installed by the Office updates dectection method
  • Fixed issue with detecting user's display UI on XP from registry key 'HKCU\Control Panel\International\Locale', and fixed type in one of the other registry paths checked
  • Fixed issue in Set-ActiveSetup so that HKCU active setup registry keys are created when stubpath is executed for currently logged in user so that it does not execute a second time when user logs into account
  • Fixed issue with New-Folder function displaying console output
  • Fixed issue with Get-MsiTableProperty where reading the property table for a second MSI would throw an error unless -Force parameter specified
  • Fixed issue with the zip compressed log files only being accessible to elevated users
  • Fixed issue with Show-InstallationRestartPrompt where the PSADT restart prompt prevented a manual user initiated Windows Shutdown from being executed
  • Fixed issue with Show-InstallationPrompt and Show-InstallationRestartPrompt where the dialog would be displayed in Silent Mode
  • Fixed issue in Get-InstalledApplication where -ErrorAction could prematurely stop function if permissions issue while enumerating registry keys
  • Fixed issue with Invoke-HKCURegistrySettingsForAllUsers where registry profiles would fail to unload
  • Fixed issue where the final (asynchronous) balloon tip would not display
  • Fixed issue with Zero-Config MSI installations not being able to handle MST files
  • Fixed issue with Get-MsiTableProperty where handle to MSI database file was not released by powershell.exe after reading properties
  • Fixed issue with Close-InstallationProgress where $global:ProgressRunspace was not closed
  • Fixed issue where the toolkit would terminate in session zero due to absence of user domain variable
  • Changed 5000 exit code for "InstallationDefer_ExitCode" in config XML to 60012 to be in line with newly defined exit code ranges for the toolkit
  • Changed Deploy-Application.ps1 to allow exiting with custom exit code if failure to parse toolkit
  • Changed registry manipulation functions to use -LiteralPath instead of -Path because * and ? are rare but valid characters for registry names
  • Changed Show-InstallationWelcome and Show-WelcomePrompt to allow display of custom message from XML by using -CustomMessage parameter. Also added -ForceCountdown to allow us to have a countdown timer with the defer option on the welcome screen.
  • Changed variable $envTemp to use recommended method of retrieving temp folder path
  • Improved Exit-Script so that it is possible to manually exit the script with a 3010 or 1641 exit code and trigger an SCCM "Soft Reboot"
  • Improved comments and documentation

PowerShell App Deployment Toolkit 3.6.1

11 Apr 23:20
Compare
Choose a tag to compare

Lots of improvements and fixes!

  • Added Zero-Config deployment for MSI files. No need to customize anything. Drop your MSI in the Files folder and run the toolkit. Information is pulled from the MSI to do branding, logging, and closing in-use processes.
  • Added -DisableLogging switch to Deploy-Application.ps1 to disable logging to file for the script
  • Added -SoftwareUpdatesScanWaitInSeconds and -WaitForPendingUpdatesTimeout parameters to Install-SCCMSoftwareUpdates
  • Added -WildCard search option to Get-InstalledApplication and Remove-MSIApplications
  • Added -PassThru option to Test-Battery which will return the following properties: IsLaptop, IsUsingACPower, ACPowerLineStatus, BatteryChargeStatus, BatteryLifePercent, BatteryLifeRemaining, BatteryFullLifetime
  • Added following parameters to Remove-MSIApplications to match those in Execute-MSI: -Parameters, -AddParameters, -LoggingOptions, -LogName
  • Added default active username for -UserName parameter in Execute-ProcessAsUser
  • Added -SkipMSIAlreadyInstalledCheck parameter to Execute-MSI function to allow ability to skip the check that determines if an MSI is already installed on the system
  • Added SID property to Get-LoggedOnUser function results
  • Added -LoadLoggedOnUserEnvironmentVariables parameter to Refresh-SessionEnvironmentVariables function to allow loading user environment variables when running in the SYSTEM context
  • Added ability in Set-ActiveSetup to execute active setup entry for currently logged on user when running under the SYSTEM account
  • Added ability to detect Primary UI language of active logged in user when running under the SYSTEM account
  • Added function Get-WindowTitle to add abiility to search for an open window title and return details about the window
  • Added -WindowHandle and -GetAllWindowTitles parameters to Send-Keys function
  • Added ability to detect display scale factor for currently logged on user when running under the SYSTEM account
  • Added -PassThru parameter to Execute-MSI and Remove-MSIApplications to return ExitCode, STDOut, and STDErr output
  • Fixed issue introduced in 3.6 whereby the toolkit timeout would not be triggered resulting in the wrong exit code being passed
  • Fixed issue in Install-MSUpdates where a folder path with a KB number in the folder name would force the regex to only detect that one KB in the folder
  • Fixed issue in Get-ServiceStartMode to avoid error when DelayedAutoStart property does not exist
  • Fixed issue introduced in 3.6.0 where $sessionZero was incorrectly set to $false after being set to the correct value
  • Fixed issue in Test-PowerPoint related to accurately measuring the size of a non-fullscreen window
  • Fixed variable type for -PassThru parameter in functions for manipulating services
  • Fixed issue in Execute-ProcessAsUser which improperly caused script exit
  • Fixed issue in Get-UserProfiles where 'DefaultUserProfile' registry value was mis-typed as 'DefaultUsersProfile'
  • Fixed issue in Show-InstallationWelcome to avoid error if the Description field of a hung process could not be accessed
  • Fixed issue where script would hang when removing deferals (cause: Remove-RegistryKey did not have -Recurse parameter specified)
  • Changed Send-Keys function to use new Get-WindowTitle function when searching for window titles
  • Changed Deploy-Application.exe to exit with exit codes in the newly defined range
  • Improved Install-SCCMSoftwareUpdates to only execute if SCCM 2012 or higher installed because method is not compatible with SCCM 2007 or lower
  • Improved Install-SCCMSoftwareUpdates to check if SCCM client service is installed and running before trying to install updates
  • Improved Invoke-SCCMTask to check if SCCM client service is installed and running before invoking task
  • Improved Invoke-SCCMTask to add a few more SCCM 2012 client compatible schedule ids and to only allow execution of a schedule id compatible with the installed version of the client
  • Improved Block-AppExecution by using the import XML method of creating a scheduled task so that we could configure the task that unblocks applications to execute even if running on batteries
  • Improved Deploy-Application.ps1 by setting exit code to 60008 if AppDeployToolkitMain.ps1 fails to dot source
  • Improved Send-Keys function to be able to detect all open windows (including Explorer windows and all child windows), and also to bring any child window into the foreground
  • Improved -PromptToSave function to allow prompting for all child windows of a single instance application (such as Microsoft Word)
  • Improved the behavior for dialog shown when user tries to execute a blocked app so that no more than one dialog can be shown at a time
  • Improved documentation

PowerShell App Deployment Toolkit 3.6.0

11 Apr 23:19
Compare
Choose a tag to compare
  • Added function Set-ActiveSetup to allow creation/deletion of Active Setup entries (thanks to Denis St-Pierre, Todd MacNaught for code)
  • Added function Execute-ProcessAsUser to support running processes as the current logged on user to provide interaction in the system context. Note: if the user is not a local admin the process launched in user context will not inherit admin rights.
  • Added -PromptToSave parameter to Show-InstallationWelcome to prompt to save working documents when the users selects to close running applications
  • Added -TopMost parameter to Show-InstallationWelcome to allow the ability for the user to move the welcome screen to the background
  • Added variable to determine if running in terminal server session
  • Added functions to handle Windows services: Test-ServiceExists, Stop-ServiceAndDependencies, Start-ServiceAndDependencies, Get-ServiceStartMode, Set-ServiceStartMode
  • Added check to test whether or not the Windows Task Scheduler service is in a healthy state and fix any issues if possible.
  • Added ability in Deploy-Application.exe to read if Admin rights required from XML file and then automatically prompt to elevate on Vista or higher
  • Added -ExcludeDefaultUser parameter to Get-UserProfiles to allow exclusion of the Default User profile
  • Added IsLocalAdmin property to results from Get-LoggedOnUser function to determine if the user account is in the local Administrators security group
  • Added -AddParameters parameter to Execute-MSI to allow augmenting of parametrs instead of replacing them
  • Added -ReturnEmptyKeyIfExists parameter to Get-RegistryKey to allow returning empty registry keys if they exist
  • Added -LoggingOptions parameter to Execute-MSI to allow overriding the default logging options specified in the config file
  • Added validation for -Path parameter in Execute-MSI function
  • Fixed issue where Show-InstallationRestartPrompt and Show-InstallationPrompt with -NoWait parameter didn't work
  • Added default action of Install to Execute-MSI
  • Added ability to specify multiple transforms and patches in Execute-MSI using a comma separated list
  • Added ability in XML configuration to override the detected language with a statically defined language for installation UI elements
  • Fixed issue in Show-InstallationProgress where -BottomRight paramater would cause prompt to be placed off screen where DPI is > 100%
  • Fixed issue with error being thrown when reading the DPI scale from the registry if the property doesn't exist
  • Fixed issue with Show-InstallationWelcome failing if "notes" specified with -CloseApps parameter when Notes application not installed
  • Fixed issue in Execute-MSI where LogName parameter did not work correctly
  • Fixed issue with Show-InstallationWelcome where deferrals would be ignored if CloseAppsCountdown parameter is specified
  • Fixed issue in Copy-File where operation would fail if destination folder was not created before operation when using wildcards in -Path parameter
  • Fixed issue in Unblock-AppExecution on some systems where process failed to unblock if only one process was initially blocked
  • Fixed issue with Deploy-Application.exe not executing on systems where only .NET 4 or higher installed by adding Deploy-Application.exe.config file
  • Fixed issue with Deploy-Application.exe by using -Command parameter instead of -File to avoid bug in PowerShell 2.0 where incorrect exit code might be returned if -File parameter used
  • Fixed a number of issues with the Office 2013 example script
  • Fixed issue whereby pressing enter would default to a hidden Abort button on Show-installationWelcome and Show-Installation Prompt
  • Fixed aesthetic issue whereby use of DeferDays or DeferDeadline without DeferTimes would show a deferal count of 1 remaining
  • Fixed issue in Get-InstalledApplication to properly detect applications when -Exact parameter used
  • Fixed issue in Get-UniversalDate where function would fail for some valid date formats under some culture settings
  • Fixed issue in Write-Log where it was not possible to change logfile name and directory after the first time these paths were set
  • Fixed issue with Deploy-Application.ps1 where variable expansion wouldn't work in Show-InstallationPrompt example
  • Fixed issue with Install-SCCMSoftwareUpdates not working on all clients
  • Fixed issue where modal dialog windows were not properly disposed
  • Improved path validation in Deploy-Application.exe, rewrote utility in C#
  • Improved defining default values for script variables not defined
  • Improved path validation in Execute-Process
  • Improved path validation in Execute-MSI
  • Improved working directory validation in Execute-MSI
  • Improved error message when toolkit launched without admin permissions
  • Improved detection of when invoking script is the Help script to avoid false positives
  • Improved Deploy-Application.ps1 to use Write-Error instead of Write-Output when toolkit fails to dot source
  • Improved Get-ScheduledTask to retrieve all scheduled task details, remove spaces and colons from property names, allow retrieval of details for a specific task name, and remove lines with column headers from results
  • Improved compilation of custom C# code by using -IgnoreWarnings switch with Add-Type cmdlet so that toolkit does not fail to run because of a warning
  • Improved Write-Log to log following for CMTrace log type: thread id, file name of source script
  • Improved environment variable population when running in system context
  • Improved Write-Log to log PID and log source for CMTrace log type
  • Improved Remove-RegistryKey to check if a key exists befre trying to delete it and log a warning if key does not exist
  • Changed default Exit Codes for internal Toolkit functions. The range of 60000 is used for internal, and 70000 should be used for custom extensions
  • Changed toolkit to remove unused variables which did not exist and were being read from XML file
  • Changed Register-DLL/Unregister-DLL function to combine them into one function called Invoke-RegisterOrUnregisterDLL. Created Aliases for new function name to maintain backwards compatibility.
  • Changed Notes process termination using NSD to only run if Notes processes are running
  • Updated documentation
  • Added Polish translations
  • Updated German translations
  • Updated Italian translations

PowerShell App Deployment Toolkit 3.6.4

19 May 20:13
Compare
Choose a tag to compare

A handful of important bugfixes:

  • Fixed issue with detecting user's display UI when enforced by Group Policy, fixed typo in one of the registry paths
  • Fixed issue with extra double quote at end of VBScript command in function Execute-ProcessAsUser (caused issue in Set-ActiveSetup as well)
  • Fixed issue with Enable-TerminalServerInstallMode and Disable-TerminalServerInstallMode expecting a successful execution of change.exe to return 0 when it should really be 1
  • Fixed issue with Execute-MSI so that Get-MsiTableProperty is only called when the file being executed is an MSI and not when it is an MSP
  • Fixed issue in Invoke-HKCURegistrySettingsForAllUsers where a registry hive would fail to unload because of an active memory reference by manually invoking garbage collection
  • Fixed issue where registry key for deferrals was not being set correctly
  • Fixed issue in Show-InstallationWelcome where blocking "notes" would stop script execution
  • Fixed issue where System.Threading.Mutex class does not have Dispose() method prior to .NET 3.5 so will call Close() method instead. This also fixed issue with blocked app message not showing on Win 7 .NET 2.
  • Changed StubPath registry type to 'String' in Set-ActiveSetup
  • Improved comments and documentation