
In my line of work, knowledge of how installations work is crucial. And with that knowledge, comes experience making terrible vendor installations work properly in an enterprise environment. For years, the standard solution, when troubleshooting and experimenting was going nowhere, was to repackage the troublesome app. Where experimenting lead somewhere, there might have been an eventual VB script written to cater for all the complexities involved to get everything working properly.
Some of the common challenges were
Show a nice interface to let users know something was happening, for silent installs
Install admin (system context) and user level files or registry keys, from the same script.
Return proper error codes back to the deployment system (commonly SCCM)
Link together several installations
Switch between install types (interactive, passive or silent; pulled install, task sequence, server install, etc)
These were common problems, and in some cases, you had to make several installation scripts, to cater for different scenarios. Ok, if you had enough time, you could create a script that accepted certain parameters on launch, to do different things. But in the rush to meet SLAs, you would do the most urgent thing first, and then go back to revisit the app later, when a different scenario was needed.
Which is why I was happy to find the PowerShell App Deployment Toolkit, as a common deployment toolkit to help with the common packaging and deployment issues.