How to launch a Desktop app from within a Metro app? RRS feed

  • Question

  • For example, I downloaded the "VS 2011 preview" web installer by Metro style IE, after this, I clicked "Run" and Metro style IE launched the Desktop style installer for me.

    The APIs that I found are LaunchDefaultProgram()/LaunchDefaultProgramForFile(). But by this two APIs, there must be related file types(.exe is not supported) or protocols.

    How can a Metro app launch a Desktop app directly just as Metro IE does ?

    Thank you.

    • Moved by Keith-Microsoft Support Thursday, September 22, 2011 1:58 PM (From:Windows Developer Preview: General OS questions )
    Thursday, September 22, 2011 5:09 AM


All replies

  • Metro IE is a special app.  You cannot invoke an executable from Metro style apps.
    Jeff Sanders (MSFT)
    Thursday, September 22, 2011 4:19 PM
  • what about imaging and such? Say you have a Metro UI image viewing app and when you click edit it launches Adobe Photoshop with the image. will this be possible? or how about sending an email through Outlook or your favorite email app?
    Thursday, September 22, 2011 6:18 PM
  • Which pretty much says that you won't be allowing 3rd party Metro-style browsers or file-managers or .. ?

    What is the point of having guidelines if MS' own apps break them (IE should not be a special app just by virtue of being IE)?


    best regards,
    Kalle Saunamäki
    • Marked as answer by Seff Lu Friday, September 23, 2011 5:45 AM
    • Unmarked as answer by Seff Lu Friday, September 23, 2011 5:46 AM
    Thursday, September 22, 2011 8:27 PM
  • I agree 100% with this: privileged shortcuts for "special apps" are always bad (and I don't care how much privileged is IE, it is still a Metro app).

    Wouldn't be possible to have a couple of new contracts for this? Two for Metro apps: a contract that will allow an application to be invoked programmatically with some parameters, and another contract to actually  launch such an app. A third contract would allow Metro apps to invoke desktop apps (similar to shell execute).

    The user will be in control anyway because he has to agree to the contracts declared in the app manifest. Come on guys.

    Saturday, September 24, 2011 10:50 AM
  • To play devil's advocate here... how does your metro app (deployed through the store independent of any desktop apps) know where (or even if) the desktop app is installed?  Even if you were able to launch a desktop app, other aspects of the sandbox would get in the way of doing so effectively

    Robert Levy
    Sunday, September 25, 2011 2:41 PM
  • That's a good point. I would think it has to be part of the contract which, perhaps, should also include the name (Guid or whatever) of the application (either Metro or Desktop) that it needs to launch in the manifest file so that it won't be able to call any app, just the one(s) declared.

    We are talking simple scenarios here, i.e.: I am in a picture browser Metro app and I want to launch my companion picture editor (which is a desktop application) by passing the path to a file in the user's picture library as a parameter.

    Metro applications are very focused and I see the need for many applications (especially LoB) to be able to launch a more complex UI.  

    Monday, September 26, 2011 3:00 AM
  • A special app? I'm presuming the next version of Office will include some sort of Metro app or apps (a tablet OS without, say, an email client, is going to look pretty lame).

    So let's say I'm in my new Metro version of Outlook and someone has sent me an email with a Word doc attached. What happens if I want to edit that doc?

    I see three options for how that could work:

    1. I have to save the doc somewhere and then launch the desktop version of Word to edit it (lame)

    2. MS are completely rewriting Word (and Excel, PowerPoint etc.) to run entirely in Metro (unlikely and very risky)

    3. Metro Outlook is able to launch desktop Word (sensible and the most likely option)

    Exactly how many 'special apps' do you think there are going to be, and how long do you expect to keep the existing developer community on board while they are locked out of basic API functionality like this?

    • Edited by n4blue Monday, October 3, 2011 2:50 PM
    Monday, October 3, 2011 2:46 PM
  • There is a sample that demonstrates this using file association. It saves an image and then invokes the file launching the associated application for the file type. This is how Outlook works now.
    Monday, October 3, 2011 4:06 PM
  • But how about LOB apps, that will be used within an enterprise that wants to create touch optimized apps. But there may be parts of the app that are still not Metro style. For these parts, there will be a need to provide a link to the desktop app.

    Thursday, March 29, 2012 5:21 PM
  • From your description it seems you should create a standard application that responds to touch.  You can have touch enabled applications in Windows 7 today and you could certainly create a UI optimized for touch.  In your sample case you presented if you have dependencies that require links and functionality to a desktop app, you would not gain anything by splitting this into a Metro style app with a desktop app supporting it in the background correct?


    Jeff Sanders (MSFT)

    Thursday, March 29, 2012 5:44 PM
  • making a proxy native application is the best way I could think of.

    The trick here is simple and basic
    1. Metro create a text file with some sort of command
    2. Proxy monitors the file changes
    3. Once changed, proxy reads that file and process it
    4. Then proxy executes the file needed to run.

    check here for more information and code sample


    Monday, July 16, 2012 5:37 PM