刷新Windows Phone 7应用程序隔离存储中的资源

时间:2012-04-15 00:57:56

标签: windows-phone-7 isolatedstorage windows-phone

我有一个Windows Phone应用程序,它依赖于随应用程序打包的XML数据文件。当应用程序第一次在手机上运行时,我将文件加载到独立存储中。将文件加载到隔离存储后,应用程序将使用隔离的存储版数据。在我的应用程序的下一个版本(市场更新)中,XML文件将包含更多元素,如何在每次应用更新时更新数据文件(市场上的新版本)?

我以为我可以在隔离存储中更改文件名,但这会留下垃圾。我还可以在加载XML文件时检查异常,但还有其他更优雅的方法吗?每次我的应用程序运行时,我都不想检查隔离存储中的旧文件。

理想的情况是放置一段代码,当新版本的应用程序加载到手机上时会执行一次,有没有办法做到这一点?

3 个答案:

答案 0 :(得分:1)

据我所知,在安装/更新应用程序后的第一次运行时,没有“开箱即用”的事件会运行一次。

你必须标记自己的运行,就像你已经说明的那样(保存当前版本,比较每次运行应用程序的版本,看看应用程序是否已更新!)

答案 1 :(得分:0)

认为我现在明白你想要的东西。

  1. 将XML文件添加为资源。
  2. 使用GetResourceStream获取XML的内容。
  3. 请注意,资源的名称类似于/ DllName; component / Folder / ResourceName

答案 2 :(得分:0)

这是我做的:

在我的DataLayer类的构造函数方法中,我添加了以下代码:

private bool AppIsOld
{
    get
    {
        string storedVersion = GetStoredAppVersion(); //stored previously "seen" version
        string currentVersion = GetCurrentlyRunningAppVersion();
        return !(storedVersion == currentVersion);
    }
}


private string GetCurrentlyRunningAppVersion()
{
    var asm = Assembly.GetExecutingAssembly();
    var parts = asm.FullName.Split(',');
    return parts[1].Split('=')[1].ToString();
}

然后我运行以下检查:

if (AppIsOld)
    RefreshResources(); //do whatever to refresh resources

GetCurrentlyRunningAppVersion()功能的代码取自here

这个解决方案不是我想到的,因为它在每次调用类构造函数时运行,而我想要在版本更新时运行一次。