1.    개요
 
MS HELP 2.0 을 통해 우리는 CHM 이나 HELP 형태로 된 도움말 콘텐츠를 만들 수 있습니다. 이러한 형태의 파일을 만드는 방법에 대해서 궁금하신 분은 아래의 동영상 강좌를 보시기 바랍니다.
 
 
좀 더 나아가, MS HELP 파일이 아닌 MSDN Documentation 과 통합할 수 있도록 Visual Studio SDK 에서 Help Integration 을 제공해 주고 있습니다. 바로 로컬에 설치되는 MSDN 도움말과 MS HELP 2.0 과의 통합을 할 수 있습니다.
 
 
2.    문제
 
이러한 MS HELP 파일로 변환하기 위해 Sandcastle 또는 ndoc 와 같은 툴을 이용하게 됩니다. 최근 Sandcastle 은 .NET Framework 3.5 를 지원하고 있기 때문에 이것을 기준으로 이야기를 꺼내보려고 합니다.
 
하지만, Help Integration 은 바로 이러한 XML 형태의 .HxS(Compiled Storage File), .HxC(Collection Definition File), .HxT(Table of Contents) 파일 등이 필요한데, InnovaSysHelpStudio Lite 와 같은 툴이나 Sandcastle 과 같은 툴들은 TOC 정보가 담긴 .HxC, .HxT 이나 기타 다른 파일에 BOM(Byte Order Mark) 이 포함되게 됩니다.
 

[그림1] .HxT 파일에 BOM Binary 가 삽입된 모습
 
BOM 이란?
 
UTF-16, UTF-32 등 다양한 인코딩 방식이 존재합니다. 이러한 인코딩에 대한 정보는 파일의 헤더에 보이지 않는 특정 바이트(Byte) 를 넣는 BOM(Byte Order Mark) 을 통해 구분하게 됩니다. 하지만, UTF-8 은 인코딩 방식을 나타내기 위해 EF BB BF 바이트로 고정되어 있지만, 실제로 UTF-8 은 이러한 정보가 필요가 없습니다.
 
바로 HxComp.exe 를 통해 .HxS 로 컴파일된 콘텐츠를 이용해 Help Integration Setup Package 를 만드려면 곧장 오류를 뱉어내게 될 것입니다.
 
 
3.    해결 방법
 
HxComp.exe 와 Help Integration 은 이러한 BOM 코드를 만나게 되면 오류를 발생하여, 더 이상 작업을 진행할 수 없게 됩니다.
 
일반 NotePad 나 EditPlus 등의 에디터를 통해 이러한 BOM 코드가 보이지 않습니다. 그렇기 때문에, Hex Editor 를 이용하여 이러한 BOM 코드를 제거해야 합니다. (MS DOS 시절에는 다양한 Hex Editor 가 있었지만, Windows 환경으로 넘어오면서 쓸만한 Hex Editor 가 별로 없더군요 ^^;)
 
아래와 같이 HxComp 와 Help Integration 의 Setup Package 를 통해 정상적으로 MSDN Documentation 과 통합이 된 것을 볼 수 있습니다.
 

[그림2] 오류없이 MSDN Documentation 과 통합된 모습
 
언제 한번 시간이 되면 MS HELP 2.0 과 Help Integration 에 대해 끄적여 보도록 하겠습니다. ^^

Posted by 땡초 POWERUMC

댓글을 달아 주세요