AUMID(应用程序用户模型ID)是唯一的吗?

例如,免费的应用程序3D生成器(Windows 8.1)具有“Microsoft.3DBuilder_8wekyb3d8bbwe!应用程序”的AUMID。 我从registry中获得了这个值。 它是独特的还是静态的?

如果你需要更多的信息,请让我知道。

AUMID是唯一的吗? 是和不是。

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

PRAID在包装内是独一无二的; 它不是唯一的包。

包标识符是一个5元组:名称,版本,体系结构,ResourceId和Publisher(通常表示为PublisherId)。

PackageFullName在空间和时间上是唯一的 – 具有相同PackageFullName的2个包是相同的。 [最好不要改变一个包的位,但给他们相同的身份 – 这是对appmodel的违反,玩身份的概念玩乐。 各种检查(尝试)阻止,例如提交不同的包装相同的内容到商店不应该成功。]

PackageFamilyName只是Name + PublisherId。 所以它不是唯一的包。

该appmodel有一个规则,1个用户不能在包系列中注册超过1个Main(应用)包。 这不仅是完全合法的,而且是一个设计特性,在一台机器上我可以安装Scrabble v1,Joe可以有Scrabble v2,Mary有Scrabble v3和WU,AutomaticUpdates有Stage'd v4(尽管没有用户引用它)。 在这种情况下,一次可以在机器上的软件包系列中有4个Main包,但是对于任何一个用户,只有(最多)1个可用(Register)。

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

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

**因为不同的机器可能有不同的主包在一个家庭AUMID +用户是不是唯一的跨机器。

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

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

来源: 为标准8开发Windows 8应用程序指南

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