Ошибка при создании установочного пакета 7-zip

Если это не правильное место, чтобы спросить это, я прошу прощения.

Я использую 7zip для создания установочного пакета. Недавно мой компьютер был обновлен, и я больше не могу заставить его работать. Я использую установщик Windows из Visual Studio 2010 для создания установочного пакета, который добавляю в файл с именем setup.7z. Я подтвердил, что файлы заархивированы правильно. Я тогда звоню

copy /b 7zsd.sfx + config.txt + setup.7z setup.exe

который упаковывает все в один файл с именем "setup.exeMsgstr "Нажатие на это запустит установщик.

После обновления я все еще могу сделать файл, и он выглядит просто отлично. Однако, если я пытаюсь нажать на него, я получаю сообщение 7-Zip: Unsupported method.

У меня установлена ​​7-Zip версия 18.05 (x86). Честно говоря, я не уверен, где я получил 7zsd.sfx файл, но помните, что надо было выследить его. Он не имеет версий, но последний раз изменялся 13.07.2007. Я не знаю, имеет ли значение версия, поскольку вам не нужно устанавливать 7-Zip, поскольку это самораспаковывающийся файл. Однако может случиться так, что старая версия не сможет разархивировать что-то, заархивированное новой версией.

2 ответа

Я думаю, что проблема в разных версиях 7zip и 7zip.sfx. К сожалению, SFX-файл отсутствует в последних пакетах 7zip. Вот ссылка на 7zip_extra из какой-то старой версии, в которой есть и файл SFX, и файл.bat для создания установщика. У меня отлично работает.

Инструменты настройки: почему 7-Zip? Существует множество альтернатив для создания (реальных) настроек - и некоторые из них бесплатны: Как создать установщик Windows (несколько ссылок на инструменты для создания всевозможных настроек). Краткое описание ниже также - под " Alternatives " (бесплатные инструменты или инструменты с бесплатными функциями). Эти инструменты были тщательно протестированы, чтобы обеспечить работу с минимальными зависимостями. Просто кое-что, что нужно иметь в виду и оценивать, я думаю.

7-Zip

Угадайте: сначала установите среды выполнения C/ C++ и посмотрите, исчезнет ли проблема. Затем проверьте сжатие - и затем LZMA SDK, как описано ниже?

Неподдерживаемое сжатие?: 7-Zip: неподдерживаемый метод - использовать LZMA? Я полагаю, что эта проблема все еще может возникнуть, хотя этому ответу пару лет.

Отсутствует Runtime?: Вы также можете захотеть проверить ходок зависимости setup.exe чтобы увидеть, зависит ли это от чего-то, что отсутствует на коробке (например, MSVCRT.dll - или другая библиотека времени выполнения). Просто скачайте инструмент. Легко использовать. Или, может быть, сначала попытаться install commonly used C/C++ runtimes, Кроме того, Dependency Walker стареет и время от времени показывает мусор. Есть более новые зависимости - но это еще не совсем прайм-тайм, но попробуйте (нажмите Releases вкладка). Он был обновлен для обработки наборов API Windows и WinSxS (параллельных сборок). Примечание: несколько программ безопасности на http://www.virustotal.com/ определяют Зависимости как " инструмент риска, а не вирус " (это открытый источник).

LZMA SDK: The 7zSD.sfx файл, скорее всего, будет из LZMA SDK. И командную строку, которую вы описываете, можно найти в основном файле справки 7-Zip (не SDK, а тот, который поставляется с обычной установкой 7-Zip). Раздел "-sfx (Create SFX archive) switch": Command Line Version => Switches => -sfc (Create SFX Archive,


альтернативы

Visual Studio 2017: новейшая бесплатная версия Visual Studio: Visual Studio Community 2017 может создавать setup.exe файлы через свои проекты установщика Microsoft Visual Studio 2017 (это расширение должно быть установлено после установки Visual Studio 2017).

WiX: Open Source WiX инструментарий может создавать setup.exe файлы с его компонентом Burn. Специальный образец WiX Burn - просто чтобы получить общее представление - у него есть кривая обучения. Нет графического интерфейса, чтобы помочь вам, все это на основе XML. Используйте с или без Visual Studio.

Расширенный установщик: я считаю, что расширенный установщик может скомпилировать setup.exe даже в бесплатной версии. Несмотря на довольно большую загрузку, я думаю, что это сработает для вас и будет быстрым.

ОБНОВЛЕНИЕ в Advanced Installer: бесплатная версия может создавать только файлы MSI, загрузочные EXE-файлы могут быть собраны с платными версиями (любой из них).

dotNetInstaller: есть также загрузчик настроек dotNetInstaller, который я никогда не использовал. Вот это на github.com (источник).

Inno или же NSIS: Эти бесплатные инсталляторы не MSI могут легко создать setup.exe для вас это было оптимизировано для минимальных зависимостей. Я не использовал их много, но они хорошо известны. NSIS, кажется, создает архивные файлы, совместимые с инструментами Zip.

IExpress и др.: Существуют уязвимости безопасности, которые влияют на эти самораспаковывающиеся пакеты. Еще одна причина, по которой я рекомендую "настоящий" инструмент развертывания с выделенными ресурсами для быстрого устранения таких проблем, несмотря на то, что setup.exe это может быть открыто непосредственно в 7-почтовом индексе.


Извлечение файла

На тему извлечения файлов из setup.exe файлы разных типов:

  • MSI: извлечь MSI из EXE - все файлы MSI могут быть извлечены, и setup.exe файлы, созданные с помощью WiX, также могут быть извлечены
  • NSIS & Inno: похоже, что NSIS создает файлы, совместимые с 7-Zip (приемлемое сжатие), а не с Inno.

Некоторые ссылки:

  • https://en.wikipedia.org/wiki/Self-extracting_archive: " Чтобы утилита распаковки правильно расширяла архив либо самораспаковывающегося, либо стандартного варианта, она должна иметь возможность работать как с форматом файла, так и с файлом. используемый алгоритм. Поэтому может потребоваться варьирование точного исполняемого кода, помещенного в начало самораспаковывающегося архива, в зависимости от того, какие параметры использовались для создания архива. Процедуры распаковки будут другими для архива LZMA 7z по сравнению с LZMA2 Архив 7z, например. "
Другие вопросы по тегам