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

时间:2009-08-13 13:54:34

标签: clickonce

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

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

最终结果是再次创建文件夹X,Y和Z(并且为空),并且用户没有看到由他创建的文件。

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

1 个答案:

答案 0 :(得分:4)

我是否正确认为这是在应用程序的DataDirectory中创建的文件夹和文件的问题?

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

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

  2. 我们使用的另一个答案是完全绕过ClickOnce DataDirectory并在用户的Application Data目录中设置您自己的文件夹(记住使用该文件夹的.NET别名)。此方法的缺点是,如果从“添加/删除程序”中卸载应用程序,则不会自动卸载文件夹。一些好处是:

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

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

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

相关问题