使用C#的WebService实现客户端软件的在线升级功能(2)

本文介绍基于WebService的软件自动升级包制作方法。先回顾上篇通过异步调用WebService下载升级包并自动运行,接着说明制作可检测原安装目录的安装项目,通过搜索注册表实现。最后总结先检测版本,从数据库读值转byte[]保存文件,运行自动升级包覆盖原目录完成升级。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上篇说到通过异步调用WebService的方法将升级包已经下载到本地机,并通过编码的方式让它自动运行.

上篇中主要说的升级文件包文件是个MSI类型的安装包,虽然通过编码的方式让它自动运行,可以按照普通的部署来制作这个安装包,但我们应该考虑到既

然是升级包可能应该显示低版本的软件安装的目录,或者说整个升级的过程中,不需要用户再次选择安装目录了.

上篇的异步调用WebService下载升级包的文章在:http://blog.youkuaiyun.com/zerodj/archive/2005/10/17/508028.aspx
转载时请注明出处
本人的网站:itbaby.jss.cn
邮件:zerodj@162.com

如何制作一个可以检测到原来安装目录的安装项目呢,这就是宝宝(itbaby.jss.cn)所要讲的!
宝宝考虑使用搜索注册表的方式来完成这样一个功能.


前提条件:低版本的应用程序在制作安装包时,已经将安装目录保存到注册表中了
梢讲下安装部署添加注册表的设置,只是个例子:
 1.选择菜单"视图-编辑-注册表"
 2.在"目标计算上的注册表"-HKEY_LOCAL_MACHINE-Softwate-[Manfacturer]下添加一个HouseRes
 3.用MOUSE在HouseRes上点MOUSE的右键,选择"新建-字符串值"
 4.将名称为"新值 #1"改为InstallPath,就是属性表中的Name改成InstallPath
 5.InstallPath的值该为[TARGETDIR],就是属性表中的Value改成[TARGETDIR]
 6.别忘了将[Manfacturer]与HouseRes的AlwayCreate改为TRUE,
这样一来就完成了注册表的添加,有了上面的基础我们就可以往下看了

制作升级包的MSI文件
与普通的MSI制作一样的过程,先建安装部署项目,在应用程序文件夹中添加项目输出.好!现在开始要注意了!
 1.我们选择菜单"视图-编辑-启动条件"
 2.点"搜索目标计算机-添加注册表搜索"
 3.看属性窗口,将Property属性填入 SETUPPATH,这个是我们马上要引用的的安装目录
 4.选择Root属性,更改成vsdrrHKLM,注意,因为上面添加注册表时,我们使用是这个HKEY_LOCAL_MACHINE
 5.在RegKey属性中填入:SOFTWARE/[Manufacturer]/HouseRes,注意,因为添加时使用的是Softwate-[Manfacturer]-HouseRes
 6.在Value属性中填入:InstallPath,注意,因为添加时注册表项名称为InstallPath

 好了,这样一来,你就将搜索的HKEY_LOCAL_MACHINE/SOFTWARE/[Manufacturer]/HouseRes下的InstallPath的值映射到SETUPPATH中了
 还没有结束,我们还要在,"文件系统"的"应用程序文件夹"的DefaultLocation属性做修改,将它改为[SETUPPATH].

 这样才算结束了,然后生成MSI,测试下吧,甚至你都可以把"用户界面"下的"安装文件夹"对话框删除.可以避免用户去选择目录.


总结:先使用WebService的方法检测版本,当有高版本时,从数据库中读出值转化成byte[]类型,在由客户端将接受到byte[]值保存到文件,然后编码方式让

运行它自动运行.并退出整个程序,(宝宝在做升级程序时,是包含在主程序中的,没有另写)而自动运行的安装包就是按上面的方法制作,然后不显示安装文

件夹的对话框,将主项目输出的文件覆盖到已经安装过的目录下,就完成了整个自动升级的功能.

这样的方法有很多,读者可有选用别的方法来实现这样的功能.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值