Share via

Open app from another app

StewartBW 1,905 Reputation points
2025-07-08T07:15:00.48+00:00

Hi experts

Working on 2 separate WinForms apps (.NET Framework 4.8 with VB) and going to msix bundle them to store.

Once they both are installed how can I run one of them from within the other one?

They are not associated with any file type, just need to open one of them.

How that can be done in .Net 4.8 WinForms app when running under store?

  • I already created the msix installer to test locally on my machine and both products are installed and working, I've seen this online:

Dim aumId = "Acme.BlahApp_5wekyb3d8bbwe!App"

Await Launcher.LaunchUriAsync(New Uri("shell:appsFolder{aumId}"))

But not sure how to get the other app's aumId, is this aumId the same for each app across all its versions? Seems the app version is included in it.

And it won't run in WinForms .NET 4.8 :(

Thanks in advance.

Developer technologies | Windows Forms

Answer accepted by question author

RLWA32 52,571 Reputation points
2025-07-11T09:08:04.8166667+00:00

For what its worth, I was playing around a while ago with launching a store app from a desktop process. Following minimal example will launch Calculator from a .Net Framework 4.8 desktop console application. I don't know if this is applicable in any way to your circumstance.

Module Module1

    Public Enum ActivateOptions
        None = &H0
        DesignMode = &H1
        NoErrorUI = &H2
        NoSplashScreen = &H4
    End Enum
    <ComImport, Guid("2e941141-7f97-4756-ba1d-9decde894a3d"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)>
    Public Interface IApplicationActivationManager
        Function ActivateApplication(appUserModelId As String, arguments As String, options As ActivateOptions, ByRef processId As UInt32) As Integer
        Function ActivateForFile(appUserModelId As String, itemArray As IntPtr, verb As String, ByRef processId As UInt32) As Integer
        Function ActivateForProtocol(appUserModelId As String, itemArray As IntPtr, ByRef processId As UInt32) As Integer
    End Interface

    Sub Main()
        Dim clsidActivationManager = New Guid("45BA127D-10A8-46EA-8AB7-56EA9078943C")
        Dim ta = Type.GetTypeFromCLSID(clsidActivationManager)
        Dim iAppMgr As IApplicationActivationManager = Activator.CreateInstance(ta)
        Dim pid As UInt32 = 0
        iAppMgr.ActivateApplication("Microsoft.WindowsCalculator_8wekyb3d8bbwe!App", "", ActivateOptions.None, pid)
        Console.WriteLine($"Calculator pid is {pid}")

    End Sub

End Module

Was this answer helpful?

2 people found this answer helpful.

1 additional answer

Sort by: Most helpful
  1. StewartBW 1,905 Reputation points
    2025-07-15T12:45:25.08+00:00

    @Anonymous

    Thanks but your code is blank! :)

    Was this answer helpful?

    0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.