You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinApp解决方案中多可执行文件打包MSIX后无法访问的问题求助

解决MSIX打包后主项目无法找到依赖exe的问题

方案1:调整MSIX打包项目的文件部署配置

  • 若解决方案中没有MSIX打包项目,先添加一个「Windows Application Packaging Project」
  • 在打包项目的Applications节点下,将project_a设为Entry Point
  • 右键点击打包项目的Packages节点 → 选择「Add → Project Output」,添加project_b的主输出及依赖文件
  • 选中添加的project_b.exe,在属性面板里把Package Action设为Content,并将Destination Subdirectory设为空(和project_a.exe同目录),打包后两个文件会部署到同一位置

方案2:通过应用包API合法获取依赖exe路径

不要直接硬编码或访问C:\ProgramFiles\WindowsApps目录,用系统API获取合法路径:

using Windows.ApplicationModel;
using System.IO;

// 获取应用包的安装根目录
var installDir = Package.Current.InstalledLocation.Path;
// 拼接project_b的路径(要和打包时的部署路径一致)
var projectBExePath = Path.Combine(installDir, "project_b.exe");

这种方式不会触发权限异常,因为是沙箱允许的合法访问路径。

方案3:在打包阶段替代生成后事件复制文件

普通项目的生成后事件在MSIX打包流程中不会生效,直接在打包项目里加后期构建步骤:

  1. 右键点击MSIX打包项目 → 「属性」→ 「构建事件」→ 「后期生成事件命令行」
  2. 添加复制命令,示例:
xcopy "$(SolutionDir)project_b\bin\$(Configuration)\project_b.exe" "$(SolutionDir)project_a\bin\$(Configuration)\" /Y

这样打包前会自动把project_b.exe复制到project_a的输出目录,打包时会被包含进去。

方案4:将project_b改为类库(业务允许的话)

如果project_b不需要独立运行,把它改成.NET类库,直接在project_a中引用,调用其功能即可,彻底规避进程启动的路径和权限问题。

内容的提问来源于stack exchange,提问作者Toby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 10:43:25