Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Разработка Win32-приложений для Microsoft Store: особенности и решения в Delphi

Delphi , ОС и Железо , Windows

Разработка приложений для Microsoft Store, в том числе и Win32-приложений, имеет свои особенности. Одной из ключевых проблем, с которой сталкиваются разработчики, является ограничение на запуск произвольных исполняемых файлов вне пакета приложения. Это ограничение введено для обеспечения безопасности и надежности приложений, доступных в магазине.

Описание проблемы

Разработчик, использующий Delphi для создания Win32-приложений, столкнулся с необходимостью запускакакой-то внешней программы, которая загружается в процессе работы его приложения. Однако, после попытки запуска этой программы через ShellExecute, была получена ошибка доступа (ACCESS DENIED). В рамках универсальных приложений Windows (UWP) по умолчанию такие действия запрещены.

Подтвержденное решение

Для универсальных приложений существует механизм FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync, который позволяет запускать Win32-приложения, зарегистрированные в манифесте пакета. Однако, для Delphi не существует прямого эквивалента этого метода, а его вызов из Delphi-приложения, упакованного в MSIX, не приводит к ожидаемому результату.

Альтернативное решение

В качестве альтернативы, можно использовать расширение UWP, известное как desktop extension, которое позволяет запускать исполняемые файлы на рабочем столе. Для этого достаточно получить путь к загруженному приложению и передать его методу Process.Start. Например:

Process.Start(Path.Combine(ApplicationData.Current.LocalFolder.Path, "CoreAppTest.exe"));

Более подробную информацию можно найти в блоге Стефана Нильсена, который рассматривает запуск удаленных приложений в контексте UWP с использованием desktop extension.

Пример кода на Object Pascal

uses
  Windows.ApplicationModel.Core;
  Windows.Storage;

var
  LocalFolderPath: string;
  AppPath: string;
begin
  LocalFolderPath := ApplicationData.Current.LocalFolder.Path;
  AppPath := Path.Combine(LocalFolderPath, 'DownloadedApp.exe');
  Process.Start(AppPath);
end;

Важные замечания

  • Необходимо зарегистрировать запускаемое Win32-приложение в манифесте пакета, если используется LaunchFullTrustProcessForCurrentAppAsync.
  • Использование desktop extension позволяет запускать приложения, не включенные в манифест пакета, но для этого потребуется более сложная настройка.
  • Важно учитывать ограничения безопасности и требования Microsoft Store при разработке приложений.

Заключение

Разработка Win32-приложений для Microsoft Store требует от разработчиков понимания особенностей работы UWP и использования предоставляемых инструментов для запуска внешних приложений. Delphi-разработчики могут столкнуться с ограничениями, вызванными отсутствием прямого аналога LaunchFullTrustProcessForCurrentAppAsync, но существуют альтернативные решения, такие как использование desktop extension.

Создано по материалам из источника по ссылке.

Разработка Win32-приложений для Microsoft Store через Delphi требует особого подхода для запуска внешных программ из-за ограничений безопасности UWP.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Windows ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 02:31:16/0.003291130065918/0