Hi Fabien;
FWIW: Here is what I do ....
1) Install each PB run-time in its own folder on the deployment machine.
2) Always start the PB App(s) from a BAT file
3) In the BAT file, add the folder of the corresponding "PB Run-time" to the System Path. Then start the EXE.
Note that in using the above execution approach via a BAT file, the System Path is now local and unique to each EXE execution. Upon a BAT file start, the O/S copies the current System Path to the local address space. Then the BAT file System Path modification takes affect locally to that address space. Now the App can locate the PB DLL's on the correct & exact version. After the App completes, the local address's System Path is discarded leaving the O/S's "master" copy intact.
Thus for example, AppA can be PB2017, AppB can be PB2019, AppC can be PB2019R2, etc based - with no run-time DLL conflicts on the same machine.
Food for thought. HTH
Regards ... Chris