【问题标题】:Preserving user created files between ClickOnce updates?在 ClickOnce 更新之间保留用户创建的文件?
【发布时间】:2018-12-09 06:56:33
【问题描述】:

我有一个 ClickOnce 应用程序,它安装在客户端计算机上后,第一次启动时会创建文件夹 X、Y 和 Z。

现在,当用户开始使用应用程序时,他/她会在这些文件夹中创建各种文件。稍后,应用程序的新版本可用,他/她将应用程序从版本 1.0.0.0 更新到 1.0.0.1。

最终结果是文件夹 X、Y 和 Z 被再次创建(并且是空的)并且用户看不到他之前创建的文件。

我们如何传播版本中的文件并保证第一次安装应用程序时会自动创建文件夹 X、Y 和 Z?

【问题讨论】:

    标签: clickonce


    【解决方案1】:

    我是否正确假设这是在应用程序的 DataDirectory 中创建的文件夹和文件的具体问题?

    我能想到两种解决方案:

    1. 更新后,DataDirectory 的内容会复制到新版本的 DataDirectory 中,并放在名为 .pre 的子文件夹中。您可以使用ApplicationDeployment.CurrentDeployment.IsFirstRun 以编程方式检查是否刚刚下载了更新,然后编写自己的迁移代码将相应文件夹从.pre 移动到父目录中。

    2. 另一个答案,也是我们使用过的答案,是完全绕过 ClickOnce DataDirectory 并在用户的应用程序数据目录中设置您自己的文件夹(请记住为该文件夹使用 .NET 别名)。这种方法的一个缺点是,如果您从“添加/删除程序”中卸载应用程序,文件夹将不会被自动卸载。几个优点是:

      • 在处理损坏的 ClickOnce 缓存时,有时需要卸载/重新安装这些文件夹(比几年前不那么频繁,但仍然是偶尔出现的问题)。

      • 文件夹跟随使用漫游配置文件的用户(我们的经验是,在漫游配置文件情况下,ClickOnce 目录未配置为漫游)。

      • 如果由于这些数据文件中的问题而不得不通过电话或电子邮件进行 IT 支持,则更容易找到这些文件夹。即使是 IT 人员也经常难以找到 ClickOnce 数据目录(它有一个隐藏的父目录),但大多数人可以在 Application Data 中轻松找到您公司的目录。 YMMV,如果您出于安全原因需要混淆这些文件的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-24
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多