WinUI 3 访问 LocalState 文件夹
WinUI 3 Access LocalState Folder
我尝试将我的 UWP 应用程序迁移到 WinUI3。我使用 SQLite 进行持久化,到目前为止,数据库文件位于文件夹“AppData\Local[Package]\LocalState”中。但是新文件是在“AppData\Local[Package]\LocalCache\Local”下创建的。
创建路径的代码是两个应用程序之间的代码:
var databasePath =
Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
"moneyfox3.db");
当我在调试中查看由它生成的路径时,它类似于“C:\user[user]\AppData\Local”。所以运行时似乎创建了一个虚拟文件结构,因为应用程序是沙盒化的,这是有道理的。但是有没有办法改变创建虚拟文件结构的路径?或者有没有办法访问 LocalState 文件夹,以便我可以将 db 文件迁移过来?
Windows.Storage.ApplicationData.Current.LocalFolder.Path
属性 应该给你 LocalState 文件夹的绝对路径。
附带说明一下,MSIX 打包的桌面应用程序并不是真正的“沙盒”,但它会写入自己的虚拟注册表和应用程序数据文件夹,如文档 here and here.
中所述
答案在这里。 环境 class 包含 Windows 商店应用程序可以使用的本地应用程序数据的位置。
// This serializes the account's credentials.
var applicationDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
我尝试将我的 UWP 应用程序迁移到 WinUI3。我使用 SQLite 进行持久化,到目前为止,数据库文件位于文件夹“AppData\Local[Package]\LocalState”中。但是新文件是在“AppData\Local[Package]\LocalCache\Local”下创建的。 创建路径的代码是两个应用程序之间的代码:
var databasePath =
Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
"moneyfox3.db");
当我在调试中查看由它生成的路径时,它类似于“C:\user[user]\AppData\Local”。所以运行时似乎创建了一个虚拟文件结构,因为应用程序是沙盒化的,这是有道理的。但是有没有办法改变创建虚拟文件结构的路径?或者有没有办法访问 LocalState 文件夹,以便我可以将 db 文件迁移过来?
Windows.Storage.ApplicationData.Current.LocalFolder.Path
属性 应该给你 LocalState 文件夹的绝对路径。
附带说明一下,MSIX 打包的桌面应用程序并不是真正的“沙盒”,但它会写入自己的虚拟注册表和应用程序数据文件夹,如文档 here and here.
中所述答案在这里。 环境 class 包含 Windows 商店应用程序可以使用的本地应用程序数据的位置。
// This serializes the account's credentials.
var applicationDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);