2011-09-12 5 views
2

7za.exe를 사용하여 "l"명령을 사용하여 zip 아카이브를 확인한 다음 "e"명령을 사용하여 압축을 풀어주는 C# 프로그램이 있습니다.7-Zip 7za 명령 줄에서 지정한 파일을 찾을 수 없음

나는 내 데스크톱에서 프로그램을 실행할 수 있으며 훌륭하게 작동하지만 서버에서 직접 실행하면 다음과 같은 예외가 있습니다. "시스템에서 실행할 수 없습니다. 지정된 파일을 찾으십시오 ". 파일 경로가 올 바르고 7za.exe로 전달되는지 확인했습니다. 내 프로젝트에서 임베디드 리소스로 7za.exe를 연결했는데 파일을 찾을 수없는 이유를 모르십니까? 어떤 아이디어? 감사!

다음은 zip 압축 파일을 열 수 있는지 확인해야하는 코드입니다. l을 제외하고 압축을 풀려면 e와 동일해야합니다.

Process l = new Process(); 
l.StartInfo.FileName = "7za.exe"; 
l.StartInfo.Arguments = "l " + filePath[i]; 
l.StartInfo.WindowStyle = ProcessWindowStyle.Normal; 
l.EnableRaisingEvents = true; 
l.StartInfo.UseShellExecute = false; 
l.StartInfo.RedirectStandardOutput = true; 
l.Start(); // This is were it throuws the exception because it can't find the file. 
// Do stuff to verify zip archive is not corrupt 
l.WaitForExit(); 

예 : 참고 FilePath [내가] = C가 : \ 사용자가 바탕 화면 \ ZipFile.zip

+0

어쩌면'7za.exe '를 찾을 수 없다. – manojlds

+0

원래 생각했던 것,하지만 그것이 파일 의미를 찾을 수 없다고 말한 것 같아요. 7za.exe – buzzzzjay

+0

@buzzzzjay : manojlds가 맞습니다. 예외가 발생하면 '7za.exe'를 찾을 수 없으므로 프로그램을 시작하지 못했습니다. '7za.exe'가 성공적으로 시작 되었다면 stdout (리다이렉트 한 것)이나 stderr (그렇지 않은 것)에 에러 메세지를 얻지 만 예외는 아닙니다. –

답변

1

은 "포함 리소스"에만 .NET 자원 API를 사용할 수 있습니다 \ 나 \ 그렇지 않습니다 개별 파일을 만들고 CreateProcess (이것은 Process.Start 사용)과 같은 일반적인 Windows 기능에서 찾을 수 없습니다.

+0

내 프로젝트에서 실행할 수 있도록 EXE 파일을 첨부하려면 어떻게해야합니까? – buzzzzjay

+1

@buzz : 일반적으로 지원 파일을 프로그램 디렉토리에 복사하는 것은 설치 프로그램 (설치 프로그램)의 책임입니다. 설치 프로젝트가있는 경우 추가 파일을 설치할 수있는 옵션이있을 것입니다. 그렇지 않은 경우 직접 복사 할 수 있습니다. 또는 리소스 API를 사용하여 디스크의 리소스 사본을 만들 수 있지만 해당 디렉토리에 쓸 때 사용 권한 문제가있을 수 있습니다. –

+0

정확합니다. exe를 복사하지 않았습니다. 나는 그것을 복사하고 훌륭한 작품. 감사! – buzzzzjay

관련 문제