Как я могу запустить команду в приложении магазина Windows?

#windows-store-apps #windows-8.1

#windows-store-приложения #windows-8.1

Вопрос:

Мне нужно запустить команду из приложения магазина Windows?

команда выглядит примерно так : java -jar abc.jar

Как я могу это сделать?

Редактировать :

Я пробовал это, но безуспешно. Он говорит, что файл не найден.

        string exeFile = @"C:DATAstart.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
            }
        }
 

Комментарии:

1. Приложения магазина Windows запускаются в изолированной среде. Я не думаю, что вы сможете запустить java-команду

2. Могу ли я не выполнить командный файл, содержащий эту команду?

Ответ №1:

Контейнер приложений блокирует это поведение для приложений магазина.

Прежде всего, вы пытаетесь получить файл StorageFile через папку package InstalledLocation, которая не будет работать. InstalledLocation — это папка хранения, и ее GetFileAsync ищет файлы только в этой непосредственной папке. Вот почему он возвращает файл, который не найден.

API, который принимает произвольный путь, — это Windows.Хранение.StorageFolder.GetFileFromPathAsync. Однако ваша возможность доступа к файлам ограничена контейнером приложения. Вы можете получить доступ к файлам в папке пакета или расположениям данных приложения по умолчанию, или к различным медиа-библиотекам, если вы объявили доступ в манифесте, но в противном случае вам придется пройти через средство выбора файлов, чтобы пользователь знал, что вы делаете, и мог дать согласие. Проще говоря, это единственный способ получить доступ к файлу в таком месте, как c:data . Вы можете поиграть с этим, используя сценарий 1 примера запуска ассоциации и кнопку «Выбрать и запустить».

Если вы можете получить это разрешение на доступ, то в вы сможете запустить файл, если это не заблокированный тип файла. Файлы данных (например, .docx), связанные с другим приложением, работают просто отлично, но исполняемые файлы полностью заблокированы по очевидным соображениям безопасности. Вы можете попробовать это с помощью примера, на который я ссылался выше — выберите .bat, .cmd, .exe, .msi и т. Д., И вы увидите, что LaunchFileAsync завершается с ошибкой.

Также обратите внимание, что другая функция запуска, LaunchUriAsync, также блокирует file:/// по тем же причинам.