【问题标题】:Are AUMID's (Application User Model ID's) unique?AUMID(应用程序用户模型 ID)是唯一的吗?
【发布时间】:2015-08-16 01:16:42
【问题描述】:

例如,免费应用程序 3D Builder(适用于 Windows 8.1)的 AUMID 为“Microsoft.3DBuilder_8wekyb3d8bbwe!App”。我从注册表中获得了这个值。它是唯一的还是静态的?

如果您需要更多信息,请告诉我。

【问题讨论】:

    标签: windows windows-8.1


    【解决方案1】:

    AUMID 是独一无二的吗?是的,不是的。

    ApplicationUserModelId (AUMID) 是 PackageFamilyName 和 PackageRelativeApplicationID (PRAID) 的组合。后者是 AppxManifest.xml 中的“Id”。

    PRAID 在一个包中是唯一的;它在包中不是唯一的。

    包标识是一个 5 元组:名称、版本、架构、ResourceId 和 Publisher(通常表示为 PublisherId)。

    PackageFullName 在空间和时间上是唯一的 - 具有相同 PackageFullName 的 2 个包是同一事物。 [你最好不要更改包的位,而是给它们相同的身份——这违反了应用程序模型,并且在身份概念上玩得很开心。各种检查(尝试)阻止它,例如向商店提交具有相同内容的不同包应该不会成功。]

    PackageFamilyName 只是名称 + PublisherId。所以它在包中并不是唯一的。

    appmodel 有一个规则,即 1 个用户不能在一个包系列中注册超过 1 个主(应用程序)包。这不仅完全合法,而且是一个设计功能,在一台机器上我可以安装 Scrabble v1,Joe 可以安装 Scrabble v2,Mary 有 Scrabble v3,WU 通过 AutomaticUpdates 有 Stage'd v4(尽管还没有用户引用它)。在这种情况下,您可以一次在机器上的包系列中拥有 4 个主包,但对于任何一个用户来说,只有(最多)1 个可供使用(已注册)。

    所以 AUMID 在机器上不是唯一的。 但是 AUMID + User + PackageType=Main 在一台机器上是唯一的。

    • PackageType_Main 很重要。一个用户可以注册0-1个主包,0+资源包和0+框架包。只要您将视图范围仅限于 Main 包(即唯一允许包含 的包),那么 AUMID+User 在机器上就是唯一的。

    ** 由于不同的机器在一个系列中可能有不同的主包 AUMID+User 在机器之间不是唯一的。

    *** 没有规定 PRAID 在一个系列中的包的各个版本中保持不变,因此 Scrabble v1 可以有 Id="App",v2 可以有 Id="MyApp",v3 可以有 Id="Look。 Its.Me.Scrabble”等。很少有开发人员更改他们的 PRAID(因为它往往会混淆对其 AUMID 的任何编码或持久引用),但没有任何规则反对它。

    【讨论】:

    • 那么我们可以假设 AUMID 对于机器上的每个用户都是唯一的吗?
    【解决方案2】:

    AUMID 格式是包系列名称后跟感叹号和应用程序 ID。应用程序 ID 可以在 AppxManifest.xml 文件中的元素下找到。

    来源:Guidelines for Developing Windows 8 Apps for Standard 8

    应用程序 ID 是唯一的,所以是的,AUMID 对于每个应用程序都是唯一的。

    【讨论】:

      猜你喜欢
      • 2014-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      相关资源
      最近更新 更多