UWP 应用无法在使用 StartupTask API 登录时启动

UWP app fails to start on login using the StartupTask APIs

NOTE: I've already looked at related question, this is not a duplicate

我正在开发一个也使用 Desktop Bridge 的 UWP 应用程序(应用程序包包含 UWP 应用程序和一个 WinForms 组件),并且我正在尝试添加自动启动功能,但到目前为止没有成功。

这是我所做的:

此时没有任何反应,除了登录后鼠标指针显示加载环半秒。打开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
[...]

我不确定我在这里做错了什么,我已经一步步按照文档进行操作,我确实看到任务管理器中列出了该应用程序,但它就是无法以这种方式启动。

任何帮助将不胜感激,在此先感谢!

编辑:问题似乎与桌面桥功能有关。我有一个 UWP 应用程序和一个打包项目,并且我已将启动任务添加到两个 .appxmanifest 文件(具有不同的 ID)。我这样做是因为我使用打包项目创建 x86/x64 构建,并使用 UWP 项目直接创建 ARM/ARM64 构建。

如果我只部署 UWP 应用程序(独立的,没有包)并启用启动任务,应用程序运行正常。但是,如果我部署打包项目并启用该启动任务,启动将失败。在这两种情况下,我确实在任务管理器中看到了启动任务。如前所述,当打包项目的启动任务失败时,我在事件查看器中看到了这些错误。

编辑 #2:使用 Desktop Bridge 应用程序进行了更多测试。似乎在启动失败后,Windows 事件记录器会在每次尝试时再列出两个错误。一个是前面提到的"Application Error"类的错误,一个是"AppModel-Runtime"类的错误,信息如下:

Failed with 0x490 modifying AppModel Runtime status for package for user (current status = 0x0, desired status = 0x20).

编辑 #3:根据要求,这里是打包项目的 .appxmanifest file。请注意,如前所述,我尝试使用 desktop 命名空间和较新的 uap5 命名空间来添加启动任务。同样,在这两种情况下,我都可以检索任务并提示用户启用它,我确实看到它列在任务管理器中,但应用程序仍然无法启动并出现常见错误。

在您的 appxmanifest 中设置 StartupTask 扩展时,请务必了解 Win32 组件与 UWP 组件的声明不同。这记录在这里: https://docs.microsoft.com/en-us/uwp/api/Windows.ApplicationModel.StartupTask

UWP 组件:

<Package xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5" ...>
...
<Applications>
    <Application ...>
        ...
        <Extensions>
          <uap5:Extension Category="windows.startupTask">
            <uap5:StartupTask
              TaskId="MyStartupId"
              Enabled="false"
              DisplayName="Test startup" />
          </uap5:Extension>
      </Extensions>
    </Application>
</Applications>

Win32 组件:

<Package xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5"...>
...
<Applications>
    <Application ...>
        ...
        <Extensions>
          <uap5:Extension
            Category="windows.startupTask"
            Executable="MyDesktopBridgeApp.exe"
            EntryPoint="Windows.FullTrustApplication">
            <uap5:StartupTask
              TaskId="MyStartupId"
              Enabled="false"
              DisplayName="My Desktop Bridge App" />
          </uap5:Extension>
        </Extensions>
    </Application>
</Applications>