Uwp 如何正确设置AppExecutional,以便从命令行启动程序?

Uwp 如何正确设置AppExecutional,以便从命令行启动程序?,uwp,windows-10,win-universal-app,desktop-bridge,appxmanifest,Uwp,Windows 10,Win Universal App,Desktop Bridge,Appxmanifest,已设置此WPF应用程序的Package.appxmanifest <uap5:Extension Category="windows.appExecutionAlias" Executable="PROGRAMNAME.exe" EntryPoint="Windows.FullTrustApplication"> <uap5:AppExecutionAlias> <uap5:ExecutionAlias Alias

已设置此WPF应用程序的Package.appxmanifest

<uap5:Extension Category="windows.appExecutionAlias" Executable="PROGRAMNAME.exe"
    EntryPoint="Windows.FullTrustApplication">
          <uap5:AppExecutionAlias>
            <uap5:ExecutionAlias Alias="PROGRAMNAME.exe" />
          </uap5:AppExecutionAlias>
        </uap5:Extension>
我可以转到那个WindowsApps目录,即使我看到了那个文件,运行它也会出现同样的错误

我也试过了

<uap3:Extension
    Category="windows.appExecutionAlias"
    Executable="$targetnametoken$.exe"
    EntryPoint="Windows.FullTrustApplication">
          <uap3:AppExecutionAlias>
            <desktop:ExecutionAlias Alias="PROGRAMNAME.exe" />
          </uap3:AppExecutionAlias>
        </uap3:Extension>


这里有几件事需要注意和解决:
1. '“可执行文件”需要有实际的可执行文件路径。通常,EXE位于VS打包项目创建的子文件夹中
2.不幸的是,$targetnametoken$替换在扩展中无法工作。因此,您必须将实际的文件夹和文件名放在此处
3.“Alias”属性可以包含启动应用程序所需的任何名称,可以是实际的可执行文件名,也可以是您选择的别名

  <uap3:Extension
      Category="windows.appExecutionAlias"
      Executable="WpfApp4\WpfApp4.exe"
      EntryPoint="Windows.FullTrustApplication">
    <uap3:AppExecutionAlias>
      <desktop:ExecutionAlias Alias="foo.exe" />
    </uap3:AppExecutionAlias>
  </uap3:Extension>  

在此处共享我的工作测试项目:

正如您在屏幕截图中看到的,即使在WinApps中,也有programname.exe。在那里,我还看到了属于程序的目录,其中又有programname.exe,但在可执行文件中添加该路径仍然不起作用。即使我将cd放入该目录并尝试运行它,也会显示相同的错误。我尝试补充说,使用uap3和uap5扩展的完整路径没有成功。如果我输入错误的程序名,我会得到不同的错误。我还尝试添加实际的exe名称和别名。我在回答中共享了我的工作测试项目。请把它和你的比较一下。如果它仍然不起作用,请分享你的项目,显示问题,所以我们有一个完整的复制看看。否则我们只能推测。它起作用了,但我必须设置
Executable=“PROJNAME\EXENAME.exe”
。这是意外的,因为exe直接位于bin目录中,并且我没有任何名为PROJNAME的文件夹(与其命名空间相同)。我猜打包过程创建了文件夹并将内容移动到那里
  <uap3:Extension
      Category="windows.appExecutionAlias"
      Executable="WpfApp4\WpfApp4.exe"
      EntryPoint="Windows.FullTrustApplication">
    <uap3:AppExecutionAlias>
      <desktop:ExecutionAlias Alias="foo.exe" />
    </uap3:AppExecutionAlias>
  </uap3:Extension>