Jellomizer says in this comment:
"The is to solve the problem is simple. Keep the apps self contained. No shared libraries or dll. To move the package you just move the directory containing the app to an other location. Some will say that is how Macs do it. But I would go further and say that is how it was done in DOS.
The shared library is an out of date concept, while sounds good when storage was expensive, today we are virtualizing full platforms just to prevent version incomparably.
What may be a little bonus is to give application/process level networking settings so you can just virtual network your app from the OS"