Самораспаковывающийся архив (SFX или SEA) — это особый тип файла, который содержит сжатые данные вместе с исполняемыми инструкциями. Этот архив имеет возможность самостоятельно извлекать содержащиеся в нем файлы. Поэтому для открытия самораспаковывающихся архивов вам не нужно какое-либо специальное приложение для извлечения или декомпрессии. В этой статье вы узнаете, как создавать исполняемые самораспаковывающиеся архивы на C# из приложений .NET.
- .NET API для создания самораспаковывающихся архивов
- Создание самораспаковывающегося архива на C#
- Запуск самораспаковывающихся архивов из командной строки
C# .NET API для создания самораспаковывающихся архивов
Для создания самораспаковывающихся архивов мы будем использовать Aspose.ZIP for .NET. Это мощный и многофункциональный API, который позволяет легко автоматизировать функции архивирования в приложениях .NET. Более того, он поддерживает множество популярных форматов архивов, таких как ZIP, TAR и т. д. Вы можете скачать библиотеку DLL API или установить ее с помощью NuGet.
PM> Install-Package Aspose.Zip
Создание самораспаковывающегося архива на C#
Приступим к созданию самораспаковывающегося архива, предполагая, что вы установили Aspose.ZIP для .NET. Поскольку это будет исполняемый архив, его расширение будет .exe. Ниже приведены шаги по созданию исполняемого самораспаковывающегося архива на C#.
- Сначала создайте новый объект FileStream для архива.
- Затем создайте объект класса Архив.
- Добавьте файлы в архив методом 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.ZIP для .NET без оценочных ограничений, получив бесплатную временную лицензию.
Вывод
В этой статье вы узнали, как создавать самораспаковывающиеся архивы (SFX или SEA) на C#. Кроме того, мы обсудили, как извлечь самораспаковывающийся архив с помощью командной строки. Вы можете просто установить Aspose.ZIP для .NET и встроить предоставленный образец кода в свои приложения .NET. Кроме того, вы можете узнать больше об Aspose.ZIP для .NET, используя его документацию. Кроме того, вы можете размещать свои вопросы на нашем форуме.