代码之家  ›  专栏  ›  技术社区  ›  Akrion

在ClickOnce更新之间保留用户创建的文件?

  •  3
  • Akrion  · 技术社区  · 15 年前

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

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

    最终结果是,再次创建了文件夹x、y和z(并且是空的),并且用户看不到由他创建的前一个文件。

    如何从版本传播文件,并确保第一次安装应用程序时,将自动创建文件夹x、y和z?

    1 回复  |  直到 6 年前
        1
  •  4
  •   Richard Dunlap    15 年前

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

    我可以想到两种解决方案:

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

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

      • 文件夹在卸载/重新安装过程中会一直存在,这在处理损坏的ClickOnce缓存时有时是必要的(比几年前频率更低,但仍然是一个偶然的问题)。

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

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