Gracias por vuestras respuestas.
Lo de sustituir el ParamStr era obvio pero no me habia dado cuenta

.
Siguiendo con el tema de lo de las versiones. ¿Cómo se podría hacer este proceso de forma transparente al usuario? Quiero decir, cuando ejecuta la aplicación y comprueba que hay una nueva, sustuir la antigua en el equipo local del usuario y ejecutarla sin que él note nada de esto.
Lo unico que se me ocurre es hacerlo mediante dos aplicaciones, la primera se limitaría a comprobar la versión, hacer la copia si es necesario y lanzar la "verdadera" aplicación. ¿Se le ocurre a alguien otra forma? Es que no me parece muy limpio dejar al usuario los 2 ejecutables.