Создать исполняемый самораспаковывающийся архив на C#

Самораспаковывающийся архив (SFX или SEA) — это особый тип файла, который содержит сжатые данные вместе с исполняемыми инструкциями. Этот архив имеет возможность самостоятельно извлекать содержащиеся в нем файлы. Поэтому для открытия самораспаковывающихся архивов вам не нужно какое-либо специальное приложение для извлечения или декомпрессии. В этой статье вы узнаете, как создавать исполняемые самораспаковывающиеся архивы на C# из приложений .NET.

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, используя его документацию. Кроме того, вы можете размещать свои вопросы на нашем форуме.

Смотрите также