【问题标题】:How can I run a command in windows store app?如何在 Windows 商店应用程序中运行命令?
【发布时间】:2014-06-27 23:56:58
【问题描述】:

我需要从 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
            }
        }

【问题讨论】:

  • Windows 应用商店应用在沙盒中运行。我认为您将无法运行 java 命令
  • 我不能执行包含这个命令的批处理文件吗?

标签: windows-store-apps windows-8.1


【解决方案1】:

应用容器会阻止应用商店应用的这种行为。

首先,您试图通过您的软件包 InstalledLocation 文件夹获取一个 StorageFile,但这是行不通的。 InstalledLocation 是一个 StorageFolder,它的 GetFileAsync 仅在该直接文件夹中查找文件。这就是它返回文件未找到的原因。

采用任意路径的 API 是 Windows.Storage.StorageFolder.GetFileFromPathAsync。但是,您访问文件的能力受到应用容器的限制。默认情况下,您可以访问包文件夹或应用程序数据位置中的文件,或者如果您已在清单中声明访问权限,则可以访问各种媒体库,否则您必须通过文件选择器,以便用户知道您在做什么做并且可以同意。简而言之,这是您访问位于 c:\data 等位置的文件的唯一方法。您可以使用Association launching sample 的场景 1 和“Pick and Launch”按钮来玩这个。

如果您可以获得该访问权限,那么您将能够启动一个文件如果它不是被阻止的文件类型。与另一个应用程序关联的数据文件(如 .docx)工作正常,但出于明显的安全原因,可执行文件被完全阻止。您可以使用我上面链接的示例进行尝试——选择 .bat、.cmd、.exe、.msi 等,您会看到 LaunchFileAsync 失败。

另请注意,另一个启动器函数 LaunchUriAsync 也出于相同原因阻止 file:///。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 2015-07-07
    相关资源
    最近更新 更多