#name #package #family #applications #calculating #calculate #msix

无std package-family-name

用于计算MSIX包家族名称值的库

4个稳定版本

2.0.0 2024年7月29日
1.2.1 2024年7月29日
1.1.0 2023年12月13日
1.0.0 2023年12月5日

#89无标准库

Download history 44/week @ 2024-04-21 281/week @ 2024-04-28 153/week @ 2024-05-05 323/week @ 2024-05-12 84/week @ 2024-05-19 67/week @ 2024-05-26 60/week @ 2024-06-02 55/week @ 2024-06-09 122/week @ 2024-06-16 117/week @ 2024-06-23 46/week @ 2024-06-30 87/week @ 2024-07-07 132/week @ 2024-07-14 104/week @ 2024-07-21 572/week @ 2024-07-28 184/week @ 2024-08-04

995 每月下载量
komac 中使用

MIT/Apache

10KB
147

包家族名称

Test Status

一个用于计算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)

然后采取以下步骤

  1. 将标识发布者UTF-16编码
  2. 计算编码发布者的SHA256哈希值
  3. 取哈希值的前8字节
  4. 使用 Douglas Crockford Base32 对结果进行编码
  5. 使用下划线(AppName_zj75k085cmj1a)将标识名称和编码值连接起来

为什么我需要计算包家族名称呢?

虽然这是一个小众库,但也有一些用例。例如,在提交MSIX包到 winget-pkgs 时,包家族名称值是清单中必需的部分。

致谢

@marcinotorowski 已经制作了一个逐步解释如何计算包家族名称哈希部分的说明。此帖子可以在 此处 找到。

许可证

根据以下任一许可证授权:

您可选择使用。

贡献

除非您明确声明,否则根据 Apache-2.0 许可证定义,您有意提交以包含在作品中的任何贡献,将根据上述条款双许可,不附加任何额外条款或条件。

依赖项

~1.5MB
~27K SLoC