microsoft / microsoft/WindowsAppSDK

Support "ms-app" URI schema to activate applications

Open
#236 6 comments 5 reactions 0 assignees View on GitHub
area-Lifecycle feature proposal
Dominant language
C++
Stars
4.7k
Forks
471
Avg merge
3d 13h
Merged PRs (30d)
28

Description

# Proposal: Support "ms-app" URI schema to activate applications

## Summary
Add support for a new "ms-app:" URI schema to support launching an app via URI, equivalent to how one can do it via [ActivateApplication()](https://docs.microsoft.com/windows/win32/api/shobjidl_core/nf-shobjidl_core-iapplicationactivationmanager-activateapplication).

The new "ms-app" URI scheme should support many of the options supported by [Windows.System.Launcher.LaunchUriAsync()](https://docs.microsoft.com/uwp/api/windows.system.launcher.launchuriasync?view=winrt-19041), e.g. LauncherOptions.FallbackUri.

## Rationale
Many mechanisms support executing a URI - ShellExecute(), Win-R, TaskManager File/Run, CMD.EXE command line, etc. But there's no support for launching an application via URI, with all the power and functionality of ActivateApplication

shellappsfolder: is a partial workaround but faces severe functional limitations. It's also not available on all Windows platforms; ms-app: should be.

Applications can declare their own custom protocol but ShellExecute("somescheme://foo/bar") has no way to common way to express AO_NOSPLASHSCREEN, LauncherOptions.FallbackUri, .DisplayApplicationPicker, TeatAsUntrusted or other options available through ActivateApplication and LaunchUriAsync.

## Scope
| Capability | Priority |
| :---------- | :------- |
| Support a new protocol for app activation (suggestion: "ms-app") | Must |
| Support all parameters available via ActivateApplication | Must |
| Support applicable options available via LauncherOptions | Should |

## Important Notes
Potential URI design for ms-app scheme:

```
ms-app://appid?options
```

where

* appid = Application User Model ID i.e. the application to activate
* options = ActivateApplication.options and LauncherOptions express as query parameters e.g. `ms-app://somepkgname_1234567890abc!App?designmode&splashscreen=0&errorui=0&TreatAsUntrusted=1`

## Open Questions
What LauncherOptions are important for an ms-app: protocol to support? e.g. FallbackUri

Contributor guide

No contributing guide indexed for this repository

Research direction

No implementation file or test is identified. Start by reviewing ActivateApplication(), Windows.System.Launcher.LaunchUriAsync(), and the proposed ms-app://appid?options shape, then determine the required activation and LauncherOptions behavior; done means the protocol scope and supported parameters are defined and implemented with coverage for the agreed cases.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
api, desktop, operating-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.