如何正确配置AppExecutionAlias实现WPF应用命令行启动?解决启动报错
我之前也碰到过一模一样的坑,给你几个具体的排查和解决步骤:
先确认包是否正确注册
打开PowerShell,执行命令:Get-AppxPackage *PROGRAMNAME*检查输出里的
InstallLocation是否正确指向你的包目录,Status是不是Ok。如果没找到包,说明部署有问题,试试重新注册:Add-AppxPackage -Register .\Package.appxmanifest(注意路径要指向你的manifest文件所在目录)
核对AppExecutionAlias的配置细节
首先确保Package根节点已经声明了所需的命名空间,少了这个配置根本不会生效:<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3" xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10" xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities">然后检查Extension节点的配置,推荐用uap3的写法,确保
Executable和Alias完全匹配你的exe文件名:<Extensions> <uap3:Extension Category="windows.appExecutionAlias" Executable="PROGRAMNAME.exe" EntryPoint="Windows.FullTrustApplication"> <uap3:AppExecutionAlias> <desktop:ExecutionAlias Alias="PROGRAMNAME.exe" /> </uap3:AppExecutionAlias> </uap3:Extension> </Extensions>这里的
Executable是相对于MSIX包根目录的路径,如果你的exe在子文件夹(比如bin/PROGRAMNAME.exe),一定要写完整路径。检查FullTrust权限是否声明
MSIX的全信任应用必须声明runFullTrust权限,否则别名也无法正常工作,在Capabilities节点里加上:<Capabilities> <rescap:Capability Name="runFullTrust" /> </Capabilities>清理旧部署,重新打包
有时候旧的包缓存会导致配置不生效,先在Windows设置里找到你的应用完全卸载,然后重新打包部署(比如用Visual Studio的部署功能,或者手动安装生成的MSIX包)。验证别名是否被正确创建
打开命令行执行:where PROGRAMNAME.exe如果能返回类似
C:\Program Files\WindowsApps\<你的包ID>\AppExecutionAliases\PROGRAMNAME.exe的路径,说明别名已经创建成功,这时候再运行应该就没问题了。如果找不到,说明配置还是有问题,回到前面的步骤核对。
另外注意:WindowsApps目录是系统保护目录,即使你能看到里面的exe,直接运行它会因为权限和沙箱问题报错,必须通过AppExecutionAlias创建的别名来启动。
内容的提问来源于stack exchange,提问作者m1l0s

