急!用VB怎样实现程序安装好后能在网上搜索新版本,然后下载更新。

解决方案 »

  1.   

    二.利用Ftp协议进行更新
    如果开发者和用户不在同一个局域网内,那么用上文的方法是行不通的,因为我们没有办法映射不在同一个局域网内的网络驱动器。不过我们可以利用Ftp协议来进行文件传输。有关Ftp协议如何进行文件的传输,不是本文讨论的重点,所以略去。本文只给出如何传输。
    首先要安装IIS(Internet Information Server),笔者使用的版本是5.0。打开IIS,然后在IIS的默认Ftp节点上单击右键,在弹出的菜单中选择新建->虚拟目录,在向导界面上单击按“下一步”按钮,给Ftp服务器取一个别名,这里取名为FileServer,单击“下一步”,选择编译好的程序程序所在的文件夹,单击“下一步”,以后都用IIS的默认值,直到完成。然后在默认Ftp节点上单击右键,在弹出菜单中选择属性,在“安全帐号”选项卡中,指定一个Ftp帐号,这个Ftp帐号是你Windows里面的一个帐号,这里假设是Update,密码123。这样就建好了我们的文件服务器。
    在vb中要进行Ftp的传输,可以使用Inet控件,该控件功能十分强大,而且使用也十分方便。在程序的窗体上加上Inet控件,把Inet的Protocol属性设置成2-icFtp,就可以利用Inet来进行Ftp传输了。下面给出代码
    With Inet1
       .URL = “FileServer”
       .UserName =”Update”
       .Password = “123”
       .Execute , "GET " & “My.exe ” & “ ” & App.path & “\” & “My.exe”’’copy到本地
    End With
    不过Ftp有个不方便之处在于,无法检查到Ftp服务器上文件的版本。为了解决这个问题,可以用一个文本文件来记录程序的版本,由于文本文件非常小,下载起来非常快,用户几乎感觉不到延迟,然后读取文本文件中的版本信息,再与本地程序比较是否是新版本,如果是,再下载新的版本,如果不是就不用下载。下面给出代码:
    dim fso as object
    dim txtFile as object
    dim strVersion as string
    With Inet1
       .URL = “FileServer”
       .UserName =”Update”
       .Password = “123”
       .Execute , "GET " & “MyVersion.txt ” & “ ” & App.path & “\” & “MyVersion.txt”’下载版本文件
    set fso=CreateObject("Scripting.FileSystemObject")
    set txtFile=fso.Opentextfile(app.path & “\” & “MyVersion.txt”)
    strversion=txtFile.readline  ‘’读取版本信息
    txtFile.close
    set txtFile=Nonthing
    set fso=nothing

    If Len(strVersion) = 0 Then Exit Function ''没有就退出去
        arrVer = Split(strVersion, ".")
        If App.Major < arrVer(0) Then
                blnNeedUPdate = True
        ElseIf App.Minor < arrVer(1) Then
                blnNeedUPdate = True
        ElseIf App.Revision < arrVer(3) Then
                blnNeedUPdate = True
         End If
    If blnNeedUPdate then ‘’如果版本较新就下载新版本
    .Excute “Get My.exe ” & “ ” & app.path & “\My.exe”
    End if
    End With
    这样就完成了自动更新。只要把你的Ftp服务器在Internet上,即使用户与你不在同一个局域网,只要能上Internet,同样能进行自动更新。当然在同一个局域网内,也可以采用此方法。所以Ftp的方法更普遍一些,但是它的缺点是版本文件必须另外维护,如果出现版本文件的信息和软件的版本不一致,就会造成软件重复下载旧版本或是不下载新版本的问题。