如何正确设置 AppExecutionAlias 以便程序可以从命令行启动?

m1l*_*l0s 4 appxmanifest win-universal-app windows-10 uwp desktop-bridge

此 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>
Run Code Online (Sandbox Code Playgroud)

但是当我尝试从命令行运行 PROGRAMNAME 时出现错误消息

"The system cannot find the file ....WindowsApps..."
Run Code Online (Sandbox Code Playgroud)

我可以转到那个 WindowsApps 目录,即使我看到了那个文件,运行它也会给我同样的错误。

我也试过

<uap3:Extension
    Category="windows.appExecutionAlias"
    Executable="$targetnametoken$.exe"
    EntryPoint="Windows.FullTrustApplication">
          <uap3:AppExecutionAlias>
            <desktop:ExecutionAlias Alias="PROGRAMNAME.exe" />
          </uap3:AppExecutionAlias>
        </uap3:Extension>
Run Code Online (Sandbox Code Playgroud)

命令行输出和目录内容截图

Ste*_*SFT 5

这里
需要注意和修正的几件事:1. 'Executable' 需要有实际的可执行路径。通常,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>  
Run Code Online (Sandbox Code Playgroud)

在这里分享我的工作测试项目:https :
//1drv.ms/u/s!AovTw​​KUMywTNv7oKzN9nznoZmK6XSw

  • 它有效,但我必须设置 `Executable="PROJNAME\EXENAME.exe"`。这是出乎意料的,因为 exe 直接位于 bin 目录中,并且我没有任何名为 PROJNAME 的文件夹(与其命名空间相同)。我猜测打包过程创建了该文件夹并将内容移动到那里 (2认同)