繁体   English   中英

UWP应用程序不会将文件夹复制到AppData文件夹

[英]UWP app does not copy folder to AppData folder

我有一个桌面应用程序,正在使用MSIX打包工具将其转换为UWP(通用Windows平台)应用程序。 我有我的应用程序的资源文件夹,该文件夹在安装msi时被复制到AppData / Roaming文件夹。
但是当我安装msix时,我的资源文件夹将被复制到以下路径:

C:\Program Files\WindowsApps\<XXXXXXXXXXXX>_2.2.1.0_x86__9r3t3jamfgx9p\**VFS\AppData**

资源文件夹中包含数据库文件,日志文件和一些重要的程序包,我需要从我的C#代码中访问这些程序包。

我需要实用地访问资源文件夹。 如何访问此路径? 还是将其复制到我可以访问的其他路径

我还检查了资源文件夹的以下路径,但它不存在。

C:\Users\akshay.verma\**AppData\Local\Packages**\<XXXXXXX>

请帮助我如何从C#代码访问资源文件夹。

C:\\ Program Files \\ WindowsApps \\ _2.2.1.0_x86__9r3t3jamfgx9p ** VFS \\ AppData **

上面的路径是应用程序的沙箱路径,您可以使用Windows Storage ApI访问上面的路径。 例如:

var LocaFolder =  ApplicationData.Current.LocalFolder;

如果资源文件存储在安装位置( C:\\Users\\akshay.verma\\**AppData\\Local\\Packages**\\<XXXXXXX> ),则可以使用以下内容访问安装文件夹。 然后使用GetFolderAsync方法获取子文件夹。

StorageFolder appInstalledFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
StorageFolder Resource = await appInstalledFolder.GetFolderAsync("Resource");
var files = await Resource.GetFilesAsync();

获取目标文件后,可以调用CopyAsync方法将文件复制到目标文件夹。 下面显示了如何复制文件夹。

public static async Task CopyFolderAsync(StorageFolder source, StorageFolder destinationContainer, string desiredName = null)
{
    StorageFolder destinationFolder = null;
        destinationFolder = await destinationContainer.CreateFolderAsync(
            desiredName ?? source.Name, CreationCollisionOption.ReplaceExisting);

    foreach (var file in await source.GetFilesAsync())
    {
        await file.CopyAsync(destinationFolder, file.Name, NameCollisionOption.ReplaceExisting);
    }
    foreach (var folder in await source.GetFoldersAsync())
    {
        await CopyFolderAsync(folder, destinationFolder);
    }
}

有关更多信息,请参考UWP文件访问权限

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM