3

http://www.dotnetperls.com/7-zipの例に示すように、7-zip圧縮を使用してサンプルファイルのzipを作成しようとして います。URLにあるように、「「新しい場合はコピー」を指定する必要があります。 「常にコピー」して、実行可能ファイルなどのファイルを出力ディレクトリにコピーします。」

VSプロジェクトでこのコードを使用すると、プロパティウィンドウに7za.exeのプロパティが表示されたときに、[新しい場合はコピー]を指定するオプションが表示されることがわかりました。

しかし、VS Webサイトで使用すると、このオプションが見つかりません。その結果、このプログラムをデバッグすると、7za.exeが見つからないと表示されます

string sourceName = "pdfSample.pdf";
string targetName = "pdfSample.gz";

ProcessStartInfo p = new ProcessStartInfo();
p.FileName = "7za.exe";

p.Arguments = "a -tgzip \"" + targetName + "\" \"" + sourceName + "\" -mx=9";
p.WindowStyle = ProcessWindowStyle.Hidden;

try
{
    Process x = Process.Start(p);
    x.WaitForExit();
}
catch (Exception ex)
{
    Console.Write(ex.ToString());
} 

VS Webサイトの場合、「新しい場合はコピー」オプションがない理由はありますか?

ありがとう!

4

2 に答える 2

2

7za.exe のパスを含める必要があります。Web ページは、匿名ユーザーまたはアプリ プールのアカウントで実行されていることに注意してください。これらのアカウントには、7zip のパスと exe へのアクセス許可も必要です。

于 2013-01-24T14:09:34.203 に答える
1

個人的には、ASP.NET アプリケーション内から新しいプロセスを開始することは決してありません。

その理由は、プロセスがいくつかのウィンドウを表示するかどうか、または単一インスタンスのような他のことを行うかどうかがわからないためです。

あなたの要件を解決する必要がある場合は、クラス ライブラリを使用して 7zip ファイルを操作します

于 2013-01-24T15:18:40.923 に答える