shmuelie / shmuelie/powershell-modules
Expose AppInstallManager product installation requests through a compiled cmdlet
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, #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.
ShouldProcessprecedes each request;-WhatIfsubmits 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
- https://learn.microsoft.com/uwp/api/windows.applicationmodel.store.preview.installcontrol.appinstallmanager.startproductinstallasync
- https://learn.microsoft.com/uwp/api/windows.applicationmodel.store.preview.installcontrol.appinstallmanager.startproductinstallforuserasync
- https://learn.microsoft.com/uwp/api/windows.applicationmodel.store.preview.installcontrol.appinstalloptions
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 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