4个稳定版本
2.0.0 | 2024年7月29日 |
---|---|
1.2.1 |
|
1.1.0 | 2023年12月13日 |
1.0.0 | 2023年12月5日 |
#89 在 无标准库
995 每月下载量
在 komac 中使用
10KB
147 行
包家族名称
一个用于计算MSIX包家族名称值的Rust库。
这是一个 #![no_std]
库。
每个MSIX应用程序都有一个包家族名称值,其外观类似于 AppName_zj75k085cmj1a
。此值可以通过在PowerShell中运行 Get-AppxPackage -name<>
来找到已安装的MSIX包,并滚动到 PackageFullName
。
但是,我们可以在不安装包的情况下计算出包家族名称值。这正是这个库的作用所在。
用法
将此添加到您的 Cargo.toml
[dependencies]
package-family-name = "2"
let package_family_name = PackageFamilyName::new("AppName", "Publisher Software"); // AppName_zj75k085cmj1a
包家族名称是如何计算的
简而言之,包家族名称由两部分组成
- 标识名称 (
AppName
) - 标识发布者 (
Publisher Software
)
然后采取以下步骤
- 将标识发布者UTF-16编码
- 计算编码发布者的SHA256哈希值
- 取哈希值的前8字节
- 使用 Douglas Crockford Base32 对结果进行编码
- 使用下划线(
AppName_zj75k085cmj1a
)将标识名称和编码值连接起来
为什么我需要计算包家族名称呢?
虽然这是一个小众库,但也有一些用例。例如,在提交MSIX包到 winget-pkgs 时,包家族名称值是清单中必需的部分。
致谢
@marcinotorowski 已经制作了一个逐步解释如何计算包家族名称哈希部分的说明。此帖子可以在 此处 找到。
许可证
根据以下任一许可证授权:
- Apache License 2.0,(LICENSE-APACHE 或 https://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 https://opensource.org/licenses/MIT)
您可选择使用。
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义,您有意提交以包含在作品中的任何贡献,将根据上述条款双许可,不附加任何额外条款或条件。
依赖项
~1.5MB
~27K SLoC