2010-08-26 9 views
1

Je sais pour les fichiers dll que vous pouvez lire une version d'assemblage, mais je me demandais s'il existe un moyen de marquer ou de lire les versions de n'importe quel type de fichier (jpg par exemple). Je fais un programme de mise à jour qui ne met à jour que ce qui est nécessaire et ce serait mieux si tous les fichiers étaient versionnés au lieu de garder la trace des versions dans un fichier séparé. Oh et c'est prévu pour winXP mais si je suis une solution win7/windup qui serait génial.Attributs de fichier Windows/version du fichier

Répondre

1

La version d'un assembly est spécifique au format du fichier d'assemblage. Un "fichier" général (tel qu'un fichier JPEG) est juste un sac de bits et le système de fichiers Windows n'a aucune métadonnée de "version" associée à un tel fichier. Une solution pour résoudre votre problème consiste à calculer un hachage (par exemple en utilisant SHA1) sur le contenu du fichier. Si vous avez deux fichiers et que les hachages SHA1 correspondent, alors vous pouvez être sûr que le contenu complet correspond également. (Vous ne pouvez pas être aussi sûr avec une version de fichier incorporée.)

+0

Est-il possible de joindre un attribut de métadonnées personnalisé à ces fichiers avant de les distribuer? Et puis mon updater a-t-il lu cette pièce jointe de métadonnées? –

+0

_some_ formats de fichiers sont conçus de telle sorte que vous pouvez injecter des données arbitraires (par exemple .gif) Cela est généralement fait par la science de la stéganographie (voir http://www.garykessler.net/library/steganography.html). Cependant, cela ne s'applique qu'à un très petit nombre de fichiers, il n'y a pas de moyen général d'y parvenir. Vous feriez mieux de maintenir votre propre base de données, en détectant les changements de fichiers par des hachages mis en correspondance – Basic

+0

@myermian: Non, pas de manière portable et robuste. La seule façon dont je peux penser à Windows est d'utiliser les flux de fichiers alternatifs NTFS, mais ces flux ne sont pas copiés de manière fiable lorsque le fichier est copié, et ne sont même pas pris en charge sur les systèmes de fichiers tels que FAT. D'ailleurs, que feriez-vous si quelqu'un changeait le contenu du fichier mais pas les métadonnées? –

Questions connexes