部署Windows 8应用程序

时间:2012-08-13 07:29:10

标签: c# windows-8 local-storage

当我在visual studio 2012 RC中编译我的应用程序时,我可以看到项目源文件夹中按预期生成bin\文件夹,其中有一个foo.exe,看起来像应用程序的条目。当我开始调试应用程序时,其图标将显示在开始屏幕上,我可以找到在

创建的新文件夹
  

C:\ Users \用户有人\应用程序数据\本地\软件包\ xxxxx_xxxxxx

但是我在这个文件夹中找不到foo.exe,即使我搜索了整个磁盘。似乎win8应用程序具有与旧Windows程序不同的安装/部署机制。我的问题是:

(1)部署/安装win8应用程序的方式/位置?

(2)我想使用\AppData\Local\Packages\xxxxx_xxxxxx\LocalState作为本地数据文件夹(在代码中等于ApplicationData.Current.LocalFolder),但是当右键单击开始屏幕图标并按“”时,整个文件夹将被删除卸载“,没有任何警告。有没有更好的地方存储本地数据?或者我需要SQLite?例如,我的应用程序在error.txt中写入所有崩溃消息,显然我在这种情况下不能使用sqlite,如果我将error.txt放在LocalState文件夹中,用户可能已经卸载了应用程序让他看看error.txt中的内容。另一种情况是:用户想要卸载应用程序,但保留其本地数据(文件)。显然,ApplicationData.Current.LocalFolder不是一个好的选择。

2 个答案:

答案 0 :(得分:4)

1)Windows 8软件包部署到c:\ Program Files \ windowsapps \,但默认情况下,您没有该文件夹的所有权,因此无法访问它。但这在很大程度上是无关紧要的。您永远不应该设计访问此文件夹。

2)同样,在卸载时删除应用程序的本地数据文件夹是预期的行为。否则,如果您通过商店部署了应用程序并且它开始行为不端并占用了所有可用存储空间,那么用户就没有简单的方法可以删除该数据。然而,你断言没有警告是不正确的。卸载弹出窗口清楚地说“此应用程序及其相关信息将从此PC中删除”

在某些情况下,将数据存储在漫游文件夹中可能是一个选项,但此文件夹并不适用于大量数据 - 它可以保存应用程序设置/配置选项以在设备之间漫游。您可以在开发期间将崩溃日志放在那里(如果它足够小),但无法保证在卸载应用程序之前它将同步到云。您最好的选择可能是使用Live SDK将数据同步到云端,但同样,您无法保证数据会立即写入云端。

答案 1 :(得分:1)

您应该使用独立存储将数据保存到Windows 8 Metro应用程序的文件系统中。您可以使用以下方法找到该位置:

Windows.Storage.ApplicationData.Current.LocalFolder.Path;

随着每个平台的架构发生变化,您将无法确定数据的存储位置,但此常量将确保它适用于所有应用程序。安装应用程序时,此文件夹也保持“安全”,并进行升级,因此您不应使用它来丢失数据。

使用SQLLite-net的示例可以在本页底部找到:http://timheuer.com/blog/archive/2012/05/20/using-sqlite-in-metro-style-app.aspx

相关问题