我想使用我的MAUI应用在它运行的平台上启动一个单独的后台服务。当MAUI应用本身不运行时,这个后台服务利用gRPC从服务器接收数据。我知道它高度依赖于平台,所以为了讨论起见,让我们假设我们只在Windows上做这个。
我的策略是将后台服务.exe包含在用于在计算机上安装应用程序的.MSIX中,只需将.exe添加到Platform/Windows文件夹中,以便它与应用程序一起部署。但是,我无法使用C#找到该.exe文件的位置。WPF有一个“特殊”文件夹,可以将我引导到任何系统上的Program Files文件夹,然后C#将该.exe作为Windows服务启动。我找不到MAUI的等效项,因为MAUI的FileSystem类不允许这样做。
也许我的策略不是正确的。如果不是这个,那么用MAUI应用程序部署后台服务的好策略是什么呢?
谢谢你!
1条答案
按热度按时间llew8vvj1#
首先:
我知道它高度依赖于平台,
是这样的,但是,令人惊讶的是......
可以添加在安装MSIX时也已安装的Windows服务。
首先,您需要在解决方案中添加一个项目,因为Maui应用程序在本机运行时会遇到很多问题。因此,假设您有另一个使用net6.0控制台应用程序模板的项目。然后添加一个main函数,如下所示:
确保将启动对象设置为
AppService.Program
现在,将添加的项目作为项目引用添加到MAUI项目中。
Maui要求所有添加的项目都是自包含的,因此您需要将其添加到AppService项目的csproj中。
现在,为了确保服务已安装,您需要向
Package.appxmanifest
添加一些说明。此文件位于Maui平台特定文件夹中。将命名空间添加到
Package
元素:将服务详细信息添加到
Application
元素:将所需的功能添加到
Capabilities
元素:就是这样。