4

我为一些客户发布了 Silverlight 应用程序。我在发布更新时遇到问题。

我想当用户最初加载网页时,如果他们的应用程序存储比上次更新站点时更旧,那么就会发生这种情况。这将使我的应用程序工作。

所以,两个问题:

  • 如何检查用户存储的应用程序存储是否早于 Silverlight 站点的上次更新?

  • 如何删除站点的应用程序存储?

我试过打电话:

using( var store = IsolatedStorageFile.GetUserStoreForApplication() ) {
  store.Remove();
}
using( var store = IsolatedStorageFile.GetUserStoreForSite()) {
  store.Remove();
}

App.xaml.cs文件中,但这些似乎对显示的页面没有影响 - 应用程序存储未完全清除。

4

2 回答 2

4

•如何检查用户存储的应用程序存储是否早于 Silverlight 站点的上次更新?

此代码进入应用程序以检查您的 SL 应用程序是否存在并更新我不知道它是否有帮助,但如果您只想在更新时使用该 IsolatedStorageFile 做某事,它应该是您想要的:

Application.Current.CheckAndDownloadUpdateAsync();
Application.Current.CheckAndDownloadUpdateCompleted += new CheckAndDownloadUpdateCompletedEventHandler(Current_CheckAndDownloadUpdateCompleted);

private void Current_CheckAndDownloadUpdateCompleted(object sender, CheckAndDownloadUpdateCompletedEventArgs e)
{   
   if (e.UpdateAvailable) 
   { 

   } 
}

•如何删除站点的应用程序存储?

IsolatedStorageFile store  = IsolatedStorageFile.GetUserStoreForApplication();
if(store.FileExists(FileName))
{
  store.DeleteFile(FileName);
}
于 2012-09-22T01:34:27.760 回答
0

您可以将 xap 文件的文件创建日期写入 Silverlight 对象的 initParams。

<object id="xaml" data="data:application/x-silverlight-2," type="application/x-silverlight-2">
   <param name="initParams" value="<%= GetInitParams() %>" />

在文件后面的代码中,您编写如下内容:

protected string GetInitParams()
{
    string xappath = HttpContext.Current.Server.MapPath(@"~/ClientBin/YourXapFile.xap");
    DateTime xapCreationDate = System.IO.File.GetLastWriteTime(xappath);
    return string.Format("lastUpdateDate={0:d}, xapCreationDate);
}

在 Silverlight 客户端中,您可以将此日期与应用程序存储的上次更新进行比较。您可以使用对象GetLastWriteTime()上的方法找到上次更新的日期和时间。IsolatedStorageFile

然后比较这两个日期并Deletefile根据需要删除文件。

于 2012-09-23T17:38:43.880 回答