shmuelie / shmuelie/powershell-modules

Expose AppInstallManager product installation requests through a compiled cmdlet

Open
#245 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, #236. 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

Supported StartProductInstallAsync and StartProductInstallForUserAsync overloads, including AppInstallOptions. Do not build on retired StartAppInstallAsync.

Acceptance criteria

  • Bind documented product/catalog/identity/correlation inputs without hardcoded private values. Map supported overloads and options explicitly.
  • Make current-user, specified-user and all-user intent unambiguous. Validate the supported user/privilege context; never auto-elevate or interpret a writable capability flag as proof of authorization.
  • Account for target volume, repair, staging, storage preference, forced app restart, launch, pinning, toast and campaign options. Intrusive actions require explicit opt-in; document intentionally unsupported options and version gates.
  • ShouldProcess precedes each request; -WhatIf submits no installation, entitlement or associated mutating work.
  • Return typed request/item identities and observed initial state, not fabricated installation success. Support later monitoring without requiring it implicitly.
  • Preserve async and native errors, partial multi-item results and cancellation semantics. No implicit entitlement acquisition or paid purchase.
  • Document the supported post-first-sign-in context and the documented warning against use during OOBE.

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 with parent issue #232 and dependencies #233, #234, and #236, then read the documented AppInstallManager product-install overloads and AppInstallOptions references. The implementation is complete when the compiled cmdlet, Pester 6.2+ tests, help, public documentation, and unreleased notes cover the stated validation, ShouldProcess, error, cancellation, and fail-closed adapter requirements without performing real installs.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, powershell
Domain
cli, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.