Разница в форматах файлов между Appx и Zip

В целом Microsoft утверждает, что пакеты appx должны быть в основном почтовыми индексами со специальным содержимым, но на самом деле они немного отличаются. Если я возьму пакет appx и разархивирую его с помощью 7-Zip, я уже получу "Headers-Error" при извлечении. если я снова запаковываю файлы в Zip и изменяю расширение, пакет недействителен.

Я уже искал более подробную информацию о формате, но не смог что-то найти. Большинство ответов на вопросы, касающиеся упаковки appx, заканчиваются командами, взаимодействующими с MakeAppx.exe. Кто-нибудь знает, что именно делает appx отличным от классического zip-файла и этим можно описать, как вы можете создать такой пакет без использования MakeAppx.exe?

Цель состоит в том, чтобы иметь возможность создавать пакеты appx программно самостоятельно, не полагаясь на MakeAppx. Учитывая, что они так много рекламируют "Опираясь на стандарты" и "Соглашения об открытой упаковке", я думаю, что разница невелика. Большинство других форматов файлов OPC выглядят как 100% классические почтовые индексы. Документы Office, пакеты NuGet, расширения Visual Studio и т. Д. Могут быть легко распакованы и упакованы без дополнительной логики. Только контейнеры appx содержат некоторую специальную информацию заголовка.

История моего вопроса заключается в том, что я являюсь автором сервера подписи, используемого в нашей компании. Он принимает определенные форматы данных и создает их подписанные версии (например, сервисы SignTool). Одной из функций является перезапись существующих подписей подписью нашей компании (например, для замены сертификатов внутреннего тестирования производственными). У Appx есть некоторые ограничения, когда дело доходит до подписи, манифест должен быть правильным, должны использоваться правильные алгоритмы хеширования и т. Д. Microsoft предоставляет источник о том, как сделать подпись программно, приятно. Но когда дело доходит до возможной переупаковки, API не доступен. Я мог бы попробовать просто взаимодействовать с exe, вызывая его, но это приносит много недостатков, которые я хочу предотвратить (обработка ошибок, создание временных файлов и т. Д.)

1 ответ

На основании предоставленной вами ссылки ( Разработка простого и безопасного пакета приложения - APPX) создается впечатление, что файл appx действительно является zip-файлом, который содержит четко определенный набор документов.

Чтобы проверить, что я скачал несколько примеров файлов appx. Когда я запустил тест на распаковку на Linux-компьютере, они прошли. У меня нет 7-Zip.

Углубившись немного глубже в файлы appx, я вижу, что все они содержат 8 дополнительных нестандартных байтов заполнения после каждого раздела дескриптора данных в файле. Похоже, что эти байты не указаны в спецификации zip-файла ( APPNOTE.TXT) или в спецификации Open Office. Это может объяснить поведение, которое вы наблюдаете с 7-zip.

Тогда ключевой вопрос для вас заключается в том, являются ли байты заполнения основной причиной того, что вы не можете использовать 7-Zip для создания действительного файла appx.

Другие вопросы по тегам