2009-02-08 5 views
32

좋아, C#으로 직접 설치 프로그램을 프로그래밍하고 있는데, .exe 파일의 줄을 따라 뭔가를하고 싶습니다. do File.Copy (file, filedir);EXE에서 파일을 저장하는 방법

아니면 가능하지 않다면 시도하고있는 다른 방법이 있습니까?

+0

호기심에서 벗어나서, 왜 당신 자신의 설치 프로그램을 프로그래밍하고 있습니까? –

+2

내가 실제로 할 수 있는지보기 위해서. – S3THST4

+29

실제로 사람들이 뭔가를 코드화 할 때까지 사람들은 항상 "언어를 배우고 싶다면 코드 코드 코드"라고 말합니다. 모두 초기화되지 않습니다. TEH WHEEEEEEL – Rayne

답변

28

필자는 자체 설치 프로그램을 코딩하지 않지만 어셈블리에 파일을 정말로 포함하려는 경우 강력한 형식의 리소스를 사용할 수 있습니다. 프로젝트의 속성 대화 상자에서 "자원"탭을 연 다음 파일을 추가하십시오.

경우
System.IO.File.WriteAllBytes(@"C:\MyFile.bin", ProjectNamespace.Properties.Resources.MyFile); 
+0

답장을 보내 주셔서 감사합니다. 이것이 제가 찾고있는 것입니다. 좋아, 그래서 File.Copy()를 사용하고 있습니다; 파일 경로에 문자열 오버로드가 필요합니다. 제안 사항 PS- Tried .ToString(); – S3THST4

+0

C# 프로젝트의 문제점 위의 링크를 통해 소스 코드로 완성 되었습니까? 그게 네가 원하는게 아니야? –

+0

System.IO.File.WriteAllBytes를 사용하여 디스크에 파일을 쓰는 방법을 보여주기 위해 업데이트되었습니다. –

4

여기서는 추측하고 있지만 컴파일하기 전에 응용 프로그램에 리소스를 저장하려는 경우 프로젝트 탐색기에서 추가하려는 파일을 마우스 오른쪽 단추로 클릭하고 속성을 선택하고 유형을 포함 리소스로 변경할 수 있습니다 .

그런 다음 나중에 KB에서 지침을 사용하여 포함 된 리소스에 액세스 할 수 있습니다 http://support.microsoft.com/kb/319292

8

솔직히, 자신의 설치 프로그램을 만들 NOT을 건의 할 것입니다. 설치 프로그램을 만드는 데는 많은 문제가 있습니다. 큰 설치 관리자조차도 실제 설치 관리자를 더 이상 만들지 않고 단지 사용자 지정 MSI 패키지를 만듭니다.

Mirosoft Installer (MSI)를 사용하십시오. 그것은 옳은 일입니다. 자신 만의 커스텀 프론트 엔드를 만들지 만, 이미 존재하는 매우 복잡한 휠을 다시 생성하지 마십시오.

업데이트 : 학습을 위해이 작업을 수행하는 경우 "설치자"로 생각하지 않아도됩니다. "연구"를하고 언젠가는 그것을 사용하려는 유혹에 빠질 수 있습니다. 솔직히 말해서 새로운 버전의 Windows가 출시 될 때 많은 문제가 발생하게됩니다. 사람들은 타당하지 않은 가정으로 자신의 바퀴를 만듭니다.

실제로 당신이하려고하는 것은 "패키징"이라고 불리우며 디스크에서 PE 이미지의 구조를 변경하기 때문에 Executable PE 형식에 익숙해 져야합니다.

파일을 리소스에 넣으면이를 시뮬레이션 할 수 있지만 설치자 나 자체 추출기가 실제로하는 것은 아닙니다.

여기에 Self-Extractor 자습서로 연결되는 링크가 있지만 C#에는 없습니다.

실행 가능 코드로이 작업을 수행 할 수 있는지 여부를 알기 위해서는 .NET PE 요구 사항에 대해 충분히 알지 못합니다.

UPDATE2 : 이것은 아마도 당신이 찾고있는 것보다 더 많을 것입니다. 리소스에 파일을 포함시키지 만, 제가 말했듯이 전문 설치자 나 자체 추출기가 실제로 그렇게하는 것은 아닙니다. 나는 당신이 자원으로 끼워 넣을 수있는 것에 여러 가지 제한이 있다고 생각합니다. 그러나 여기에 C#으로 작성된 Self-Extractor Demo이 있습니다.

+1

필자는 전에 필자가 작성한 모든 설치 프로그램을 조사했습니다. 이것은 제가 "휠을 재발행하지 마십시오."에 대해 이야기하고있는 것입니다. 휠에 대해 더 배우기 전에는 계획을 세우지 않으면됩니다. http://www.codinghorror.com/blog/archives/001145.html –

+0

내가 유일한 이유는 내가 할 수 있는지 보려고했다. 나는 그것을 adv 또는 무엇이든 만들려고하지 않고 단지 Install을 클릭했을 때 단지 파일을 디렉토리에 넣는 1 개의 폼을 만들려고 노력하고있다. – S3THST4

+1

S3thst4, 사용할 수있는 설치 프로그램에 대한 연구는 확실히하고 있지만, 실망스럽게 생각하지 않는 설치 관리자는 특히 MSI를 많이 사용하고 있습니다. 엄청난 개선의 여지가 있습니다. 설치 관리자는 공원, 하드 이식 준비. –

0

은 단순히 여러 개의 파일을 저장할 :

ProjectNamespace.Properties.Resources.MyFile 

그런 다음 당신이 사용하는 디스크에 포함 된 리소스를 쓸 수 있습니다 : 그런 다음 사용하여 파일을 얻을 수 있습니다 단일 파일 저장소에서 (그리고 거기에서 파일을 추출하고 상호 작용 등) NFileStorage, .net file storage을 체크 아웃 할 수도 있습니다. 모든 소스가 포함 된 100 % .NET C#로 작성되었습니다. 또한 명령 행 인터프리터가있어 명령 행에서 상호 작용할 수 있습니다.

관련 문제