试了一下appupdater,发现总是报mscorlib.XX.dll及其它DLL找不到. 网上找了一些文章,http://blog.joycode.com/percyboy/archive/2005/05/10/50636.aspx. 还是未能解决. 最后只好换一个updater组件. 找了一下,发现一个:
http://csautoupdater.sourceforge.net/
除了与appupdater差不多外,还支持zip压缩下载,对于比较大的客户端,还是很有用的. 几乎没看到有什么帮助文档. 下载来试了一下,发现使用很简单.
将autoupdater.dll添加到工程中, 然后将autoupdater.dll作为一个控件DLL添加到toolbox, 拖到form上,设置一下ConfigUrl 即可.
客户端目录结构如下:
AutoUpdateStarter.exe
AutoUpdateStarter.config
Main/ 存放客户端主文件及相关DLL, 可随意修改
服务器端:
UpdateVersion.xml
newversion.zip
其中xml内容如下:
<VersionConfig>
<AvailableVersion>1.2.0.0</AvailableVersion>
<AppFileURL>http://localhost/1.2.0.0.zip</AppFileURL>
</VersionConfig>
要注意的是zip文件打开即是客户端主程序,压缩时根目录不能是一个目录,,否则在客户下载解压后将在main目录下生成zip中的目录, 即生成类似的东西:main\1.2.0.0\XXX. 而这样会出错. 原因如下:
autoupdater找到下载的zip文件之后, 即download下来, 然后解压到AutoUpdateStarter.exe相同目录的update目录, 然后删除以前的main目录下的程序, 然后拷贝update目录下的内容到main目录,最后删除update目录.
如果解压的update目录下还有一个目录,而不是文件.则最后main目录下是一个目录,而没有可执行文件, 根据AutoUpdateStarter.config中的配置, 将找不到文件出错.
还有一点忘了说明, 需要CSharplib支持zip的解压.
这个组件与appupdater还有一个差别就是appupdater会有以前的版本保存在客户端目录,而此组件将只有一个版本, 所以在发布客户端时一定要注意兼容性和可靠性, 否则客户端当掉了想再升级就很麻烦了.
另外一个检测新版本发布的组件
http://www.codeproject.com/KB/dotnet/SmartAssembly.aspx