Imo, the better solution would be to create 5 seperate packages and have each one of them have a wrapper (a simple VBScript that would return an error code) to check whether or not if the software is present on the system.
If some of those softwares are pre-requirements to another, I would suggest to daisy chain them in SMS (Execute another program before) as that would make sure the pre-requirement is present before the second software gets on the computer.
The main advantage of keeping each software package seperate is that they may be reused by other applications if needed, especially if they're known common packages (Such as the Microsoft Visual C++ Runtime for example). That will not only save you the work
to recode the installation sequence, but also save space on your servers since you won't be keeping double copies of things.