上篇说到通过异步调用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[]值保存到文件,然后编码方式让
运行它自动运行.并退出整个程序,(宝宝在做升级程序时,是包含在主程序中的,没有另写)而自动运行的安装包就是按上面的方法制作,然后不显示安装文
件夹的对话框,将主项目输出的文件覆盖到已经安装过的目录下,就完成了整个自动升级的功能.
这样的方法有很多,读者可有选用别的方法来实现这样的功能.