【问题标题】:ClickOnce and IsolatedStorageClickOnce 和独立存储
【发布时间】:2008-10-14 17:08:07
【问题描述】:

Winform 应用程序在我们的 Intranet 中随 ClickOnce 一起发布。我们将个人对 GUI 的偏好存储在独立存储中。一切都很好:)

问题是当我们有一个新版本的应用程序时,我们发布......所有的偏好都丢失了!用户需要在每个版本上设置他们的偏好。

有没有办法冻结整个应用程序而不是版本的隔离?

【问题讨论】:

    标签: c# winforms .net-2.0 clickonce isolatedstorage


    【解决方案1】:

    您需要使用 application 范围的,而不是 domain 范围的隔离存储。这可以通过使用 IsolatedStorageFileStream 的 重载构造函数之一来完成。

    例子:

    using System.IO;
    using System.IO.IsolatedStorage;
    ...
    
    IsolatedStorageFile appScope = IsolatedStorageFile.GetUserStoreForApplication();    
    using(IsolatedStorageFileStream fs = new IsolatedStorageFileStream("data.dat", FileMode.OpenOrCreate, appScope))
    {
    ...
    

    但是,现在您将遇到此代码仅在通过 ClickOnce 启动应用程序时才有效的问题,因为这是应用程序范围的隔离存储唯一可用的时间。如果您不通过 ClickOnce 启动(例如通过 Visual Studio),GetUserStoreForApplication() 将引发异常。

    问题的解决方法是在尝试使用应用程序范围的隔离存储之前确保 AppDomain.CurrentDomain.ActivationContext 不为空。

    【讨论】:

    • 我会试试的。似乎是最好的答案。
    • 我在 VS 中运行,它不会引发任何错误。我接受您的回答,但尚未通过实际部署对其进行测试。如果它不起作用,我会在这里写回。谢谢
    • 或者您可以使用 System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed 了解应用程序是否使用 ClickOnce 部署,您可以使用 GetUserStoreForApplication()
    • 任何完整的源代码示例?使用“IsolatedStorageFileStream fs”变量的示例?
    【解决方案2】:

    我不久前正在开发 ClickOnce 应用程序并使用 Environment.GetFolderPath(ApplicationData) - 例如漫游应用程序数据文件夹,用于存储所有设置。工作正常,并在众多更新中幸存下来。只需使用您的应用名称或 CompanyName/AppName 或其他名称创建一个子目录,然后将所有内容存储在其中。

    【讨论】:

      【解决方案3】:

      其他答案的总结:

      IsolatedStorageFile isolatedStorage = IsolatedStorageFile.GetUserStoreForAssembly();//for visual studio
      if (System.Deployment.Application.ApplicationDeployment.IsNetwor‌​kDeployed)
      {
          isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();//for click once applications
      }
      

      【讨论】:

        【解决方案4】:

        您必须将用户设置的永久版本存储在更持久的存储(如数据库)中。如果可用,您的应用程序可以决定使用隔离存储。如果它不可用(因为更新版本),应用程序应该从数据库中获取设置并使用它来重新初始化隔离存储中的设置。如果设置更改,您应该更新这两个地方。除非有更新版本的应用,否则您的应用不必从 DB 获取设置。

        【讨论】:

        • 这是我最初的想法,但我很想知道它们是否可以解决:P
        • 您可以将设置文件存储在用户硬盘上的特定位置,但您必须使应用程序完全信任..
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-07
        • 2012-11-16
        相关资源
        最近更新 更多