2009-08-13 48 views
3

我有一个ClickOnce应用程序,它安装在客户端机器上后,第一次启动时会创建文件夹X,Y和Z.在ClickOnce更新之间保留用户创建的文件?

现在,当用户开始使用他/她创建的应用程序这些文件夹中的各种文件。稍后可以使用新版本的应用程序,他/她将应用程序从版本1.0.0.0更新到1.0.0.1。最终结果是再次创建文件夹X,Y和Z(并且为空),并且用户看不到由他创建的文件。我们如何传播这些版本中的文件,并保证第一次安装应用程序时,将自动创建文件夹X,Y和Z?

回答

4

我正确地认为这是在应用程序的DataDirectory内创建的文件夹和文件的具体问题?

我能想到的两种解决方案:

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

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

    • 的文件夹坚持通过卸载/重新安装与损坏的ClickOnce缓存打交道时,有时需要(比前几年那么频繁,但仍偶尔的问题)。

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

    • 的文件夹更容易找到,如果不得不做过度的电话或电子邮件IT支持由于这些数据文件的问题。即使IT人员经常会遇到查找ClickOnce数据目录(其父目录已隐藏)的问题,但大多数人可以轻松地在Application Data中找到您公司的目录。 YMMV,如果您出于安全原因需要混淆这些文件的位置。

相关问题