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

如何通过MSIX的Windows应用打包项目设置应用“起始于”文件夹?

问题解答

1. MSIX安装包能否设置快捷方式的“起始于”文件夹?

不行。MSIX是基于容器化的打包格式,和Wix、InnoSetup这类传统安装程序的快捷方式机制完全不同:

  • MSIX的快捷方式由包清单(Package.appxmanifest)定义,没有“起始于”这个配置项。
  • MSIX应用运行时的当前工作目录默认是系统管理的包安装目录(位于C:\Program Files\WindowsApps下的对应包文件夹),用户无法通过快捷方式手动指定工作目录。
  • 即便是用桌面桥接(Desktop Bridge)打包的传统Win32应用,MSIX也会限制工作目录的修改,以保证沙箱环境的安全性。

2. 运行时获取MSIX应用的安装路径(替代注册表查询)

不建议直接查询注册表获取安装路径,因为WindowsApps目录结构、包路径会随版本更新、系统配置变动,注册表项也可能发生变化。更可靠的方式是通过官方API或环境变量:

代码层面获取(推荐)

  • C#/.NET:使用Windows.ApplicationModel.Package类直接获取安装路径:
    using Windows.ApplicationModel;
    string installPath = Package.Current.InstalledLocation.Path;
    string fDatPath = Path.Combine(installPath, "f.dat");
    
  • C++:调用Win32 API GetCurrentPackageInfo获取路径:
    #include <windows.h>
    #include <appmodel.h>
    #include <wchar.h>
    
    wchar_t installPath[MAX_PATH];
    UINT32 pathLength = MAX_PATH;
    GetCurrentPackageInfo(0, &pathLength, nullptr, &pathLength, installPath);
    wcscat_s(installPath, L"\\f.dat");
    

环境变量/注册表(备选,不推荐)

  • 环境变量%ProgramFiles%\WindowsApps\<PackageFamilyName>可定位到包目录,但PackageFamilyName需要提前从包清单的Identity节点获取。
  • 注册表项HKLM\Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\<PackageFullName>下的Path值存储安装路径,但PackageFullName包含版本号,每次应用更新都会变化,维护成本高。

3. 终极解决方案

修改应用代码,不要依赖当前工作目录读取文件,而是通过上述方法主动获取安装路径,拼接f.dat的绝对路径进行读取。这是最稳定的方案,既适配MSIX环境,也能兼容传统安装场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:57:33