Hola.
Para leer la versión de si mismo, se utiliza el objeto app Por ejemplo:
dim s as string: dim v as integer
s=app.path devuelve la ruta completa donde se encuientra alojado el programa
v=app.major devuelve la parte relevante de la versión (comprendida entre 0 y 9999)
Con app.minor la de menor relevancia.
Escribe sobre el código app y pulsa f1 te lllevará a la ayuda del objeto, allí podrás examinar todas sus propiedades y métodos.
No obstante con esto sólo obtienes la versión de la aplicación. Lo ideal es que mantengas un fichero de texto (o en el registro) una relación de cada fichero con su ruta y versión, entonces resulta más sencillo saber que archivo has de actualizar, si construyes un par de rutinas donde:
* Una que comprueba versiones leyendo desde el cliente y comparando con la versión disponible en el servidor (otro fichero) tras lo cual elabora la lista (en realidad 3, se comenta al final) de ficheros y rutas a actualizar...
* Otra que actualiza el fchero (o el registro) del cliente que contiene las versiones de los archivos. Sustituyendo las entradas anteriores por las actuales, para esto se usan las 4 listas mencionadas anteriormente como se detallan someramente a continuación.
Las 3 listas: partiendo de los dos ficheros de versiones a) versionesCliente.log
versionesServidor.log y comparando las entradas de versiones entre ambos ficheros donde se genera 2 listas: a1) versionesClientesNoCambios a2) versionesClientesCambios y a su vez se genera otra como b1) versionesServidorActualiza que es la lista cuya comparación resultó positiva.
Así los ficheros a subir serán los que figuran en b1 en sustitución de los que figuran en b2, y tras subirlos el nuevo archivo versionescliente.log será la concatenación de la lista a1 y b1. En la práctica es mejor renombrar el archivo versionesCliente.log a versionesCliente.bak y generar de nuevo versionesCliente.log (si existía previamente versionesCliente.bak se elimina).
En otro momento te respondo a tu segunda cuestión.
Saludos...