我正在尝试帮助将 .Net 服务移植到更现代的 .Net 版本(可能是 Core)并使用 MSIX 安装程序。该应用程序有几个由编译器生成的配置文件(在源代码中它们是 app.config,但编译后它们变成 *.exe.xml),它们安装在二进制文件旁边的 Program File 中,还有一个 GUI 帮助应用程序和应用程序本身可以修改它们以改变服务行为(端口、ip、tls 证书等)。
不允许在 C:\Program Files\WindowsApps\package_name 下写入。不允许在 C:\Program Files\WindowsApps\package_name 下写入。
我面临的问题是 MSIX 安装程序使其无法写入其沙盒版本的 Program Files 中的文件(见上文)。这意味着无法配置此应用程序,因此我不仅要弄清楚如何使应用程序再次可配置,还要弄清楚 windows想要如何处理应用程序配置。
现在似乎有两种通用方法可以做到这一点:
- 将配置数据写入服务帐户的 AppData/local 文件夹
- 尝试模仿
/etc/Myservice
另一个文件夹中的行为。(意味着一个本地系统范围的目录,其中包含服务的配置数据)
如果您建议 #1,请回答以下附加问题:
- 如何将应用程序配置文件移动到用户配置文件目录
- 具有普通帐户的管理员如何使用提到的 GUI 帮助应用程序修改服务帐户的 AppData 文件夹中的配置文件?(他们是否需要启用对服务帐户的桌面访问权限、登录并运行 GUI)?
如果您建议#2:
- 您会建议该目录存在于哪里(特别是 MSIX 允许它在哪里)?
- 我如何告诉 .Net 应用程序文件不在它旁边?我可以只使用 AppData.CurrentDomain.SetData 吗?