My VIs have their version encoded in the name of the toplevel VI (e.g. myfancyprogram_133.vi"). Inside it, in the initialization section of the code, I get the "Current VI path", extract the file name, clip the extension, and display it on the FP in a string indicator labeled "Version:".
Much later, if a user calls me, I just have him tell me the version number from the FP. This gives me: (1) access to the name of the original toplevel VI (2) Version he's running. (See attached image of the lower left corner of one of my applications)
It should not be hard to have the program also check a database and compare numbers to see it it is up-to-date, then popup a dialog if the database contains "myfancyprogram_135".
For more details, you can also ge
t the "history..revision number" using vi properties.
Note that in my case the exe name is always just called e.g. "myfancyprogram.exe".