shmuelie / shmuelie/powershell-modules
Expose explicit free-entitlement acquisition through AppInstallManager
Nobody has claimed this yet.
- Dominant language
- PowerShell
- Stars
- 0
- Forks
- 0
- Avg merge
- 21m
- Merged PRs (30d)
- 124
Description
Parent: #232
Dependencies and access restriction
Depends on #233, #234. Implementation remains blocked until the supported-access gate and listed prerequisites are complete.
Microsoft documents AppInstallManager access as protected by a private capability restricted to Microsoft-developed apps. Do not bypass that restriction or treat runFullTrust/admin access alone as sufficient.
API scope
GetFreeDeviceEntitlementAsync, GetFreeUserEntitlementAsync and GetFreeUserEntitlementForUserAsync.
Acceptance criteria
- Treat these Get-prefixed native APIs as state-changing entitlement acquisition, not read-only lookup. Choose an appropriate mutating PowerShell contract.
- Make device-wide, current-user and specified-user scope explicit and mutually exclusive; never silently broaden a user grant to all device users.
- Require
ShouldProcessfor each product/scope;-WhatIfmust not acquire any entitlement. - Preserve typed entitlement status and native errors. An entitlement grant is not proof of download, installation or a paid purchase.
- No automatic license acquisition by unrelated inventory/search commands, purchase flow, authentication changes or capability bypass.
- Cover supported scope, denied/failed/already-held outcomes, invalid identity, cancellation and preview with deterministic tests only.
Shared delivery requirements
Follow the parent epic's compiled-C# contract, user-scope and capability/version gates. Include deterministic Pester 6.2+ coverage, comment-based help, public documentation and unreleased notes in the same implementation PR. Use fail-closed fake adapters for side effects; no real installs, entitlement grants or settings changes in CI. Preserve original errors and distinguish unavailable, unknown, requested and completed outcomes.
Documented API references
- https://learn.microsoft.com/uwp/api/windows.applicationmodel.store.preview.installcontrol.appinstallmanager.getfreedeviceentitlementasync
- https://learn.microsoft.com/uwp/api/windows.applicationmodel.store.preview.installcontrol.appinstallmanager.getfreeuserentitlementasync
- https://learn.microsoft.com/uwp/api/windows.applicationmodel.store.preview.installcontrol.appinstallmanager.getfreeuserentitlementforuserasync
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading parent issue #232 and dependencies #233 and #234, then review the AppInstallManager entitlement APIs and the parent epic's compiled-C# contract, scope, and capability gates. Use deterministic Pester 6.2+ tests with fail-closed fake adapters; done means all specified scopes and outcomes, ShouldProcess/-WhatIf behavior, help, documentation, and unreleased notes are covered without real side effects.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, powershell
- Domain
- api, operating-systems, tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100