2014-09-08 6 views
0

Мне нужно добавить информацию о версии и получить ее из файла CHM, чтобы можно было сделать предупреждающее сообщение пользователю о новом CHM-файле доступной и загруженной версии.Добавить и получить версию файла CHM

Это означает, что я должен сравнивать версии CHM на разных машинах (сервер и клиенты).

Другим способом является проверка даты и времени, но я должен помнить о часовых поясах, поэтому это сложно, потому что также следует помнить о разных файловых системах, в соответствии с Windows SDK help о функции SetFileTime и FILETIME.

Если кто-то знает трюк - пожалуйста, поделитесь.

+1

В файлах chm нет информации о версии. Вам придется придумать свой собственный механизм, чтобы отслеживать это. Возможно, в комментарии HTML в определенной теме? Или включите личную тему в файл chm, который просто содержит версию. 'GetFileTime' возвращает время в UTC. Нет необходимости в настройках часовых поясов. –

+0

Ничего себе, такая простая идея о включении дополнительной темы. Но как читать? Или я должен задать другой вопрос? О 'GetFileTime': когда я загружаю CHM клиенту - он получает свое собственное время создания. И когда часовой пояс отличается, он становится сложным. – notricky

+0

GetFileTime и SetFileTime работают со значениями UTC. Если вы хотите использовать время файла, вам нужно явно указать его при записи файла. Время файла отстой для этой проблемы. Чтение содержимого ch, файлов, вероятно, немного сложно. Я бы поискал библиотеку. –

ответ

0

.chm файлы не имеют информации о версии. Вам нужно будет найти альтернативный способ отметить версию файла.

Один из способов, который возникает для меня, - включить тему в файл справки, содержащий версию. Я предполагаю, что эта тема будет скрыта, что не связано ни с какой другой темой, а не в оглавлении и т. Д.

Все, что осталось, - это то, что ваше приложение может читать эту тему из файла справки. Я уверен, что это можно сделать с помощью парсера файлов .chm, если вы можете его получить. Возможно, более легко вы можете заставить браузер платформы читать эту тему для вас. Вы можете использовать IHTMLDocument2, чтобы прочитать URI следующим образом:

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

Не могли бы вы дать код? Я не очень хорошо разбираюсь в интерфейсах. – notricky

+0

No. Извините. Я сделал быстрое испытание с помощью 'TWebBrowser', чтобы доказать эту концепцию. Я действительно делал это в VS с C#, потому что это было проще. Но я не думаю, что это время или место, чтобы объяснить, как использовать 'IHTMLDocument2'. Это совершенно отдельная тема. –

+0

Да, я сделал тот же тест с 'TWebBrowser', но он, похоже, зависит от него и не может быть универсальным. Хотя, я искал через 'Vcl.HtmlHelpViewer', и кажется, что каждый запрос в CHM должен отображаться, так как все funcs и procs раздела THTmlHelpViewer (скрытые после * реализации) относятся к' Winapi.Windows.HtmlHelp' proc , Тем не менее я не знал, как реализовать интерфейс «IHtmlHelpTester» (определенный в модуле) для любой тренировки. – notricky

 Смежные вопросы

  • Нет связанных вопросов^_^