Last time, we talked about Executable Installers (.EXE). In this part of our blog, we’ll discuss an old, but still widely used approach to non-virtual application packaging – Scripted installations.

Scripted installation is one of the most archaic ways to install software. In a certain way, scripted installation is a father to many software packaging methods, as most modern installers are based on various script languages. The most widespread script languages in packaging are:

    • Batch Script (*.BAT and *.COM). Batch programming is very old-school! Batch script contains a set of system commands, which can also be executed using a MS-DOS emulator or Windows Command Prompt (cmd.exe). Batch-based packages contain a list of commands for copying files, applying an imported registry, managing system processes, services etc. The commands can be processed using basic conditions, loops, etc. During the installation, the files are installed to their destination paths, the registry is imported and some other auxiliary processes and activities are executed in the background. Interaction with the user is conducted via console screen (information is shown in text form during the installation process). Moreover, batch script can be used to install a set of “.EXE/.MSI” installers in any combination and to customize “.EXE” installations. In most cases Windows Installer packages do not require batch scripts due to advanced internal mechanisms. Nowadays the batch scripts are rarely used for application packaging needs.


    • VBScript is a way more advanced approach to scripted installations, based on Visual Basic. This programming language provides developers with almost endless opportunities and allows working with a system on a much deeper level, using WMI (Windows Management Instrumentation) and COM objects. With a help of VBScript, fully scripted packages can be built. VBS Wrappers perform sets of actions, including packages installations, additional customizations or system cleanups, etc. VBS is also commonly used in conjunction with .MSI Windows Installer, ensuring fine-tuning via MSI Custom Actions.


  • Windows PowerShell is the next generation command-line console and scripting language by Microsoft. Interest in PowerShell has been rapidly growing since the initial release in 2006. In fact, Microsoft was trying to make a sort of Linux’ terminal Bash and, apparently, they succeeded! Indeed, PowerShell has many means to manage the system and in the course of years, it has gone through a number of iterations. All recent Microsoft products for the server market have native support for this scripting language using specific PowerShell snippets. Most likely, you won’t find a standalone PowerShell package, however it’s widely used to fine tune other packages and as an installer wrapper. E.g., service is using OneGet protocol (based on NuGet) to implement repositories, similar to those of Linux. Packages for these repositories are wrapped in a PowerShell script and are installed to the user’s workstation with a help of this script. It is worth mentioning, that Microsoft OneGet is available as a pre-installed service in Windows 10 and is aimed at changing the approach to software deployment in Windows environment.

Some things just never get old. Being very close to low-level programming, script-based installations offer incredibly powerful and flexible customization capabilities.

Next time, we’ll summarize our knowledge about Non-Virtual application packaging and will come up with practical tips! Stay tuned for more blog posts on software packaging from our specialists!

About the Author

Dmitry Puzanov is an experienced IT specialist, a leader of Infopulse application packaging team and an analyst in the packaging sphere with 10+ years of experience in support engineering, networking, software installation development, and IT management.

Learn more about PACE Suite: