Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Are AUMID's (Application User Model ID's) unique?

For example, the free app 3D Builder (for Windows 8.1) has an AUMID of "Microsoft.3DBuilder_8wekyb3d8bbwe!App". I obtained this value from the registry. Is it unique or static?

If you need more information please let me know.

like image 322
valkn0t Avatar asked Jan 11 '23 13:01

valkn0t


1 Answers

Is AUMID unique? Yes and no.

ApplicationUserModelId (AUMID) is a combination of PackageFamilyName and PackageRelativeApplicationID (PRAID). The latter is the 'Id' from in your AppxManifest.xml.

PRAID is unique within a package; it's not unique across packages.

Package identity is a 5-tuple: Name, Version, Architecture, ResourceId and Publisher (usually expressed as PublisherId).

PackageFullName is unique across space and time - 2 packages with the same PackageFullName are the same thing. [You better not change a package's bits but given them the same identity - that's a violation of the appmodel and plays merry hell with the notion of identity. Various checks (try to) block that, e.g. submit different package with same content to the Store shouldn't succeed.]

PackageFamilyName is just Name + PublisherId. So it's not unique across packages.

The appmodel has a rule that 1 user cannot have registered more than 1 Main (application) package in a package family. It's not only perfectly legal but a design feature that on 1 machine I can have Scrabble v1 installed, Joe can have Scrabble v2, Mary's got Scrabble v3 and WU via AutomaticUpdates has Stage'd v4 (though no user is referencing it yet). In this case you can have 4 Main packages in the package family on the machine at one time, though to any one user there is only (at most) 1 available for use (Register'd).

So AUMID is not unique on a machine. But AUMID + User + PackageType=Main is unique on a machine.

  • PackageType_Main is significant. One user can have registered 0-1 Main package, 0+ Resource packages and 0+ Framework packages. As long as you scope your view to just Main packages (i.e. the only ones allowed to contain ) then AUMID+User is unique on a machine.

** Since different machines could have different Main packages in a family AUMID+User isn't unique across machines.

*** There's no rule that PRAID remain unchanged across revs of a package in a family, thus Scrabble v1 can have Id="App", v2 can have Id="MyApp", v3 can have Id="Look.Its.Me.Scrabble" etc. Few developers change their PRAID (as it tends to mess with any coded or persisted references to their AUMID) but there's no rule against it.

like image 173
Howard Kapustein Avatar answered Jan 22 '23 06:01

Howard Kapustein