SCADT - Shiftavenue Custom App Deployment Toolkit

Torsten Rywelski

May 22, 2025

5 min

An industrial packaging line represents simple packaging with SCADT

Custom packaging based on the PSADT 4.x

We're excited to introduce ShiftDeployment(SCADT) - Our advanced CustomAppDeploymentToolkit built on the solid foundation of the widely adopted PSAppDeploymentToolkit (PSADT).

From our experience across numerous projects, many packagers find the transition to PSADT challenging, and even avoid it altogether.

A software packager has a hard time with too many PowerShell packages

A software packager has a hard time with too many PowerShell packages

The ShiftDeployment (SCADT) was developed as a simplified version of the PSAppDeployToolkit to make that transition easier. Our goal was to help packagers get comfortable with PowerShell and empower them to use it confidently in their day-to-day packaging workflows.

Since PowerShell can handle virtually any task on a Windows system, it raises the question: Why one should even consider alternative packaging languages if PowerShell can do it all?

In my experience, the complexity of the PSADT structure proves to be problematic for many colleagues.


The entire script logic is typically bundled into a single PS1 file: the Invoke-AppDeployToolkit.ps1. For this reason, we have outsourced the script into several scripts (dot sourcing). The complete machine part is scripted in Install.ps1.


InstallUser.ps1 contains the user-specific components, while Uninstall.ps1 is used to script the uninstallation of the application. The PSADT functions can be used in all scripts, as well as all other available PowerShell functions.

Image


By splitting the script, we’ve found that many packagers find it much easier to work with pure PowerShell. Each packager only focuses only on their own code needed for the actual application installation. Furthermore, updating the template is easier, since the entire script logic is outsourced.

VisualStudio Code from Microsoft is used to create the package. With a small tweak to the development environment, all PSADT commands are available via IntelliSense and autocomplete (see my Blogpost on PSADT Scripting with IntelliSense in VS Code). That said, the scripting can still be done in any editor. A simple text editor would even suffice to edit the PS1 files.

The PSADT's integrated logging function automatically logs all PSADT functions.

With the help of a source code management system like Git, packaging can be made audit-proof in just a few steps. Updating the package template can be simplified by using Git templating or submodules. Automated DevOps test methods are also conceivable here.

Need to run the same tasks across multiple packages, or have steps that come up again and again? No problem: PSADT is fully extensible. Add your own functions to handle recurring tasks and streamline your packaging workflow.

Here is an example of a package for Adobe Reader.

Example using an Adobe Acrobat package in the VSCode editor

Example using an Adobe Acrobat package in the VSCode editor

The SCADT and the handling of user parts.
As mentioned earlier, user-specific components, such as files, links or registry keys that belong in a user's profile, are handled separately in the InstallUser.ps1 file. To keep things familiar, this part also uses PSADT functions, which means packagers don’t need to adjust their workflow, and still benefit from built-in logging. The UserPart is activated by a simple SCADT function call during the machine part installation. As soon as a user logs on to the device, their corresponding user-specific setup is installed automatically.


The UI of the PSADT/SCADT.
During the installation, the user is informed that an installation is being carried out – provided they are logged in at the time.

Image

If any applications need to be closed during the package installation (e.g. due to an update), the system can display a corresponding message to the user.

Image

It has been shown that even packagers iwith little prior knowledge of PowerShell can achieve solid results quickly using SCADT. Many packagers do not want to go back after the first few packages. The learning curve is short, and after a few generated application scripts, a natural routine sets in. Package creation becomes just as fast, as with other tools – sometimes even faster.

Do you have questions or need support with migration projects for packaging/software deployment with SCADT? Please contact us via the Contact form or secure a place on our Basics training courses on PowerShell and the PSAppDeployToolkit!

MORE ARTICLES LIKE THIS


April 22, 2025 | 2 mins

Tech certifications – hobby or actually helpful for your career?

Are tech certifications truly career boosters or just trendy badges? This article explores their real-world value in hiring, talent development, and p ...

April 30, 2025 | 2 mins

PSADT Scripting with Visual Studio Code

Learn how to seamlessly integrate the PSAppDeployToolkit (PSADT) into Visual Studio Code - with IntelliSense and autocompletion for efficient PowerShe ...

Follow Us

Our Services

shiftavenue® and the shiftavenue® logo are registered trademarks of shiftavenue GmbH.