Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

technicallyreal-promo

Shared "Our other apps" catalog and WinUI 3 page for Dynamic Solutions Canada's apps. Each Windows app bundles this as a git submodule; the page cross-promotes the publisher's Store and web apps and automatically hides the app it is running inside (matched by package family name).

App data (names, blurbs, destinations, icons) is generated by refresh.ps1 and committed as static assets. Consuming apps fetch the public manifest when the promo page opens, then persist the last successful manifest and icons in app-local storage. Bundled assets remain an offline first-run fallback, so the page renders even when GitHub is unavailable.

The public generated manifest is also available at https://raw.githubusercontent.com/RyanEwen/technicallyreal-promo/main/Assets/PromotedApps/apps.json.

Consuming (per app, one-time)

git submodule add https://github.com/RyanEwen/technicallyreal-promo external/promo

In the app's .csproj:

<Import Project="external\promo\PromotedApps.projitems" Label="Shared" />

Add a nav item (e.g. in NavigationView.FooterMenuItems) that navigates to TechnicallyReal.Promo.PromotedAppsPage.

CI note: checkouts need submodules, e.g. actions/checkout with submodules: true.

Updating the promoted apps

  1. Add/remove Store product IDs in ids.json and add their stable appId and platform links under appOverrides (optionally set a blurbOverrides entry to replace the auto-extracted first line of the Store description). Add web apps under externalApps, including a destination and a repository-owned icon URL.
  2. Run .\refresh.ps1 - it queries the Store's StoreEdgeFD endpoint and regenerates Assets/PromotedApps/apps.json plus the icon files.
  3. Review, commit, and push the diff. Existing app releases receive the update the next time their promo page opens; bump the submodule only when shared page code changes.

refresh.ps1 is the only thing that talks to the Store backend. The runtime only reads the committed GitHub manifest and its icons, so Store endpoint changes cannot break shipped apps.

Web and Android consumers

catalog.ts exports the public manifest URL, types, and parseCatalog validation. Each entry has a stable appId for hiding the current product across platforms, and links containing a platform (Android, Windows, or Web), HTTPS URL, and action label. Use HTTPS Microsoft Store listings on Android, rather than the Windows-only ms-windows-store: scheme. Keep the original destination, actionLabel, and packageFamilyName fields for shipped WinUI consumers.

Import the bundled JSON and icons for the first offline visit. Refresh the public manifest when the page opens, without credentials, validate before storing it, and retain the last successful catalog if the network or validation fails. Cache new remote icons for offline use. Show platform labels on every app and hide the consuming product by appId, rather than comparing display names.

The consumer's checkout and build context must include this submodule. Catalog metadata edits go in ids.json as well as the generated manifest so a later refresh.ps1 run preserves them.

appOrder in ids.json sets the shared display order across Store and web apps. Every app must appear exactly once. Consumers retain that order when hiding their own product. An optional name in appOverrides pins a publisher-approved display name instead of the current Store listing title; stable appId values remain unchanged when a product is renamed.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages