代码之家  ›  专栏  ›  技术社区  ›  Sergio0694

使用StartupTask API登录时,UWP应用程序无法启动

  •  1
  • Sergio0694  · 技术社区  · 7 年前

    注释 :我已经看过了 this 相关问题,这是 复制品

    我正在开发一个UWP应用程序,它也使用桌面网桥(该应用程序包包含UWP应用程序和WinForms组件),我正在尝试添加自动启动功能,但目前还没有成功。

    我是这样做的:

    • 一些研究。看着 前面提到的问题, this blog post from MS 以及在 official docs 也。

    • 通过编辑 Package.appxmanifest 添加文件 uap5 命名空间,然后 uap5:Extension 节点,在 Executable 财产,以及 Windows.FullTrustApplication EntryPoint 财产。

    • 奖金 为了以防万一,我还试图替换 UAP5 命名空间与 desktop ,因为一些代码示例使用了该示例。同样的结果,这个应用程序根本不会启动。
    • 包括获取启动任务并请求进行设置的API。
    • 部署了应用程序,继续使用这些API,获得确认窗口并点击“允许”。
    • 打开托管任务,再次检查“启动”选项卡下是否存在应用程序名称,旁边是否正确显示了“已启用”标签。
    • 注销并重新登录

    此时,除了在登录后半秒钟内显示加载环的鼠标指针外,什么都没有发生。打开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 :使用桌面网桥应用程序进行了更多测试。似乎在它无法启动之后,Windows事件记录器会在每次尝试中多收到两个错误。一个是前面提到的“应用程序错误”类别中的错误,另一个是“AppModel运行时”类别中的错误,信息如下:

    无法修改用户包的AppModel运行时状态(当前状态=0x0,所需状态=0x20)。

    编辑第3页 按要求,这是 .appxmanifest file 对于包装项目。注意,正如前面提到的,我尝试使用 桌面 命名空间以及更新的 UAP5 命名空间。同样,在这两种情况下,我都可以检索任务并提示用户启用它,我确实在任务管理器中看到了它,但是应用程序仍然无法以通常的错误开始。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Stefan Wick MSFT    7 年前

    在AppXManifest中设置StartupTask扩展时,必须了解Win32组件与UWP组件的声明不同。记录如下: https://docs.microsoft.com/en-us/uwp/api/Windows.ApplicationModel.StartupTask

    超宽带组件:

    <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>