2017-11-02 2 views
-2

하나의 exe 파일 만있는 프로그램을 만들려고합니다. 그것이 요구 사항입니다.FileOptions.DeleteOnClose를 사용하여 파일을 만들고, 쓰고, 삭제 된 것을 확인하십시오.

하지만 사용자가 무엇을하는지 알 수 있도록 해당 프로그램에 대한 도움말을 구현해야합니다. chm 파일을 만들고 HelpProvider를 사용하기로 결정했습니다. 처음에는 chm 파일을 임베드하여 HelpProvider가 resources.resx에서 열 수 있다고 알았습니다.

글쎄, 그건 작동하지 않았다.

프로그램에 파일을 추가하거나 온라인 호스팅 등을 사용하지 않고 다른 도움말 옵션을 모르겠으므로 사용자가 디스크를 열면 내장 된 chm을 쓰게됩니다.) 그리고 그것을 삭제하기 (이것은 메모리에서 그렇게 할 수있는 방법을 찾는데 실패한 이후에).

문제는 FileOptions.DeleteOnClose 플래그가있는 파일을 작성하고 그것에 쓰는 것입니다. If I

File.Create(path, 100, FileOptions.DeleteOnClose); 
File.WriteAllBytes(path, mychm); 

파일은 Create 방법으로 잠겨 있습니다. 을 Create 메서드에 넣으면 파일이 쓰여지기 전에 삭제됩니다.

+0

'File.Create'는 당신에게'FileStream'을줍니다. 쓰기 전용으로 사용하고 해당 필드 주위에 보관하면 문제의 스트림에서 가비지 수집되지 않습니다. 작업이 끝나면 명시 적으로 폐기하십시오. –

+2

그것은 날지 않을 것입니다. 프로그램 (예 : hh.exe, 도움말 뷰어)은 FileShare.Write 및 FileShare.Delete로이 파일을 열어야하며 그렇게하지 않을 것입니다. 그러한 비현실적인 요구 사항에 대한 도움을 요청하는 것은 유용하지 않습니다. –

+0

왜 도움말 파일을 만들고 삭제하지 않고 도움이 필요한 다른 프로젝트를 만들고 여기에 설명 된대로 exe 파일에 병합하십시오 : https://stackoverflow.com/questions/10137937/merge-dll-into-exe. – Nick

답변

1

좋아, 코드는 단일 .exe 여야합니다. 공정하다.

응용 프로그램이 실제로 도움말을 표시하는 것으로 생각하신 적이 있습니까? 즉, 도움말의 요구 사항이 실제로 무엇인지 알지 못합니다 (클릭 할 수있는 색인, 목차, 도구 설명 등). 그러나 사용자 친화적 인 방법에 따라 언제든지 추가 할 수 있습니다. WebBrowser 객체가있는 Windows Form을 사용하고 HTML 내용을 WebBrowser에 직접 삽입합니다 (myWebBrowserControl.Document를 통해).

이것은 어떤 수단으로도 최적이 아니라는 의미입니다. 그러나 ".exe 출력이 하나 뿐인 도움말 사용 응용 프로그램"에 대한 빠르고 쉬운 솔루션입니다.

편집 : 추가 아이디어. 비즈니스 내부에서 사용하기 위해이 파일을 작성하는 경우 회사 네트워크의 접근 가능한 위치에 도움말 파일을 저장하고 앱을 원격 위치에 연결할 수 있습니다. 또한 사용자가 다운로드 할 앱을 개발하는 중이라면 온라인 도움말을 개발하고 앱이 귀하의 도움말 URL에 링크되도록 할 수 있습니다.

+0

그것은 좋은 생각입니다. 방금 훨씬 쉬워 질 것이라고 생각했습니다. HelpProvider와 chm을 사용하십시오. –

+0

당신은 아마 맞을 것입니다. CHM을 사용하면 훨씬 쉬워 질 것입니다.하지만 속임수를 쓰고 나면 '하나의 파일 만'으로 가야합니다. 그만한 가치가 있는지 확신 할 수 없습니다. 또한 편집에 대한 아이디어를 확인하십시오. 둘 중 어느 것이 적합 할지라도 내 원본보다 더 나은 솔루션입니다 (작업 환경에서 기술적으로 기능을 수행 할 수 있는지 여부는 알 수 없습니다). – Kevin

관련 문제