开发Windows应用商店应用期间的本地文件存储

时间:2015-05-29 15:49:59

标签: visual-studio-2013 windows-store-apps

所以我开始使用Windows应用商店应用。这也是我第一次使用Visual Studio。 Windows 8.1也是如此:P

我试图弄清楚本项目开发阶段本地文件存储的工作原理。我理解appdata目录和应用程序安装目录在应用程序发布并安装在客户端PC上后如何与应用程序交互的概念。 This SO回答很好地概述了它应该如何工作。但是,我无法弄清楚如果应用程序没有安装且在任何appdata目录中没有专用文件夹,在开发过程中我应该如何使用这些概念。

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:2)

文件在哪里?

正如@Chuck Walbourn所说,你的应用程序应该创建AppData文件的所有初始版本以及它们不存在时所需的子目录。

通常它位于C:\Users\UserName\AppData\local\packages\EncryptedNameLinkedToYourApplication

为了确保它确实存在,请将此行添加到您的代码中,并确保您的应用程序执行它:

Dim folder = ApplicationData.Current.LocalFolder

使用调试

然后,您可以执行断点(点击新添加的代码行左侧的灰色边距)。

触发断点后,将鼠标悬停在folder上,会出现一个弹出窗口。在弹出窗口中,您可以访问path属性,该属性将为您提供计算机上本地文件的完整路径。

然后你知道前面提到的“EncryptedNameLinkedToYourApplication”是什么

使用断点太懒了?

然后,在您的应用中,添加1 button和1 textbox。单击该按钮,您可以添加以下代码:

Dim folder = ApplicationData.Current.LocalFolder
TextBoxTest.Text = folder.Path

您的文本框现在填充了本地文件的路径,包括加密的应用程序名称

答案 1 :(得分:1)

在构建和调试Windows应用商店应用时,Visual Studio的部署正在安装应用并运行它,就好像它是通过商店部署或侧面加载一样。

与用户帐户控制器一样,您的应用程序应创建AppData文件及其所需子目录的任何初始版本(如果它们不存在)。

请参阅File access and permissions (Windows Runtime apps)

编辑:对于Windows应用商店应用,您可以从Windows::Storage::ApplicationDataCurrent->LocalFolderCurrent->RoamingFolder或{{获取可以使用的目录的路径1}}属性。

对于Windows桌面应用,您使用的是Windows 2000 / XP Current->TemporaryFolder Win32 API或Windows Vista时代SHGetFolderPath COM API(具有更易于使用的包装器IKnownFolder)。 Dual-use Coding Techniques for Games帖子显示了编写这两个版本的一些示例。

SHGetKnownFolderPath

答案 2 :(得分:1)

正如其他人所指出的那样,应用程序将在本地安装,应用程序的数据将在开发过程中驻留在C:\Users\YourUserName\AppData\local\packages等常见位置。请查看Package.appxmanifest文件的“打包”选项卡以确定包裹系列名称,它可能会变得神秘莫测。它将是packages文件夹中的相应文件夹。

另外还有一件事。从.appx文件安装的应用程序(例如,通过商店或侧面加载到设备上)与Visual Studio在调试时将为您执行的安装类型之间存在差异。后者是所谓的“无包装”安装",作为应用程序包一部分的应用程序文件的布局略有不同,具有不同的含义。最重要的是,您将能够修改应用程序包中的文件内容,从.appx安装时,对于同一个应用程序将失败。此外,如果计算机上存在未打包的安装,您将无法安装应用程序的打包版本。 (当然,AppData文件夹中的文件在任何一种情况下的行为都相同。)