Could you give more information about where you plan to put the files of the new version?
You can do the following:
You create a script that will be executed instead of the real program (we will call it updater), this prgorama would check if there is a new version and if it is, it would update the files and finally open the updated real application.
To make the whole process transparent to clients, you would create a direct access to the updater instead of the real program and you would put the same icon (shortcuts allow you to put any icon regardless of the destination). Users think that they are opening the real program but they are actually running the updater that at the end of the process opens the actual program already updated.
If all the clients are in the same network and you can create a network route that all the clients can see, like in my case, you can use this script:
Set fso = CreateObject("Scripting.FileSystemObject")
Set shl = CreateObject("Wscript.Shell")
exe_file = "app_verdadera.exe"
fldr_org = "\ruta_de_red\ActualizarSistema\"
fldr_dst = Left( Wscript.ScriptFullName , InStrRev( Wscript.ScriptFullName , "\" ))
'Si el programa esta abierto no actualice
Set Process = GetObject ("WinMgmts:Root\Cimv2").ExecQuery ("Select * From Win32_Process Where Name = '" & exe_file & "'")
IF Process.count = 0 THEN
FOR EACH file IN fso.GetFolder(fldr_org).Files
file_org = fldr_org & file.Name
file_dst = fldr_dst & file.Name
IF NOT fso.FileExists(file_dst) THEN
'Si el archivo no existe, lo copio
fso.CopyFile file_org, file_dst, true
ELSE
'Si existe, compara las fechas
date_org = fso.GetFile(file_org).DateLastModified
date_dst = fso.GetFile(file_dst).DateLastModified
'Si las fechas de modificacion son diferentes, actualizo
IF DateDiff("s", date_org, date_dst) < 0 THEN
fso.CopyFile file_org, file_dst, true
END IF
END IF
NEXT
END IF
'Ejecuto el verdadero programa
IF fso.FileExists(fldr_dst & exe_file) THEN
shl.Run """" & fldr_dst & exe_file & """"
END IF