Почему .exe-файл современного приложения не запускается и выдает ошибку, касающуюся контейнера приложения?

Почему .exe-файл современного приложения не запускается и выдает ошибку, касающуюся контейнера приложения?

Внутри C:\Program Files\WindowsApplicationsпапки находятся файлы .exe для Modern Apps на моем ПК. Когда я дважды щелкаю по одному из них, всплывающее окно сообщает мне:

This application can run only in the context of an app container

Есть ли способ запустить современное приложение непосредственно из его .exe-файла, а не только с помощью его плитки?

Заранее спасибо!

PS: У меня установлена ​​техническая предварительная версия Windows 10.

решение1

До Windows 8 у вас могли быть «автономные» .exe-приложения. Установка в основном была направлена ​​на создание ссылок и ссылок, чтобы приложению было легче находить то, что ему нужно, и запускать его. Если бы все необходимое приложению предоставлялось самим приложением, оно могло бы работать без установки. Контейнер приложений — это концепция безопасности, введенная в Win 8. Без установки приложение имеет доступ к своим собственным папкам и мало к чему еще, включая большинство устройств. Приложение должно быть разработано для работы с контейнерами приложений, чтобы его можно было установить. Этосвязьсодержит хорошее описание концепции и того, как она работает.

Редактировать: Похоже, что для установленного приложения все ассоциации и разрешения привязаны к плитке, поэтому .exe-файл не может быть запущен напрямую.

решение2

Вы можете запустить современное приложение Windows из командной строки, используя команду оболочки explorer.exe, например:

explorer.exe shell:AppsFolder\<Package Name>_<Publisher ID>!<App ID>

Или через start, что рекомендуется, если вам необходимо передать аргументы:

start shell:AppsFolder\<Package Name>_<Publisher ID>!<App ID> arg1 arg2

Хитрость заключается в том, чтобы обнаружить имя пакета, идентификатор издателя и идентификатор приложения. Было бы неплохо, если бы вся эта информация была доступна в списке приложений в Microsoft Store, или в диспетчере задач, или в списке приложений в разделе «Параметры» -> «Приложения и функции». До сих пор я не нашел простого способа собрать эти три вида информации. Вот шаги, которые можно сделать с помощью диспетчера задач и проводника, скопированные измой пост в блоге.

  1. Откройте современное приложение как обычно: из меню «Пуск», панели задач и т. д.
  2. Запускаю диспетчер задач (я нажимаю правой кнопкой мыши на панели задач Windows и выбираю «Диспетчер задач»)
  3. Разверните список интересующего вас приложения, щелкните правой кнопкой мыши по дочернему элементу и выберите «Перейти к сведениям».
  4. Щелкните правой кнопкой мыши по выделенному исполняемому файлу и выберите «Открыть расположение файла».
  5. Имя каталога, который вы только что открыли, дает вам имя пакета и идентификатор издателя, если вы знаете, как их разобрать. Используя приложение Календарь в качестве примера, имя каталога, "microsoft.windowscommunicationsapps_16005.12827.20560.0_x64__8wekyb3d8bbwe", начинается с имени пакета ("microsoft.windowscommunicationsapps"), за которым следует информация о версии и платформе, которая вам для этого не нужна ("16005.12827.20560.0_x64"), а затем следует идентификатор издателя ("8wekyb3d8bbwe"). Запишите имя пакета и идентификатор издателя для дальнейшего использования.
  6. Откройте файл AppxManifest.xml в этом каталоге.
  7. В верхней части файла AppxManifest.xml вы найдете элемент Identity с атрибутом Name — убедитесь, что это значение соответствует имени пакета, которое мы уже получили из имени каталога.
  8. Найдите в файле AppxManifest.xml имя исполняемого файла, например, HxCalenderAppImm.exe, и вы найдете элемент XML, который выглядит следующим образом:
Это даст вам третью необходимую информацию: идентификатор приложения.

Теперь, когда вы собрали три необходимых нам фрагмента информации, вы можете создать команду для открытия приложения из командной строки.

  1. Ваша команда будет выглядеть следующим образом, заменив части тремя фрагментами информации, собранными выше:

    explorer.exe shell:AppsFolder\<Package Name>_<Publisher ID>!<App ID>

Продолжая пример приложения «Календарь» из пакета «Почта и календарь», вы бы ввели что-то вроде этого:

explorer.exe shell:AppsFolder\microsoft.windowscommunicationsapps_8wekyb3d8bbwe!microsoft.windowslive.calendar

Дорогая Microsoft: Пожалуйста, сделайте это проще!

решение3

Я считаю, что это возможно сейчас, по крайней мере, каким-то образом. Например, приложение "Windows Scan" можно превратить в ярлык, используя "Microsoft.WindowsScan_8wekyb3d8bbwe!App" в качестве цели.

Связанный контент