ПРИМЕЧАНИЕ. Я уже смотрел это связанный вопрос, это не дубликат
Я работаю над приложением UWP, которое также использует Desktop Bridge (пакет приложения содержит приложение UWP и компонент WinForms), и я пытаюсь добавить функцию автоматического запуска, но пока безуспешно.
Вот что я сделал:
Некоторые исследования. Посмотрел этот вопрос, упомянутый ранее, это сообщение в блоге от MS и на официальные документы.
В соответствии с документами отредактировал файл
Package.appxmanifest
, чтобы добавить пространство именuap5
, а затем узелuap5:Extension
в соответствии с инструкциями, установив мой файл app .exe в свойствеExecutable
иWindows.FullTrustApplication
в свойствеEntryPoint
.- Бонус: на всякий случай я также попытался заменить пространство имен
uap5
наdesktop
, поскольку в некоторых примерах кода оно использовалось. Тот же результат, приложение вообще не запускается. - Включены API для получения задачи запуска и запроса ее настройки.
- Развернул приложение, приступил к использованию этих API, получил окно подтверждения и нажал «разрешить».
- Открыл Task Managed и дважды проверил, есть ли имя приложения на вкладке «Запуск», а рядом с ним правильно отображается метка «Включено».
- Вышел из системы и вернулся
На этом этапе ничего не происходит, за исключением того, что указатель мыши показывает кольцо загрузки в течение полсекунды после входа в систему. Открыл средство просмотра событий Windows и обнаружил ошибку, указывающую на неудачный автоматический запуск приложения. Пытался снова несколько раз и, конечно же, каждый раз, когда приложение не запускалось, и в средстве просмотра событий выскакивала другая идентичная ошибка. Это информация об ошибке:
Application name: <my app>.exe, versione: 1.0.0.0, timestamp: 0x5a68410c
Module: KERNELBASE.dll, versione: 10.0.17134.407, timestamp: 0x99042cc0
Exception code: 0xe0434352
Offset: 0x000000000003a388
Process ID: 0x1c4c
Path: C:\Users\<my username>\Documents\GitHub\<my app>\<my app>.Package\bin\x64\Debug\AppX\<my app>.exe
Module path: C:\Windows\System32\KERNELBASE.dll
[...]
Я не уверен, что я здесь делаю неправильно, я шаг за шагом следил за документами, и я вижу приложение, указанное в диспетчере задач, но оно просто не запускается таким образом.
Любая помощь будет оценена, заранее спасибо! ????
ИЗМЕНИТЬ: похоже, проблема связана с функциональностью Desktop Bridge. У меня есть приложение UWP и проект упаковки, и я добавил задачу запуска в оба файла .appxmanifest
(с разными идентификаторами). Я делаю это, поскольку использую проект упаковки для создания сборок x86 / x64, а проект UWP - непосредственно для сборок ARM / ARM64.
Если я разверну только приложение UWP (автономное, без пакета) и включу задачу запуска, приложение будет работать нормально. Но если я разверну проект упаковки и включу эту задачу запуска, запуск завершится ошибкой. В обоих случаях я вижу задачу запуска в диспетчере задач. Как упоминалось ранее, при сбое задачи запуска для проекта упаковки я вижу эти ошибки в средстве просмотра событий.
РЕДАКТИРОВАТЬ №2: провел еще несколько тестов с приложением Desktop Bridge. Кажется, что после того, как он не запускается, регистратор событий Windows получает еще две ошибки, перечисленные там для каждой попытки. Одна из них - это ошибка в категории «Ошибка приложения», упомянутая ранее, а другая - ошибка в категории «AppModel-Runtime» со следующей информацией:
Ошибка 0x490 при изменении статуса среды выполнения AppModel для пакета для пользователя (текущий статус = 0x0, желаемый статус = 0x20).
ИЗМЕНИТЬ № 3: вот .appxmanifest
файл для упаковочный проект. Обратите внимание, что, как упоминалось ранее, я попытался добавить задачу запуска как с использованием пространства имен desktop
, так и более нового пространства имен uap5
. Опять же, в обоих случаях я могу получить задачу и предложить пользователю включить ее, и я вижу ее в диспетчере задач, но приложение по-прежнему не запускается с обычной ошибкой.
Package.appxmanifest
, надеюсь, он предоставит полезную информацию. Я всегда хочу сначала запустить приложение UWP, компонент Win32 - это всего лишь небольшая программа, которую я запускаю после завершения загрузки приложения с использованиемFullTrustProcessLauncher
API. Спасибо за вашу помощь! - person Sergio0694   schedule 19.11.2018.appxmanifest
файле, было неясно, может ли его вместо этого также использоваться в манифесте пакета. Вы можете записать это как ответ, если хотите, чтобы я пометил его как действительный! - person Sergio0694   schedule 19.11.2018