一般来说,微软声称appx 包应该基本上是带有特殊内容的 zip,但实际上它们略有不同。如果我拿一个 appx 包并用 7-Zip 解压,我在解压时已经收到“Headers-Error”。如果我再次将文件打包成 Zip 并更改扩展名,则该包无效。
我已经在搜索有关格式的更多详细信息,但找不到任何东西。appx 打包相关问题的大多数答案都以与 MakeAppx.exe 交互的命令结尾。有谁知道是什么使 appx 与经典的 zip 文件不同,并且由此可以描述如何在不使用 MakeAppx.exe 的情况下创建这样的包?
目标是能够以我自己的方式以编程方式创建 appx 包,而不依赖于 MakeAppx。考虑到他们如此提倡“建立在标准之上”和“开放式包装公约”,我猜它们的区别是微妙的。大多数其他 OPC 文件格式似乎是 100% 的经典 zip。Office 文档、NuGet 包、Visual Studio 扩展等可以轻松解压缩和重新打包,无需额外的逻辑。只有 appx 容器似乎包含一些特殊的标头信息。
我的问题的背景是我是我们公司使用的签名服务器的作者。它接受某些数据格式并创建它们的签名版本(如“SignTool”服务)。一项功能是用我们公司的签名覆盖现有的签名(例如,用生产证书替换内部测试证书)。Appx 在签名方面有相当多的限制,清单必须正确,必须使用正确的哈希算法等。微软提供了如何以编程方式进行签名的源代码,很好。但是当涉及到可能的重新打包时,没有可用的 API。我可以尝试简单地与 exe 交互,调用它,但这会带来很多我想要防止的缺点(错误处理、临时文件创建等)