VBA – Launch A Windows Store App

Microsoft Store Icon

Because of my recent exploration of trying to automate MS Photos to open a specified image

it has made me learn a little about store apps and the way we can work with them, or at lease launch them.


Today, I thought I’d demonstrate a simple way we can provide the ability to launch such Store Apps with a single line of code. The one Procedure to rule them all!

Enum MSStoreAppName
    MSStoreAppName_Unset
    AvailableNetworks
    Calculator
    Calendar
    Camera
    Cast
    Chat
    Clock
    Cortana
    FeedbackHub
    GetHelp
    GrooveMusic
    Mail
    Maps
    MicrosoftEdge
    MicrosoftNews
    MicrosoftSolitaireCollection
    MicrosoftStore
    MicrosoftWhiteboard
    MoviesTV
    MSNWeather
    NotificationCenter
    Onenote
    Paint3D
    People
    PeopleSettings
    Photos
    Project
    Settings
    SnippingTool
    SnippingToolScreenSnip
    Tips
    WeatherBing
    WeatherMS
    WindowsSecurity
End Enum

'---------------------------------------------------------------------------------------
' Procedure : MSStoreApp_Launch
' Author    : Daniel Pineault, CARDA Consultants Inc.
' Website   : http://www.cardaconsultants.com
' Purpose   : Launch the specified MS Store App
' Copyright : The following is release as Attribution-ShareAlike 4.0 International
'             (CC BY-SA 4.0) - https://creativecommons.org/licenses/by-sa/4.0/
' Req'd Refs: Late Binding  -> none required
' Dependencies: MSStoreAppName Enum
'
' Input Variables:
' ~~~~~~~~~~~~~~~~
' lMSApp    : Enum specifying the App to launch
'
' Usage:
' ~~~~~~
' MSStoreApp_Launch Onenote
'
' MSStoreApp_Launch Calculator
'
' Revision History:
' Rev       Date(yyyy-mm-dd)        Description
' **************************************************************************************
' 1         2023-04-18              Initial Release
'---------------------------------------------------------------------------------------
Sub MSStoreApp_Launch(lMSApp As MSStoreAppName)
    On Error GoTo Error_Handler
    Dim sCmd                  As String

    Select Case lMSApp
        Case MSApp_Unset
        Case AvailableNetworks
            sCmd = "ms-availablenetworks:"
        Case Calculator
            sCmd = "calculator:"
        Case Calendar
            sCmd = "outlookcal:"
        Case Camera
            sCmd = "microsoft.windows.camera:"
        Case Cast
            sCmd = "ms-settings-connectabledevices:devicediscovery"
        Case Chat
            sCmd = "ms-chat"
        Case Clock
            sCmd = "ms-clock:"
        Case Cortana
            sCmd = "ms-cortana:"
        Case FeedbackHub
            sCmd = "feedback-hub:"
        Case GetHelp
            sCmd = "ms-contact-support:"
        Case GrooveMusic
            sCmd = "mswindowsmusic:"
        Case Mail
            sCmd = "outlookmail:"
        Case Maps
            sCmd = "bingmaps:"
        Case MicrosoftEdge
            sCmd = "microsoft-edge:"
        Case MicrosoftNews
            sCmd = "bingnews:"
        Case MicrosoftSolitaireCollection
            sCmd = "xboxliveapp-1297287741:"
        Case MicrosoftStore
            sCmd = "ms-windows-store:"
        Case MicrosoftWhiteboard
            sCmd = "ms-whiteboard-cmd:"
        Case MoviesTV
            sCmd = "mswindowsvideo:"
        Case MSNWeather
            sCmd = "msnweather:"
        Case NotificationCenter
            sCmd = "ms-actioncenter:"
        Case Onenote
            sCmd = "onenote:"
        Case Paint3D
            sCmd = "ms-paint:"
        Case People
            sCmd = "ms-people:"
        Case PeopleSettings
            sCmd = "ms-people:settings"
        Case Photos
            sCmd = "ms-photos:"
        Case Project
            sCmd = "ms-settings-displays-topology:projection"
        Case Settings
            sCmd = "ms-settings:"
        Case SnippingTool
            sCmd = "ms-ScreenSketch:"
        Case SnippingToolScreenSnip
            sCmd = "ms-screenclip:"
        Case Tips
            sCmd = "ms-get-started:"
        Case WeatherBing
            sCmd = "bingweather:"
        Case WeatherMS
            sCmd = "msnweather:"
        Case WindowsSecurity
            sCmd = "windowsdefender:"
    End Select

    If sCmd <> "" Then
        CreateObject("WScript.Shell").Run sCmd, 0, False
    End If

Error_Handler_Exit:
    On Error Resume Next
    Exit Sub

Error_Handler:
    MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _
           "Error Source: MSStoreApp_Launch" & vbCrLf & _
           "Error Number: " & Err.Number & vbCrLf & _
           "Error Description: " & Err.Description & _
           Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
           , vbOKOnly + vbCritical, "An Error has Occurred!"
    Resume Error_Handler_Exit
End Sub
Store Apps Do NOT Equate To Applications!
It is important to understand this is solely for launching Microsoft Store Apps, not applications you’ve installed otherwise. Furthermore, there can exist both on a system. For instance, there is the Edge Application as well as the Edge Store App. They are 2 distinct things!

It is a hard concept to understand, but Microsoft has 2 distinct types of applications now, and the above is for interacting with the Store Apps.

 

More Apps You Say

Note
The supplied Enum is not 100% complete as there are even more Store Apps that you can automate in this manner.

  • Facebook => fb:
  • Twitter => twitter:

So just because I haven’t included it above does not mean it isn’t available! Google is your friend to extend things even further.

Using PowerShell, I extracted a listing from my PC of the installed Store Apps should this help you expand upon my sample even further.

Get-AppXPackage -AllUsers | Format-Table #Basic list of installed Store Apps

My PC is a base install as I don’t install or use Store App (at least not knowingly!). So if it is in the listing below, there is a good chance it is available on any Windows 10 machine and thus safe to use.

Package         								Available Protocols
------------------------------------------------------------------------------------------------
king.com.CandyCrushFriends 						fb1726560560955678, fb1811564719060444, myling
king.com.CandyCrushSaga 						fb467854729958013, fb347882848562911, candycrushsaga, fb210831918949520
MAGIX.MusicMakerJam 							com-magix-mmjam
Microsoft.549981C3F5F10 						ms-cortana2
Microsoft.AAD.BrokerPlugin 						ms-aad-brokerplugin
Microsoft.BingNews 								msnnews, bingnews, msnews
Microsoft.BingTranslator 						translatorflight
Microsoft.BingWeather 							bingweather, msnweather
Microsoft.DesktopAppInstaller 					ms-appinstaller
Microsoft.ECApp 								ms-eyecontrolspeech
Microsoft.GetHelp 								ms-contact-support
Microsoft.Getstarted 							ms-get-started
Microsoft.Messaging 							sms, ms-chat
Microsoft.Microsoft3DViewer 					com.microsoft.3dviewer, armodelviewing
Microsoft.MicrosoftEdge 						microsoft-edge-holographic, ms-xbl-3d8b930f, http, microsoft-edge...
Microsoft.MicrosoftJigsaw 						xboxliveapp-1297292166
Microsoft.MicrosoftMahjong 						xboxliveapp-1297290225
Microsoft.MicrosoftMinesweeper 					xboxliveapp-1297290226
Microsoft.MicrosoftSolitaireCollection 			microsoftsolitairecollection, xboxliveapp-1297287741
Microsoft.MicrosoftSudoku 						xboxliveapp-1297292189
Microsoft.MixedReality.Portal 					ms-holographicfirstrun
Microsoft.MSPaint 								ms-paint
Microsoft.Office.OneNote 						onenote, onenote-cmd
Microsoft.OneConnect 							ms-mobileplans
Microsoft.People 								ms-people, tel
Microsoft.Print3D 								com.microsoft.print3d
Microsoft.RemoteDesktop 						ms-rd  
Microsoft.ScreenSketch 							ms-screensketch
Microsoft.StorePurchaseApp 						ms-xbet-survey
Microsoft.Studios.Wordament 					xboxliveapp-534004979
Microsoft.Windows.Apprep.ChxApp 				ms-apprep
Microsoft.Windows.CloudExperienceHost 			ms-device-enrollment, ms-cxh
Microsoft.Windows.OOBENetworkCaptivePortal 		ms-oobenetwork
Microsoft.Windows.OOBENetworkConnectionFlow 	ms-oobenetwork
Microsoft.Windows.ParentalControls 				ms-wpc 
Microsoft.Windows.Photos 						ms-wcrv, ms-wpdrmv, ms-photos, microsoft.windows.photos.crop...
Microsoft.Windows.Search 						ms-search, ms-newsandinterests
Microsoft.Windows.SecHealthUI 					windowsdefender
Microsoft.Windows.ShellExperienceHost 			ms-penworkspace, ms-insights, ms-meetnowflyout, ms-actioncenter
Microsoft.Windows.XGpuEjectDialog 				ms-xgpueject
Microsoft.WindowsAlarms 						ms-clock
Microsoft.WindowsCalculator 					calculator, ms-calculator
Microsoft.WindowsCamera 						microsoft.windows.camera, microsoft.windows.camera.picker, microsoft.windows.camera.multipicker
microsoft.windowscommunicationsapps 			outlookcal, ms-unistore-email, mailto, outlookmail...
Microsoft.WindowsFeedbackHub 					windows-feedback, feedback-hub, insiderhub
Microsoft.WindowsMaps 							bingmaps, ms-walk-to, ms-drive-to, ms-default-location
Microsoft.WindowsStore 							ms-windows-store, zune, microsoftvideo, ms-windows-store2
Microsoft.Xbox.TCUI 							xbox-tcui
Microsoft.XboxApp 								xbox-gamehub, xbox-settings, xbox-profile, xbox-lfg...
Microsoft.XboxGameCallableUI 					xbox-tcui
Microsoft.XboxGameOverlay 						ms-gamebarservices
Microsoft.XboxGamingOverlay 					ms-gamebar, ms-gamingoverlay
Microsoft.XboxSpeechToTextOverlay 				ms-sttoverlay
Microsoft.ZuneMusic 							mswindowsmusic
Microsoft.ZuneVideo 							mswindowsvideo
MicrosoftWindows.Client.CBS 					ms-inputapp, ms-screenclip
windows.immersivecontrolpanel 					ms-settings
Windows.PrintDialog 							ms-print-addprinter, ms-print-printjobs

This is a listing of App exposing protocols. So I have purposely omitted all the other Apps that do not provide a protocols to interact with them. So yes, not all App make themselves open to automation, but as you can see for yourself, a lot do.
 

What Else Can I Do With Store Apps?

The fact of the matter is it depends on the App and what the developers exposed. The above is the simplest and universal launching of an App, but some app allow for passing a file to load at the startup, or URL, a specific menu to open, … To know what is possible you’ll have to dig online and try to find support documentation which can be very difficult. What I have found, after finally cracking the nut, is that searching for a term like “ms-photos: uri”, so the name of the App and URI returns the best results. The key term is URI (once you know that searching becomes a lot easier)!

And you’ll get results like:

For instance, the ms-settings app allows passing a multitude of URIs to open a huge variety of menu/forms:

  • Apps – Startup apps => ms-settings:startupapps
  • Accounts – Email & app accounts => ms-settings:emailandaccounts
  • System – About => ms-settings:about
  • Time and language – Region => ms-settings:regionformatting
  • so on and so forth

Take a look at the following for a more complete listing of the available ms-settings URIs: