【发布时间】:2015-08-16 01:16:42
【问题描述】:
例如,免费应用程序 3D Builder(适用于 Windows 8.1)的 AUMID 为“Microsoft.3DBuilder_8wekyb3d8bbwe!App”。我从注册表中获得了这个值。它是唯一的还是静态的?
如果您需要更多信息,请告诉我。
【问题讨论】:
标签: windows windows-8.1
例如,免费应用程序 3D Builder(适用于 Windows 8.1)的 AUMID 为“Microsoft.3DBuilder_8wekyb3d8bbwe!App”。我从注册表中获得了这个值。它是唯一的还是静态的?
如果您需要更多信息,请告诉我。
【问题讨论】:
标签: windows windows-8.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 在一台机器上是唯一的。
** 由于不同的机器在一个系列中可能有不同的主包 AUMID+User 在机器之间不是唯一的。
*** 没有规定 PRAID 在一个系列中的包的各个版本中保持不变,因此 Scrabble v1 可以有 Id="App",v2 可以有 Id="MyApp",v3 可以有 Id="Look。 Its.Me.Scrabble”等。很少有开发人员更改他们的 PRAID(因为它往往会混淆对其 AUMID 的任何编码或持久引用),但没有任何规则反对它。
【讨论】:
AUMID 格式是包系列名称后跟感叹号和应用程序 ID。应用程序 ID 可以在 AppxManifest.xml 文件中的元素下找到。
来源:Guidelines for Developing Windows 8 Apps for Standard 8
应用程序 ID 是唯一的,所以是的,AUMID 对于每个应用程序都是唯一的。
【讨论】: