liquidware-ninjaSecond brain & toolkit
Personal project. Research and learning only. Not for production. No warranty.Not for production
  • Built on my own time for research and learning. Not affiliated with, endorsed by or supported by my employer, Liquidware or Microsoft.
  • Bring your own Liquidware licenses. Don't run any of it in production or against tenants and subscriptions that matter. Test in a dedicated lab first.
  • Provided "as is", without warranty of any kind, under each repository's license. You use it at your own risk and own the Azure charges it incurs.
  • Contributions and forks are welcome and encouraged on public repos. See Contribute.

flexapp-factory

High-level overview of the private Liquidware FlexApp packaging factory and application server evaluator (feature F24): inspects existing Windows application servers, joins Stratusphere UX / ux-assess telemetry to retire unused software, builds multi-step dependency DAGs, resolves installer media, and drives unattended FlexApp captures and headless smoke tests.

Private Companion RepoPython 3.10+PowerShell 7FlexApp Packaging Automation (FPA)AVD App Attach

Two Connected Jobs

1. Evaluate Existing Application Servers

Discovery & DAG

Export-ServerAppInventory.ps1 + flexapp-factory evaluate

  • Deep Endpoint & RDSH Inspection: Collects Windows Registry Uninstall keys (x64 and WOW6432Node), MSI Installer tables, App-V/MSIX packages, Windows Services, Kernel Drivers (.sys), Scheduled Tasks, COM classes, ODBC DSNs, installed runtimes (VC++, .NET, Java, WebView2), and cached MSIs.
  • Telemetry-Driven Retirement: Joins Stratusphere UX / ux-assess application usage data to separate active applications from unused software (retire).
  • 3-Tier Classification & Dependency DAG: Classifies every app into blocked-or-base-image (drivers, system services, or >80% user share), shared-runtime, or layerable / composite-layer (grouping app-specific runtimes, ODBC DSNs, and Office add-ins into multi-step composite recipes).
  • 4-Step Installer Sourcing Cascade: Resolves silent installers in strict priority order:
    1. Customer media share
    2. Curated recipes/catalog.json + Winget / Evergreen
    3. Server InstallSource or full-CAB cached MSI
    4. Actionable Missing Media Checklist deliverable

2. Convert & Run Unattended Captures

Unattended Build

ConvertTo-FlexAppSource.ps1 + compile-queue + Invoke-FlexAppFactory.ps1

  • Multi-Format Package Ingestion: Converts existing .appv, .msix/.msixbundle, .intunewin, SCCM / PSAppDeployToolkit (Deploy-Application.ps1), and .msi/.exe bundles into normalized capture inputs.
  • Deterministic Offline Build Queue: Compiles and validates build-queue.json offline (zero cloud spend in Plan mode) before provisioning or touching any packaging VM.
  • Dual Execution Planes: Drives either Single-VM CLI (fpa-packager.exe + bundler.exe on an ephemeral packaging VM) or the Batch FPA Control Plane (Primary-Service.exe REST API on port 9075 / primary-client.exe).
  • Headless Smoke Testing & Manifest Handoff: Runs post-capture verification (Test-FlexAppPackage.ps1) and emits validated liquidware-ninja-flexapp-package/v1 manifests ready for avd-liquidware to register as AVD App Attach packages.

Public Reference Material in liquidware-ninja

While the flexapp-factory automation engine remains private, the candidate scoring rules (Test-LwFlexAppCandidate), manifest builder (New-LwFlexAppManifest), conflict detector (Get-LwAssignmentConflict), and packaging patterns are open-source in liquidware-ninja:

FlexApp Packaging & Delivery KB PowerShell Candidate & Manifest Functions Field Note: Operator-Registered App Attach