自己解凍型アーカイブ(SFXまたはSEA)は、実行可能命令とともに圧縮データを含む特殊なタイプのファイルです。このアーカイブには、それ自体に含まれるファイルを抽出する機能があります。したがって、自己解凍型アーカイブを開くために、特定のエクストラクタまたはデコンプレッサアプリケーションは必要ありません。この記事では、.NETアプリケーション内からC#で実行可能な自己解凍アーカイブを作成する方法を学習します。
自己解凍型アーカイブを作成するためのC#.NET API
自己解凍型アーカイブを作成するには、Aspose.ZIP for.NETを使用します。これは強力で機能豊富なAPIであり、.NETアプリケーションのアーカイブ機能を非常に簡単に自動化できます。さらに、ZIP、TARなどのさまざまな一般的なアーカイブ形式をサポートしています。APIのDLLをダウンロードするか、NuGetを使用してインストールできます。
PM> Install-Package Aspose.Zip
C#で自己解凍型アーカイブを作成する
Aspose.ZIP for .NETがインストールされていることを前提として、自己解凍型アーカイブの作成を開始しましょう。これは実行可能アーカイブになるため、拡張子は.exeになります。以下は、C#で実行可能な自己解凍アーカイブを作成する手順です。
- まず、アーカイブ用の新しいFileStreamオブジェクトを作成します。
- 次に、Archiveクラスのオブジェクトを作成します。
- Archive.CreateEntry(string, string)メソッドを使用してアーカイブにファイルを追加します。
- SelfExtractorOptionsクラスのオブジェクトを作成して、自己解凍型アーカイブのオプションを選択します。
- タイトル、アイコンなどのオプションを設定します。
- 最後に、Archive.Save(FileStream, new ArchiveSaveOptions())メソッドを使用して自己解凍型アーカイブファイルを保存します。
次のコードサンプルは、.NETで実行可能な自己解凍型アーカイブを作成する方法を示しています。
// FileStreamを作成してSFXアーカイブを保存します
using (FileStream zipFile = File.Open("Archives/archive.exe", FileMode.Create))
{
// 新しいアーカイブを作成する
using (var archive = new Archive())
{
// アーカイブするファイル/フォルダを追加する
archive.CreateEntry("SourceFile1.txt", "Archives/SourceFile1.txt");
// SFXアーカイブのオプションを作成および設定する
var sfxOptions = new SelfExtractorOptions()
{
ExtractorTitle = "Extractor",
CloseWindowOnExtraction = true,
};
// SFXアーカイブを作成する
archive.Save(zipFile, new ArchiveSaveOptions() { SelfExtractorOptions = sfxOptions });
}
}
コマンドラインを使用した自己解凍型アーカイブの実行
前のセクションで作成した自己解凍型アーカイブは、ダブルクリックすることで抽出できます。ただし、コマンドラインを使用する場合は、次のコマンドでアーカイブを抽出できます。
C:>archive.exe -autoExtract
ここで、-autoExtractは、アーカイブを抽出できる主要なオプションです。アーカイブがパスワードで保護されている場合は、次のコマンドに示すように、-passwordオプションを使用してパスワードを指定できます。
C:>archive.exe -autoExtract -password:T0p$ecret
実行可能な自己解凍アーカイブを操作するコマンドの完全なリストは、この記事にあります。
無料のAPIライセンスを取得する
無料の一時ライセンスを取得することで、評価の制限なしにAspose.ZIPfor.NETを使用できます。
結論
この記事では、C#で自己解凍型アーカイブ(SFXまたはSEA)を作成する方法を学習しました。さらに、コマンドラインを使用して自己解凍型アーカイブを抽出する方法についても説明しました。 Aspose.ZIP for .NETをインストールして、提供されているコードサンプルを.NETアプリケーションに埋め込むだけです。さらに、ドキュメントを使用して、Aspose.ZIPfor.NETの詳細を調べることができます。また、フォーラムにクエリを投稿することもできます。