※ ChatGPTを利用し、要約された質問です(原文:C#でcabファイルをつくる2)
C#でcabファイルをつくる方法
このQ&Aのポイント
C#でcabファイルを作成する方法について教えてください。
makecab.exeにパラメータを渡して実行する方法を試していますが、エラーが発生しています。
具体的なエラー内容やコードの一部を共有して、どこが間違っているのか教えてください。
質問者は追記ができないようなので、新しく質問させていただきます。
あるHPを参考に、makecab.exeにパラメータを渡して
動かす方法を行ったのですが、
エラーが出てしまい行き詰っています。
どこがおかしいのでしょうか?
●エラー内容(下記コードのretの値)
------------------------------------------------------------
Microsoft (R) Cabinet Maker - Version 5.1.2600.5512
Copyright (c) Microsoft Corporation. All rights reserved..
0.00% - list.txt (1 of 1)
100.00% - list.txt (1 of 1)
0.00% [flushing current folder]
80.56% [flushing current folder]
ERROR: (FCIFlushCabinet)Failure creating or writing cabinet file: permission denied
------------------------------------------------------------
●コード
list.txt というファイルを a.cab に圧縮する
------------------------------------------------------------
string cmd = @"c:\WINDOWS\system32\makecab.exe";
string trCmd = @"C:\cabTest\work\list.txt a.cab";
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
psi.FileName = cmd;
psi.RedirectStandardInput = false;
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
psi.Arguments = trCmd;
System.Diagnostics.Process p = System.Diagnostics.Process.Start(psi);
string ret = p.StandardOutput.ReadToEnd();
p.WaitForExit();
------------------------------------------------------------
以下、最初の質問
-------------------------------------------------------------
あるファイルをcabファイルに圧縮(まとめる?)する方法を考えています。
(例えば、a.txt,b.txtをまとめてab.cabにする)
Zipの圧縮であれば、
ZipOutputStreamを使ってているサンプル等があるのですが、
それに相当するものがあるのでしょうか?
それとも「makecab」コマンドを投げる方法がよいでしょうか?
-------------------------------------------------------------
お礼
ありがとうございます。 コマンドプロンプトでやると問題なく動きます。 cabの解凍先もカレントディレクトリ?(コマンドを打った場所)になります。 書き込めないってのは分かりましたが、原因がまだ分かりません また、いろいろ調べてみますが、 どなたかご存知の方がいらっしゃいましたらアドバイス よろしくお願いします。