shmuelie / shmuelie/powershell-modules

Expose explicit free-entitlement acquisition through AppInstallManager

Open
#237 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

blocked enhancement module:windows theme:native-interop
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 ShouldProcess for each product/scope; -WhatIf must 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

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.