if you want to install something before your main package, that also happens to run silently, then I would suggest creating your own wrapper that does that - it's actually the only solution I can think of.
A possible solution could be creating a wrapper MSI that launches .NET runtime first, then your main package - this way, you ensure that .NET is always installed before the main package.
Make sure that the wrapper MSI is not Windows Installer authored (i.e. it does not register in Control Panel) so you don't end up having duplicate entries.
Another solution could be to use some tools that already do this out of the box.