2014-09-08 5 views
0

버전 정보를 추가하고 사용자에게 새로운 CHM 파일 버전에 대한 경고 메시지를 제공하고 다운로드 할 수있게하려면 버전 정보를 추가하고 CHM 파일에서 가져와야합니다.CHM 파일 버전 추가 및 가져 오기

다른 컴퓨터 (서버 및 클라이언트)에서 CHM의 버전을 비교해야한다는 의미입니다.

다른 방법으로는 날짜와 시간을 확인하는 것이지만 시간대에 대해 기억해야합니다. 따라서 Windows SDK 도움말 SetFileTime 기능과 FILETIME 구조에 따라 다른 파일 시스템에 대해 기억해야하기 때문에 시간대를 기억해야합니다.

누군가가 트릭을 알고 있다면 공유하십시오.

+1

chm 파일에 버전 정보가 없습니다. 이것을 추적하기 위해 자신의 메커니즘을 고안해야합니다. 아마도 정의 된 주제의 HTML 주석에 있습니까? 또는 버전을 포함하는 chm 파일에 비공개 주제를 포함 시키십시오. 'GetFileTime'은 UTC로 시간을 반환합니다. 시간대 조정이 필요하지 않습니다. –

+0

와우, 추가 주제를 포함하는 것과 같은 간단한 아이디어. 그러나 그것을 읽는 방법? 아니면 다른 질문을해야합니까? About'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

아니요. 죄송합니다. 나는 개념을 증명하기 위해'TWebBrowser'로 빠른 재판을했습니다. 더 쉽기 때문에 실제로 VS에서 C#을 사용했습니다. 그러나 이것이 'IHTMLDocument2'사용법을 설명 할 시간이나 장소라고 생각하지 않습니다. 그것은 아주 별개의 주제입니다. –

+0

그래, 나는'TWebBrowser'로 같은 테스트를했는데 그것은 의존성이있어 보편적 일 수는 없다. 비록 'Vcl.HtmlHelpViewer'를 통해 검색했지만 THMHelpViewer (* implementation * 섹션 뒤에 숨겨 짐)의 모든 함수와 procs가'Winapi.Windows.HtmlHelp' proc를 참조하므로 CHM에 대한 각 쿼리가 표시되어야합니다 . 아직도 어떤 운동을 위해 인터페이스 'IHtmlHelpTester' (모듈에 정의 된)를 구현하는 방법을 몰랐습니다. – notricky