所以我开始使用Windows应用商店应用。这也是我第一次使用Visual Studio。 Windows 8.1也是如此:P
我试图弄清楚本项目开发阶段本地文件存储的工作原理。我理解appdata目录和应用程序安装目录在应用程序发布并安装在客户端PC上后如何与应用程序交互的概念。 This SO回答很好地概述了它应该如何工作。但是,我无法弄清楚如果应用程序没有安装且在任何appdata目录中没有专用文件夹,在开发过程中我应该如何使用这些概念。
非常感谢任何帮助!
答案 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::ApplicationData
和Current->LocalFolder
,Current->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
文件夹中的文件在任何一种情况下的行为都相同。)