C# 找不到UWP LaunchFullTrustProcessForCurrentAppAsync-EXE文件

C# 找不到UWP LaunchFullTrustProcessForCurrentAppAsync-EXE文件,c#,uwp,C#,Uwp,我们正在创建一个仅用于侧面加载的UWP应用程序。 在各种情况下,此应用程序需要重新启动电脑(仅限于桌面),为此,我们打算使用LaunchFullTrustProcessForCurrentAppAsync()调用一个简单的外部EXE,该EXE使用Process.Start(“关机”)重新启动电脑 我们已经创建了名为RebootPC.EXE的EXE,它本身工作正常 我们现在将其包括在我们的UWP项目中: 首先,我们将桌面和重新映射名称空间添加到我们的项目中,并且我们还将重新映射添加到我们的Igno

我们正在创建一个仅用于侧面加载的UWP应用程序。 在各种情况下,此应用程序需要重新启动电脑(仅限于桌面),为此,我们打算使用LaunchFullTrustProcessForCurrentAppAsync()调用一个简单的外部EXE,该EXE使用Process.Start(“关机”)重新启动电脑

我们已经创建了名为RebootPC.EXE的EXE,它本身工作正常

我们现在将其包括在我们的UWP项目中:

首先,我们将桌面和重新映射名称空间添加到我们的项目中,并且我们还将重新映射添加到我们的IgnorableNamespaces中

xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10" 
     xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" 
     IgnorableNamespaces="uap mp uap5 rescap">
然后,我们修改扩展部分以包含EXE,我们知道不能将EXE放入项目根目录中,因为C#编译器将其删除,因此我们将其放入子文件夹(在本例中为\Assets)。我们还在解决方案资源管理器中将EXE的类型设置为“内容”和“始终复制”

<desktop:Extension Category="windows.fullTrustProcess" Executable="Assets\RebootPC.exe">
      <desktop:FullTrustProcess>
        <desktop:ParameterGroup GroupId="rebooter" Parameters=""/>
      </desktop:FullTrustProcess>
    </desktop:Extension>
当我们在VisualStudio中构建和运行项目时,它似乎工作正常,在预期的情况下,PC将按预期重新启动

当我们试图将其打包以便在其他PC上安装时,就会出现问题。我们使用Store->Create App Packages(请记住,此应用程序仅用于侧面加载)

该软件包的创建工作正常,我们可以毫无问题地将其安装到其他PC上。问题是,当我们运行应用程序并运行外部EXE以重新启动电脑时,会打开一个命令窗口,但会出现一个异常:“系统找不到c:\users……\Assets\RebootPC.EXE”

因此,即使打包没有错误,即使我们已将RebootPC.exe的属性设置为“Content”和“Copy always”,它也不是没有包含在包中,就是没有随应用程序一起安装

那么,有人知道我们如何检查它是否包含在包中吗?如果是的话,我们如何检查目标机器上是否安装了它以及它安装在何处?或者其他人有过这个问题并找到了解决方案吗

这让我们困惑了好几天,快把我们逼疯了

更新:我认为问题可能不是RebootPC.exe找不到,而是shutdown.exe-如果是这种情况,那么这是一个小男孩的错误!!! 不管怎样,我将对此进行排序,看看这是否解决了问题


我将保留问题的其余部分,因为它可能会为其他人提供有用的信息

,正如官方示例中提到的,exe文件必须保存在项目的Appx文件夹中

确保RebootPC.exe已复制到Appx文件夹- UWP\bin\x64\Release\AppX如果不重新生成或复制解决方案 手动


确保exe文件位于项目的appx文件夹中,它将正常工作*Project*/bin/x86/debug/Appx并将Executable=“Assets\RebootPC.exe”更改为Executable=“RebootPC.exe”。这为我解决了问题
<Capabilities>
<rescap:Capability Name="runFullTrust"/>
<Capability Name="internetClient" />
<DeviceCapability Name="bluetooth" />
<DeviceCapability Name="radios" />
if (ApiInformation.IsApiContractPresent("Windows.ApplicationModel.FullTrustAppContract", 1, 0))
            {
                try
                {
                    await Windows.ApplicationModel.FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();

                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);
                }

            }