La idea a priori no parece nada mala.
Para los EXE puedes usar número de versión como comenta Contraveneno, para el resto la fecha de última modificación (siempre que desde el cliente no se modifiquen esos ficheros -o la fecha-).
Para obtener ficheros puedes buscar por
FindFiles en los foros (es una función que hemos utlizado otras veces). Para obtener las fechas puedes revisar
esta entrada.
Toda esa información puedes enviarla al WebService como si fuera una cadena, en eso no creo que haya problemas.
El WebService deberás hacer las comparaciones y generar un fichero (esto es lo que me parece más complejo) y devolver eso al cliente (un link de descarga).
Otra popción es que el cliente pase la cadena y un nombre de fichero para la descarga (un nombre aleatorio, por ejemplo). Debería esperar un tiempo al que el server generara el fichero y luego descargarlo (revisa la unit URLMon -creo ecordar-).