0

我正在尝试开发一个应用程序,该应用程序使用启动器类从 Metro 应用程序启动常规 .exe 应用程序。MSDN在这里提供了一个示例,stackoverflow 示例在这里

问题是即使文件在那里,我的地铁也会出现“找不到文件”的错误。我也尝试将文件放在其他驱动器上,但问题仍然存在

这是我的代码示例

// Path to the file in the app package to launch
string imageFile = @"E:\App.exe"; 

var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(imageFile); 

/* 上面一行中的错误。它说找不到文件 文件名、目录名或卷标语法不正确。(来自 HRESULT 的异常:0x8007007B)*/

if (file != null)
{
    // Launch the retrieved file
    var success = await Windows.System.Launcher.LaunchFileAsync(file);

    if (success)
    {
        // File launched

    }
    else
    {
        // File launch failed
    }
}
else
{
    // Could not find file
}
4

1 回答 1

3

LaunchFileAsync 用于在其默认程序中启动文件。

http://msdn.microsoft.com/library/windows/apps/Hh701461

我不相信它会与 .exe 一起使用

正确的用法是这样的:

LaunchFileAsync("images\\picturesofcats.png"); 

然后,这会在您的默认图像查看器中打开一张猫的图片。

由于沙盒,这对于 .exe 不起作用,并且因为 .exe 没有默认开启程序。

有一些技巧可以解决这个问题,请参阅:Launching a Desktop Application with a Metro-style app

通常,您正在违反 Windows 8 的设计来执行此操作,因此您可能需要重新考虑您的方法。

于 2013-05-20T13:37:41.473 回答