我需要从Windows应用商店运行命令吗?
命令是这样的:java -jar abc.jar
我该怎么做?
编辑:
我试过这个,但没有运气。它说找不到文件。
string exeFile = @"C:\DATA\start.bat";
var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(exeFile);
if (file != null)
{
// Set the option to show the picker
var options = new Windows.System.LauncherOptions();
options.DisplayApplicationPicker = true;
// Launch the retrieved file
bool success = await Windows.System.Launcher.LaunchFileAsync(file, options);
if (success)
{
// File launched
}
else
{
// File launch failed
}
}
答案 0 :(得分:1)
应用容器会阻止商店应用的此行为。
首先,您尝试通过包InstalledLocation文件夹获取StorageFile,这不起作用。 InstalledLocation是一个StorageFolder,其GetFileAsync仅在该直接文件夹中查找文件。这就是它找不到返回文件的原因。
采用任意路径的API是Windows.Storage.StorageFolder.GetFileFromPathAsync。但是,您访问文件的能力受到应用程序容器的限制。您可以默认访问包文件夹或应用程序数据位置中的文件,或者如果您已在清单中声明访问权限,则可以访问各种媒体库,但是您必须通过文件选择器以便用户知道您#39;重新做并且可以同意。简单地说,这是您在c:\ data之类的位置访问文件的唯一方法。你可以使用Association launching sample的场景1和"选择和启动"来玩这个。按钮。
如果您可以获得该访问权限,那么您将能够启动文件,如果它不是被阻止的文件类型。与另一个应用程序关联的数据文件(如.docx)工作得很好,但可执行文件完全被阻止,这应该是明显的安全原因。您可以使用我上面链接的示例尝试它 - 选择.bat,.cmd,.exe,。msi等,您将看到LaunchFileAsync失败。
另请注意,另一个启动器功能LaunchUriAsync也会因为同样的原因阻止file:///。