使用.exe创建并启动Windows Service,该.exe在稀疏包(.msix)上具有包标识以创建PushNoti



我是c#, .net核心世界的新手,正在为我们的需求寻找一个POC。

基本上它是一个用。net core创建的Windows服务(就像这里解释的:使用BackgroundService创建一个Windows服务)。我们的目标是发送推送通知(原始推送通知,在后台触发一些任务)到我们的Windows服务,据我所知,对于像我们的Windows服务项目这样的非打包应用程序(没有包标识)没有办法做到这一点。因为这是一个简单的控制台应用程序。

所以我发现我们可以授予包身份,这是创建推送通知通道的先决条件,通过这个文档:授予身份给非打包的桌面应用

但是这里有问题,当我添加包标识到我们的项目/.exe时,更准确地添加应用程序。使用msix节点到Windows服务的清单,则不可能启动Windows服务。一切都很好,我可以执行。exe,它也返回给我通道URI,但如果我创建它的Windows服务并尝试启动它,我得到以下错误:"5:访问被拒绝"。从应用程序中移除msix节点。新建后,就可以创建并启动Windows Service。但是如果没有包标识,则无法获得通道Uri。

是的,我们确实需要一个Windows Service,因为它符合我们的其他想法。

甚至有可能通过WNS向Windows服务发送推送通知?如果是这样,是我走对了路,错过了什么,还是有其他的方法?

在您的grant package进程中,您是否使用了一些相对路径?因为如果你使用一些相对路径,尝试从它所在的目录外运行exe文件将不起作用,因为所需的文件不会退出。

为了测试目的,如果您在包含您的exe文件的另一个目录中打开命令行并尝试运行它,它是否运行或失败?例如,如果您的文件是C:Program FilesTesttest.exe.如果您在C:Program Files打开命令行并执行。Test Test .exe,您会得到相同的错误吗?

最新更新