【问题标题】:deployment of a windows 8 application部署 Windows 8 应用程序
【发布时间】:2012-08-09 10:05:45
【问题描述】:

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

找到一个新文件夹

C:\Users\someone\AppData\Local\Packages\xxxxx_xxxxxx

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

(1) 如何/在哪里部署/安装 win8 应用程序?

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

【问题讨论】:

    标签: c# windows-8 local-storage


    【解决方案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

    【讨论】:

    • 但我的问题是:Windows.Storage.ApplicationData.Current.LocalFolder 被删除时没有警告,当用户右键单击应用程序图标并选择卸载时。它不适合我的应用程序。我想要一个更安全的地方。
    • Metro 应用程序的设计不支持这种情况。隔离存储是您在不实现文件资源管理器的情况下对文件系统进行的唯一写入访问。如果您想在安装后保存此数据,则必须考虑将其增量同步到“云服务”并在重新安装时更新应用程序。
    【解决方案2】:

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

    2) 同样,在卸载时删除应用程序的本地数据文件夹是预期行为。否则,如果您通过商店部署了一个应用程序并且它开始出现异常并占用了您所有可用的存储空间,那么用户将没有简单的方法来删除该数据。但是,您关于没有警告的断言是不正确的。卸载弹出窗口明确显示“此应用及其相关信息将从这台 PC 中删除”

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 2016-01-23
      • 1970-01-01
      • 2012-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多