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

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

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

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

上篇的异步调用WebService下载升级包的文章在:http://blog.csdn.net/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[]值保存到文件,然后编码方式让

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

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

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


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# WebService 实现天气预报的一般步骤如下: 1. 获取天气数据源:可以从第三方天气API获取天气数据。 2. 创建 WebService 项目:在 Visual Studio 中创建一个 WebService 项目。 3. 定义 WebService:在 WebService 项目中定义一个 WebService,提供获取天气信息的方法。 4. 调用 API:在 WebService 的方法中调用天气 API 获取实时天气信息。 5. 返回结果:将获取到的天气信息返回给客户。 以下是一个简单的 C# WebService 实现天气预报的例子: ```csharp using System; using System.Web.Services; using System.Xml; namespace WeatherWebService { [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class WeatherService : System.Web.Services.WebService { [WebMethod] public string GetWeather(string city) { string url = "http://wthrcdn.etouch.cn/weather_mini?city=" + city; XmlDocument xml = new XmlDocument(); xml.Load(url); XmlNodeList xnList = xml.SelectNodes("/resp/forecast"); string result = ""; foreach (XmlNode xn in xnList) { result += xn.SelectSingleNode("date").InnerText + "\n"; result += xn.SelectSingleNode("high").InnerText + "\n"; result += xn.SelectSingleNode("low").InnerText + "\n"; result += xn.SelectSingleNode("type").InnerText + "\n"; result += "\n"; } return result; } } } ``` 在上面的例子中,我们定义了一个名为“GetWeather”的 WebService 方法,该方法接受一个城市名称作为参数,并返回该城市未来几天的天气预报信息。我们使用 XmlDocument 类从天气 API 获取 XML 数据,然后解析 XML 并返回结果给客户

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值