ClickOnce使用体会[转载]

  原文出自:http://www.cnblogs.com/dajianshi/archive/2007/08/31/877065.html

 使用ClickOnce的发布方式,远没有想象中好用。

 一、ClickOnce的几个缺点:

 1. 没有独立的项目类型。

   在“安装和部署”中没有这个项目类型,所以不能单见一个项目,只能在项目属性页的“发布”选项卡中使用,或者在项目节点的邮件菜单中直接启用向导使用。使用起来很不习惯。

   2. 可控制性太差。

   尤其是包含的文件的下载状态,只有下载或不下载(需要时可以在程序中下载)。而且下载后的目录位置由FrameWork控制(在当前用户的目录中新添加了一个Apps目录Documents and Settings\Administrator\Local Setting\Apps),目录名是一大串,而且很多个目录,让人摸不着头脑,不知道这些目录的作用。

   3. 数据文件的位置很离奇。

   如果程序中包含数据库文件,并且设置类型为数据文件,那么用户安装后的数据库文件被放到和程序不同的另外一个目录中,所以一定要注意这点。这将造成程序的不同分发方式,数据目录的位置是不同的,感觉很别扭。

   4. 数据文件的分发策略。

   在ClickOnce的发布程序组选项中,有“数据文件”这一类型,可是我觉得微软的分发策略有问题,除了“自动将老版本的数据文件复制到新版本程序的数据目录中”这一特性外,其他的设定和别的文件类型一样,也就是说,如果在发布版本中的数据文件有变化,那么会自动下载并覆盖用户使用的数据库文件,这对于涉及用户输入的程序来说简直是不能接受的!

   5. 发布的程序竟然不压缩!

   这是我认为的ClickOnce发布中的最大缺点,发布的程序文件竟然不能压缩,不能打包,这对于大的程序来说简直是灾难,尤其国内的网络这么差。另外,发布的文件是否添加“deploy”扩展名这个没用的设置竟然允许用户选择,简直很可笑,如果不加扩展名只会造成有些特说的文件类型不能下载!

  

  二、总结的注意事项和小技巧

  1. 数据库文件的目录。

  我想大多数的应用程序都是离不开数据库的,对于.net的程序来说,Access的MDB或者SqlExpress数据库是我的选择。现在发现在Winform程序中,尤其是要使用ClickOnce发布方式,你的数据目录千万不能叫做“App_Data”,这是因为ClickOnce发布的文件不打包,目录结构也是原样设置的,而“App_Data”在IIS中是个犯忌的目录名字,目录下的文件不论什么权限都是不能下载的!

  2. 数据文件的分发。

  由于上面提到的ClickOnce分发数据文件的缺陷,我设想了两种解决方案:由于微软设置是如果是数据文件,那么只能输入“必需”的文件组,所以两种方案中数据库文件都不能设置为数据文件,而是将类型设置为“包括”。

  第一种方案,为数据库文件建立一个单独的组,这样自动安装的时候就不会下载安装数据文件,可以在程序启动后,判断是否第一次运行,由于deploy.IsFirstRun的值,每次升级后也是True,所以还要判断一下数据目录中是否有文件(因为第一次下载数据文件后并存放到数据目录后,以后升级程序后,Framework会自动将旧的数据文件拷贝到新的程序数据目录中)。如果需要下载,就调用ApplicationDeployment.CurrentDeployment.DownloadFileGroup("Database");下载数据文件,下载完成后移动到数据目录中。

  第二种方案,考虑有可能是通过光盘进行分发,所以是把数据文件设置为“必需”组,然后经过上面同样的判断,然后确定是把数据文件移动到数据目录还是删除。

  目前我采用了第二种方案,不过由于ClickOnce分发不能压缩打包,而数据库文件又比较大,所以每次升级都包括数据库文件,有点浪费。 

posted @ 2010-09-30 10:23  mutounannan  阅读(468)  评论(0编辑  收藏  举报