Quantcast
Channel: PowerShell App Deployment Toolkit
Viewing all 2341 articles
Browse latest View live

Updated Wiki: Home

$
0
0

PowerShell App Deployment Toolkit

What is the PowerShell App Deployment Toolkit?

The PowerShell App Deployment Toolkit provides a set of functions to perform common application deployment tasks and to interact with the user during a deployment. It simplifies the complex scripting challenges of deploying applications in the enterprise, provides a consistent deployment experience and improves installation success rates.

The PowerShell App Deployment Toolkit can be used to replace your WiseScript, VBScript and Batch wrapper scripts with one versatile, re-usable and extensible tool.

Scroll down to see sample screen shots of the user interface.

What are the main features of the PowerShell App Deployment Toolkit?

  • Easy To Use - Any PowerShell beginner can use the template and the functions provided with the Toolkit to perform application deployments.
  • Consistent - Provides a consistent look and feel for all application deployments, regardless of complexity.
  • Powerful - Provides a set of functions to perform common deployment tasks, such as installing or uninstalling multiple applications, prompting users to close apps, setting registry keys, copying files, etc.
  • User Interface - Provides user interaction through customizable user interface dialogs boxes, progress dialogs and balloon tip notifications.
  • Localized - The UI is localized in several languages and more can easily be added using the XML configuration file.
  • Integration - Integrates well with SCCM 2007/2012; provides installation and uninstallation deployment types with options on how to handle exit codes, such as supressing reboots or returning a fast retry code.
  • Updatable - The logic engine and functions are separated from per-application scripts, so that you can update the toolkit when a new version is released and maintain backwards compatibility with your deployment scripts.
  • Extensible - The Toolkit can be easily extended to add custom scripts and functions.
  • Helpful - The Toolkit provides detailed logging of all actions performed and even includes a graphical console to browse the help documentation for the Toolkit functions.

What functionality does the PowerShell App Deployment Toolkit provide?

User Interface

  • An interface to prompt the user to close specified applications that are open prior to starting the application deployment. The user is prompted to save their documents and has the option to close the programs themselves, have the toolkit close the programs, or optionally defer. Optionally, a countdown can be displayed until the applications are automatically closed.
  • The ability to allow the user to defer an installation X number of times, X number of days or until a deadline date is reached.
  • The ability to prevent the user from launching the applications that need to be closed while the application installation is in progress.
  • An indeterminate progress dialog with customizable message text that can be updated throughout the deployment.
  • A restart prompt with an option to restart later or restart now and a countdown to automatic restart.
  • The ability to notify the user if disk space requirements are not met.
  • Custom dialog boxes with options to customize title, text, buttons & icon.
  • Balloon tip notifications to indicate the beginning and end of an installation and the success or failure of an installation.
  • Branding of the above UI components using a custom logo icon and banner for your own Organization.
  • The ability to run in interactive, silent (no dialogs) or non-interactive mode (default for running SCCM task sequence or session 0).
  • The UI is localized in several languages and more can easily be added using the XML configuration file.

Functions/Logic

  • Provides extensive logging of both the Toolkit functions and any MSI installation / uninstallation.
  • Provides the ability to execute any type of setup (MSI or EXEs) and handle / translate the return codes.
  • Mass remove MSI applications with a partial match (e.g. remove all versions of all MSI applications which match "Office")
  • Check for in-progress MSI installations and wait for MSI Mutex to become available 
  • Send a sequence of keys to an application window
  • Perform SCCM actions such as Machine and User Policy Refresh, Inventory Update and Software Update
  • Supports installation of applications on Citrix XenApp/Remote Desktop Session Host Servers
  • Update Group Policy
  • Copy / Delete Files
  • Get / Set / Remove Registry Keys and Values
  • Get / Set Ini File Keys and Values
  • Check File versions
  • Pin or Unpin applications to the Start Menu or Task Bar
  • Create Start Menu Shortcuts
  • Register / Unregister dll files
  • Refresh desktop icons
  • Test network connectivity
  • Test power connectivity
  • Check whether a PowerPoint slideshow is running

Integration with SCCM

  • Handles SCCM exit codes, including time sensitive dialogs supporting SCCM's Fast Retry feature - providing more accurate SCCM Reporting (no more Failed due to timeout errors).
  • Ability to prevent reboot codes (3010) from being passed back to SCCM, which would cause a reboot prompt.
  • Supports the CM12 application model by providing an install and uninstall deployment type for every deployment script.
  • Bundle multiple application installations to overcome the supported limit of 5 applications in the CM12 application dependency chain. 
  • Compared to compiled deployment packages, e.g. WiseScript, the Toolkit utilises the SCCM cache correctly and SCCM Distribution Point bandwidth more efficiently by using loose files.

Help Console

  • A graphical console for browsing the help documentation for the toolkit functions.

User Interface Screenshots

Installation Progress

The installation progress message displays an indeterminate progress ring to indicate an installation is in progress and display status messages to the end user. This is invoked using the “Show-InstallationProgress” function.

image

The progress message can be dynamically updated to indicate the stage of the installation or to display custom messages to the user, using the “Show-InstallationProgress” function.

image

Installation Welcome Prompt

The application welcome prompt can be used to display applications that need to be closed, an option to defer and a countdown to closing applications automatically. Use the “Show-InstallationWelcome” function to display the prompts shown below.

image

Welcome prompt with close programs option and defer option:

image

Welcome prompt with close programs options and countdown to automatic closing of applications:

image

Welcome prompt with just a defer option:

image

Block Application Execution

If the block execution option is enabled (see Show-InstallationWelcome function), the user will be prompted that they cannot launch the specified application(s) while the installation is in progress. The application will be unblocked again once the installation has completed.

image

Disk Space Requirements

If the CheckDiskSpace parameter is used with the Show-InstallationWelcome function and the disk space requirements are not met, the following prompt will be displayed and the installation will not proceed.

image

Custom Installation Prompt

A custom prompt with the toolkit branding can be used to display messages and interact with the user using the “Show-InstallationPrompt” function. The title and text is customizable and up to 3 customizable buttons can be included on the prompt as well as optional system icons, e.g.

image

Additionally, the prompt can be displayed asynchronously, e.g. to display a message at the end of the installation but allow the installation to return the exit code to the parent process without waiting for the user to respond to the message.

image

Installation Restart Prompt

A restart prompt can be displayed with or without a countdown to automatic restart using the “Show-InstallationRestartPrompt”. Since the restart prompt is executed in a separate PowerShell session, the toolkit will still return the appropriate exit code to the parent process.

image

Balloon tip notifications

Balloon tip notifications are displayed in the system tray automatically at the beginning and end of the installation. These can be turned off in the XML configuration.

image

image

image 

Reviews

“Truly powerful application deployment toolkit written in PowerShell! Solving some classic problems “

Jörgen Nilsson, Microsoft MVP, Enterprise Client Management

“Another very cool SCCM 2012 must have tool - PowerShell App Deployment Toolkit”

Kent Agerlund, Microsoft MVP, Enterprise Client Management

“This is really an exceptional Toolkit! It's the swiss army knive for software deployment. For every task you possible need to perform, there is a function for it. And you can extend it with your own functions if you like. Even when you're using something like SCCM to deploy your software, the toolkit can have real value as it fills the gabs left by SCCM. Thanks!”

Quint

“Excellent support guys! This toolkit is the best thing around to easily wrap and deploy software to end users and it just keeps on getting better with every release!”

Maarten Pauchet

“The PowerShell App Deployment toolkit rocks! I tried it today and love it.”

Alex Verboon

Presentations

The PS App Deployment Toolkit has featured in the following industry conferences:

- “Become the Hero of the Day - Master ConfigMgr 2012 R2 with a Limited Budget and Free Community Tools” sessions at NIC Conference 2013 and System Center Universe 2014 (Kent Agerlund).

- “Microsoft System Center Configuration Manager Community Jewels session at MS TechEd North America 2014 (Jorgen Nilsson, Stefan Schörling) – see video @ 18 mins: http://channel9.msdn.com/Events/TechEd/NorthAmerica/2014/PCIT-B320#fbid=

- “Microsoft System Center Configuration Manager Community Jewels” session at MS TechEd Europe 2014 (Jorgen Nilsson, Stefan Schörling) – see video @ 21 mins: http://channel9.msdn.com/Events/TechEd/Europe/2014/EM-B308

More Reviews and Presentations

About the Authors


Updated Wiki: About the Authors

$
0
0

The PowerShell App Deployment Toolkit was launched in August 2013 and is a joint collaboration between Seán Lillis and Dan Cunningham. Muhammad Mashwani  joined the project as a developer in October 2014.

Their personal websites are listed below, where you can learn more about them or get in contact with them.

Seán Lillis

Website: http://powersheller.wordpress.com

Twitter: @seanels

Dan Cunningham

Website: http://dcunningham.net/

Twitter: @sintaxasn

 

Donations towards the project are welcome, please visit this page for more details: https://psappdeploytoolkit.codeplex.com/wikipage?title=Donate

Source code checked in, #21b6b7d50aa2f02ba2f9277aaa0b6a29ff23654d

$
0
0
Change property name in Get-InstalledApplication Change property name in Get-InstalledApplication

New Post: Managing the default user

$
0
0
Hi,

I made a lot of package in the past and I have a few questions.
  1. Is it a way with your script to change the default user parameters?
  2. If I need to change every users value in the registry, is it a way to load each hive and unload it?
  3. Is it a way to check if a user is logon then if noone is logon proceed. If someone is logon then ask to close applications and ask before reboot. I remember my problem was when asking to shutdown and when "not asking" and just proceed.
  4. I saw nothing about permission change (files, registry).
  5. We are using package instead of applications. Would it be any problems to use the APT for packages?

New Post: Managing the default user

$
0
0
A lot of different questions here and not very many details but I will take a stab at answering.

1) If you are talking about registry changes for the default user, then yes, there is a function for this. Look at the 3.5 beta under the "Source Code" tab.
2) There is a method in the 3.5 beta. Look at the 3.5 beta under the "Source Code" tab.
3) The toolkit has a method for dealing with this situation.
4) There is no built in function for modifying permissions. Tons of examples and functions on Google, so look around.
5) Toolkit should work just fine for packages or applications in SCCM.

I would recommend you read the documentation and test the 3.5 beta from the Source Code tab if you're just looking into using the toolkit. Ask more detailed questions once you have because most of your questions will be answered just looking at the documentation.

New Post: Managing the default user

$
0
0
Hi,

You did understand perfectly my question. I did not saw there is a 3.5 toolkit. I am actually writing standard packaging procédures with Powershell and I will possibly include this toolkit. When the 3.5 might become stable?

Thanks,

François

Commented Unassigned: Show-InstallationRestartPrompt -NoCountdown doesnt show [99]

$
0
0
Hi,

testing 3.5.0 and have noticed with the below line in my .ps1 it will not show the Restart dialog. It does show ok if no params are given.

...
Show-InstallationRestartPrompt -NoCountdown
...

I thought it might be the line 5163 below:
[switch]$NoCountdown = $false

and changed to:
[switch]$NoCountdown

but this didnt work.
Comments: Tested but no change, although the quotes are now gone the issue remains. I had tested that case and others but it doesnt seem to like ANY argument if the param is just '-NoCountdown'. Looks like you are testing if the param value is type boolean, but the value is a SwitchParameter (and the key is a string). Code piece below works for line 5430: [string]$installRestartPromptParameters = ($installRestartPromptParameters.GetEnumerator() | ForEach-Object {"-$($_.Key) $(If ($_.Value.GetType().Name -ne 'SwitchParameter') {$_.Value})" }) -join ' '

Updated Wiki: About the Authors

$
0
0

The PowerShell App Deployment Toolkit was launched in August 2013 and is a joint collaboration between Seán Lillis and Dan Cunningham. Muhammad Mashwani joined the project as a developer in October 2014.

Their personal websites are listed below, where you can learn more about them or get in contact with them.

Seán Lillis

Website: http://powersheller.wordpress.com

Twitter: @seanels

Dan Cunningham

Website: http://dcunningham.net/

Twitter: @sintaxasn

Muhammad Mashwani

---------------------------------------------------------------------------------------

Donations towards the project are welcome, please visit this page for more details: https://psappdeploytoolkit.codeplex.com/wikipage?title=Donate


Created Unassigned: OSArchitecture detection on French Windows [100]

$
0
0
If you run the command for $is64Bit on a French Windows' 64-bit OS, the value comes back as False. The reason is because when you run (Get-WmiObject -Class Win32_OperatingSystem).OSArchitecture, the value comes back as "64 bits" instead of "64-bit". In AppDeployToolkitMain.ps1, the line for $is64Bit needs could be changed to "$is64Bit = (((Get-WmiObject -Class Win32_OperatingSystem -ea 0).OSArchitecture -eq '64-bit') -or ((Get-WmiObject -Class Win32_OperatingSystem -ea 0).OSArchitecture -eq '64 bits'))" and that will fix the issue.

Commented Unassigned: OSArchitecture detection on French Windows [100]

$
0
0
If you run the command for $is64Bit on a French Windows' 64-bit OS, the value comes back as False. The reason is because when you run (Get-WmiObject -Class Win32_OperatingSystem).OSArchitecture, the value comes back as "64 bits" instead of "64-bit". In AppDeployToolkitMain.ps1, the line for $is64Bit needs could be changed to "$is64Bit = (((Get-WmiObject -Class Win32_OperatingSystem -ea 0).OSArchitecture -eq '64-bit') -or ((Get-WmiObject -Class Win32_OperatingSystem -ea 0).OSArchitecture -eq '64 bits'))" and that will fix the issue.
Comments: Thanks for reporting this issue. Can you test if this works for you? ``` $is64Bit = [boolean]((Get-WmiObject -Class Win32_Processor | Where-Object { $_.DeviceID -eq 'CPU0' } | Select-Object -ExpandProperty AddressWidth) -eq '64') ```

Source code checked in, #dbe858f0b0c69b250ba3b86229f1390c7d93892d

$
0
0
Fixed method of detecting OS architecture on some non-English systems Fixed method of detecting OS architecture on some non-English systems

Commented Unassigned: Show-InstallationRestartPrompt -NoCountdown doesnt show [99]

$
0
0
Hi,

testing 3.5.0 and have noticed with the below line in my .ps1 it will not show the Restart dialog. It does show ok if no params are given.

...
Show-InstallationRestartPrompt -NoCountdown
...

I thought it might be the line 5163 below:
[switch]$NoCountdown = $false

and changed to:
[switch]$NoCountdown

but this didnt work.
Comments: Yup, you're right. I had to do a check for SwitchParameter instead of boolean. I've updated the 3.5 beta, please test and let me know if it's working fine for you now.

New Post: Managing the default user

$
0
0
All I can say is soon. Keep an eye out. Also, you can sign up to be notified of new releases via e-mail from the homepage.

Source code checked in, #0c0832c9cce7434ae79b69b0808097aa01abfc1f

$
0
0
Fixed issue with enumerating parameter values Fixed issue with enumerating parameter values

Source code checked in, #eaf684d3cfc024f5eb9edf22aba4f2f8d10969b6

$
0
0
Improved logging in Get-FreeDiskSpace Improved logging in Get-FreeDiskSpace to add free size measurement

Closed Unassigned: How to update HKEY_CURRENT_USER registry key [95]

$
0
0
Hi I want to create new Key and value under

HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins

But my users doesn't have admin rights and registry editing is disabled for them so even if I an using set-REgistryKey command its running smoothly but not creating entry for currently logged on user.

Please suggest how to do that, I have attached script which i am using.
Comments: Not an issue with the toolkit. Please post under discussion section for these types of questions.

New Post: How to wait after successfull install

$
0
0
I have create a SCCM 2007 package using the powershell App Deployment ToolKit. It works all fine, but....
I do have 2 programs which needs to be deployed and both needs a forced restart after the installation.
My problem is that when the first one is executed and finished (rc=0) i prompt a restart. But since the restart is opened in another session, my second programs starts to install.
How can I forced the configuration that the second program will only be installed after the first one is restarted ?
I also tried by passing through rc=3010 to SCCM, but it will not prompt me for a restart in SCCM :-(
Any tips, ideas to help me out on this one ?

Created Unassigned: Execute-Process not filling StdOut [101]

$
0
0
Hello,

Thanks for your work.

I encounter a problem with Execute-Process in PassThrough mode, it does not fill the StdOut result.
To my understanding this is due to using the Async form of retrieval for stdout, whereas using the sync form will work (as it is used for stderr).

In my case I solved this by changing this line (modified version below):

If ($NoWait) {
Write-Log "NoWait parameter specified. Continuing without checking exit code..."
}
Else {
----> $stdOut = $process.StandardOutput.ReadToEnd() -replace "`0","" # `0 = Null
$stdErr = $process.StandardError.ReadToEnd() -replace "`0","" # `0 = Null

$processName = $process.ProcessName

Commented Unassigned: Execute-Process not filling StdOut [101]

$
0
0
Hello,

Thanks for your work.

I encounter a problem with Execute-Process in PassThrough mode, it does not fill the StdOut result.
To my understanding this is due to using the Async form of retrieval for stdout, whereas using the sync form will work (as it is used for stderr).

In my case I solved this by changing this line (modified version below):

If ($NoWait) {
Write-Log "NoWait parameter specified. Continuing without checking exit code..."
}
Else {
----> $stdOut = $process.StandardOutput.ReadToEnd() -replace "`0","" # `0 = Null
$stdErr = $process.StandardError.ReadToEnd() -replace "`0","" # `0 = Null

$processName = $process.ProcessName

Comments: Interesting...Microsoft recommends not to use ReadToEnd() method on both the output stream and the error stream because it can cause failures under certain conditions.

Commented Unassigned: OSArchitecture detection on French Windows [100]

$
0
0
If you run the command for $is64Bit on a French Windows' 64-bit OS, the value comes back as False. The reason is because when you run (Get-WmiObject -Class Win32_OperatingSystem).OSArchitecture, the value comes back as "64 bits" instead of "64-bit". In AppDeployToolkitMain.ps1, the line for $is64Bit needs could be changed to "$is64Bit = (((Get-WmiObject -Class Win32_OperatingSystem -ea 0).OSArchitecture -eq '64-bit') -or ((Get-WmiObject -Class Win32_OperatingSystem -ea 0).OSArchitecture -eq '64 bits'))" and that will fix the issue.
Comments: $is64Bit = [boolean]((Get-WmiObject -Class Win32_Processor | Where-Object { $_.DeviceID -eq 'CPU0' } | Select-Object -ExpandProperty AddressWidth) -eq '64') also solves the problem :D
Viewing all 2341 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>