Как запустить внешний исполняемый файл win32 (и иметь возможность обновлять / изменять его) в приложении Windows UWP на Windows 10 ядре IOT? - PullRequest
0 голосов
/ 07 марта 2020

У меня есть Windows приложение UWP, которое будет работать только на Windows 10 ядре IOT. Я являюсь владельцем каждой машины, на которой он когда-либо будет работать (поэтому я могу вносить любые изменения в машину)

Приложение должно загрузить и запустить приложение Win32. Решение для запуска приложения Win32 заключается в использовании ProcessLauncher :: RunToCompletionAsyn c. Прежде чем добавить exe в список разрешений:

reg.exe ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\EmbeddedMode\ProcessLauncher" /v AllowedExecutableFilesList /t REG_MULTI_SZ /d "c:\PATH TO FILE"

Это работает, процесс приложения Win32 запускается правильно. Однако этот исполняемый файл загружается на основное устройство Windows 10 IOT с использованием Windows Device Portal. Проблема возникает, когда Windows приложению UWP необходимо обновить этот исполняемый файл Win32. Это работает следующим образом: иногда Windows приложение UWP загружает новый исполняемый файл из inte rnet, отменяет асинхронную задачу c (отключает процесс), возвращенную RunToCompletionAsyn c, и сохраняет новый файл по тому же пути к исполняемому файлу (из разрешения список). Проблема в том, что EXE не может работать. Кажется, что exe может работать, когда он сохранен на машине с помощью Windows Device Portal, но когда приложение UWP сохраняет это на самой машине, он не может работать.

Я нашел другое решение, я сделал посредник Программа Win32, теперь она работает следующим образом:

Windows Средство запуска приложений UWP запускает промежуточную программу Win32 из пути в списке разрешений (эта программа загружается с помощью Windows Device Portal один раз и никогда не изменяется). Программа-посредник Win32 позволяет загружать исполняемый файл из inte rnet и сохранять его на диске, а затем запускать этот исполняемый файл с помощью Win32 API CreateProcess. Работает, exe запускается. Однако проблема в том, что новый процесс не может сохранить какой-либо файл на диск (почему?).

Какое решение? Как загрузить исполняемый файл Win32 с помощью приложения Windows UWP и запустить его?

...