microsoft / microsoft/WindowsAppSDK
Support "ms-app" URI schema to activate applications
- 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