J'ai un programme s'exécutant dans C# qui est parfois mis à jour pendant qu'il s'exécute en remplaçant l'exe par un nouveau. Je veux que le programme vérifie régulièrement s'il a été mis à jour et si c'est le cas, redémarrez. J'utilise la fonction suivante pour ce faire.FileVersionInfo.GetVersionInfo Récupération de l'ancienne version d'un exe lors de l'exécution
public static bool DoINeedToRestart(string exe_name)
{
Version cur_version = new Version(MainProgram.StartVersion);
Version file_version = new Version(GetProductVersion(exe_name));
MessageBox.Show("Comparing cur_version " + cur_version.ToString() + " with " + file_version.ToString());
if (file_version > cur_version)
{
return true;
}
return false;
}
public static string GetProductVersion(string path_name)
{
FileVersionInfo myFI = FileVersionInfo.GetVersionInfo(path_name);
return myFI.FileVersion;
}
MainProgram.StartVersion est réglé lorsque le programme commence à être la version actuelle à l'aide du GetProductVersion (exe_name)
exe_name est défini comme le nom de l'exécutable qui est mis à jour. Le problème que j'ai est une fois que le fichier MainProgram.exe a été mis à jour (je le vérifie manuellement en regardant les propriétés du fichier et en vérifiant la version du fichier), le GetProductVersion retourne toujours l'ancienne version du fichier et je ne sais pas pourquoi ! Toute aide est grandement appréciée. Je cours Windows Vista avec .Net 3.5.
Bonjour Ben. Il fonctionne sous Windows Vista (.NET 3.5). Je comprends que le programme chargé dans le noyau ne peut pas être échangé, mais il semble que le fichier .exe sur le système de fichiers puisse l'être. Je semble pouvoir le supprimer ou le renommer sans affecter le fonctionnement du programme. Cela signifie-t-il que le programme en cours le verrait toujours même après l'avoir supprimé? –
Excuses Ben mais j'ai besoin de me corriger. Je peux renommer le .exe d'un processus en cours mais je ne peux pas les supprimer - j'ai réessayé ceci plusieurs fois. Le programme d'installation de Windows est ce qui met à jour le fichier et qui semble être en mesure de supprimer l'ancienne version et de mettre le nouveau (quand vu à travers l'explorateur). Comme vous le dites, cela pourrait être une façade. –
C'est intéressant. Comment commencez-vous le programme, et quel est le chemin? J'ajoute des informations supplémentaires à ma réponse car c'est trop long pour un commentaire. –