2014-09-08 8 views
0

Je dois ajouter des informations de version et les récupérer dans le fichier CHM pour pouvoir envoyer un message d'alerte à un utilisateur à propos d'une nouvelle version CHM-fichier disponible et téléchargée.Ajouter et obtenir la version du fichier CHM

Cela signifie, que je devrais comparer les versions de CHM sur différentes machines (serveur et clients). L'autre façon est la vérification de la date et l'heure, mais je dois rappeler sur les fuseaux horaires, donc c'est compliqué, car il faut aussi se rappeler de différents systèmes de fichiers, selon l'aide de Windows SDK SetFileTime et la structure FILETIME de SetFileTime.

Si quelqu'un connaît le truc - s'il vous plaît partager.

+1

Les fichiers chm n'ont pas d'informations de version. Vous devrez inventer votre propre mécanisme pour garder une trace de cela. Peut-être dans un commentaire HTML dans un sujet défini? Ou inclure un sujet privé dans le fichier chm qui contient juste la version. 'GetFileTime' renvoie une heure en UTC. Aucun ajustement de fuseau horaire nécessaire. –

+0

Wow, une idée simple sur l'inclusion de sujet supplémentaire. Mais comment le lire? Ou devrais-je poser une autre question? A propos 'GetFileTime': quand je télécharge CHM à un client - il obtient son temps de création. Et quand un fuseau horaire diffère, cela devient compliqué. – notricky

+0

GetFileTime et SetFileTime fonctionnent sur des valeurs UTC. Si vous souhaitez utiliser l'heure du fichier, vous devez le définir explicitement lorsque vous écrivez le fichier. Le temps du fichier est nul pour ce problème. La lecture du contenu de ch, fichiers est probablement un peu difficile. Je chercherais une bibliothèque. –

Répondre

0

fichiers .chm ne disposaient pas d'informations sur la version. Vous devrez trouver une autre façon de marquer la version du fichier.

Une façon qui se produit pour moi est d'inclure un sujet dans le fichier d'aide qui contient la version. J'imagine que ce sujet serait caché, n'est pas lié par un autre sujet, pas dans la table des matières, etc.

Il ne reste plus qu'à votre application pour pouvoir lire ce sujet dans le fichier d'aide. Je suis sûr que cela peut être fait avec un analyseur de fichiers .chm, si vous pouvez en obtenir un. Peut-être plus facilement, vous pouvez obtenir le navigateur de la plate-forme pour lire le sujet pour vous. Vous pouvez utiliser IHTMLDocument2 pour lire un URI comme ceci:

mk:@MSITStore:C:\somedir\somefile.chm::/html/SomeTopic.html 
+0

Pouvez-vous donner s'il vous plaît une photo de code? Je ne suis pas très bon dans les interfaces. – notricky

+0

Non. J'ai fait un essai rapide avec 'TWebBrowser' pour prouver le concept. Je l'ai fait en VS avec C# parce que c'était plus facile. Mais je ne pense pas que ce soit le moment ou l'endroit pour expliquer comment utiliser 'IHTMLDocument2'. C'est un sujet assez distinct. –

+0

Oui, j'ai fait le même test avec 'TWebBrowser' mais il semble en être dépendant et ne peut pas être universel. Bien que, j'ai recherché 'Vcl.HtmlHelpViewer' et il semble que chaque requête à CHM devrait être montrée, comme tous funcs et procs de' THtmlHelpViewer' (caché après la section de * implementation *) se rapportent au processus de 'Winapi.Windows.HtmlHelp' . Cependant, je ne savais pas comment implémenter une interface 'IHtmlHelpTester' (définie dans le module) pour n'importe quel entraînement. – notricky

Questions connexes