2011-09-12 154 views
2

"l"コマンドを使用してzipアーカイブをチェックしてから "e"コマンドを使用して抽出するC#プログラムがあります。7-Zip 7zaコマンドラインで指定されたファイルが見つかりません

私は自分のデスクトップからプログラムを実行することができますが、それは素晴らしいですが、サーバー上で直接実行すると次のような例外があります。「システムはできません指定されたファイルを見つけてください "。ファイルのパスが正しいことを確認して、7za.exeに渡しています。私はプロジェクトに埋め込みリソースとして7za.exeを添付していますが、ファイルが見つからない理由はわかりません。何か案は?ありがとう!

私がzipアーカイブを開くことができることを確認しなければならないコードはここにあります.Iを除いて解凍するのはほとんど同じです。

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には、[I] = C:\ユーザーは、 "埋め込まれたリソースは、" 唯一の.NETリソースAPIを使用することができますデスクトップ\ ZipFile.zip

+0

おそらく '7za.exe'を見つけることができません – manojlds

+0

私はもともと思っていたものの、それはファイルの意味を見つけることができないと信じています7za.exe – buzzzzjay

+0

@buzzzzjay:manojldsは正しいです。例外が発生した場合、 '7za.exe'が見つかりませんでしたので、プログラムの起動に失敗しました。 '7za.exe'が正常に起動した場合は、stdout(リダイレクトしたもの)やstderr(あなたが持っていないもの)にエラーメッセージが出ますが、例外はありません。 –

答えて

1

\ミー\、そうでありません個々のファイルを作成し、CreateProcess(これはProcess.Startのようなものです)のような通常のWindowsの機能では見つかりません。

+0

プロジェクトを実行できるようにするにはどうすればEXEファイルを添付しますか? – buzzzzjay

+1

@buzz:通常、サポートファイルをプログラムディレクトリにコピーするのはセットアッププログラム(インストーラ)の責任です。セットアッププロジェクトをお持ちの場合、おそらく追加のファイルをインストールするオプションがあります。そうでない場合は、自分でコピーすることができます。または、リソースAPIを使用してディスク上のリソースのコピーを作成できますが、そのディレクトリに書き込むときにアクセス権の問題が発生する可能性があります。 –

+0

あなたは正しいです。 exeをコピーしませんでした。私はそれをコピーし、それは素晴らしい作品です。ありがとう! – buzzzzjay

関連する問題