c# - 如何在非标准文件中嵌入元数据?
问题描述
我需要编写代码来接收来自各种来源的固件更新文件(没有什么是给定的,甚至是文件扩展名)并将它们传递到云端,以便我们的软件可以将它们下载到各个机器上。
作为流程的一部分,前端需要为用户提供更丰富的体验,因此我需要包含版本号、上次对文件进行批准的更新以及有关谁负责的其他信息等信息更新。
我被指示将数据作为“元数据”传递,这样我们就不必包含两个文件,此时这似乎不是一个非常可行的选择。我整天都在研究元数据。TagLib 仅适用于媒体文件。我可以使用 Microsoft API 代码包来读取一些属性,但它不会让我写任何东西。
shell32 选项看起来是唯一的另一种可能性,但我不知道如何写入它。我在 VS 2019 中使用 C# 代码,目前是 .NET 框架 4.6.1,但我认为我们即将升级到 4.8。
有没有一种实用的方法可以将字符串值作为元数据写入文件,而无需了解文件的任何信息,而不是我可以用 c# 发现的内容?
解决方案
如果您不想提供包含元信息的其他文件或位置,您可以创建一个新的单个文件,其中包含您的元数据和实际固件更新。将其视为一个 ZIP 文件,其中包含固件更新文件和其他包含元信息的文件。这样,您将只有一个可以发送的文件,但它包含您以后需要的所有信息。
您不能以任何方式更改固件更新文件,特别是如果您不知道文件格式如何。它很可能会破坏固件更新。
推荐阅读
- flutter - Flutter:在类中保存变量以在不同的小部件中显示它
- javascript - 如何设置 Stripes 元素 CSS 以匹配引导表单控制输入 CSS 属性的大小、垂直对齐、焦点等
- excel - Excel VBA - 如果包含单元格范围内的任何值,则用于过滤列的宏
- javascript - 在 Ember 应用程序中提供来自 S3 的图像资产
- unit-testing - mockito 3,什么是可空的 nayMap() 的替代品?
- javascript - Javascript 数组无法填充循环,但可以正常工作。为什么?
- android - 刚刚在 Mac 上更新到 Android Studio 4.2.1,现在模拟器不再工作
- javascript - Peerjs - P2P 文本聊天 - 只能以一种方式工作,不能双向工作
- facebook - 有没有办法使用 Graph API 重新发布 Facebook 帖子?
- python - 使用 $(System.AccessToken) 在 Azure DevOps 构建管道上使用来自私有 git 存储库的 tox 安装包