专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »VB教程 » vb6.0教程:用VB6.0编写自我升级的程序(三)-vb教程 »正文

vb6.0教程:用VB6.0编写自我升级的程序(三)-vb教程

来源: 发布时间:星期四, 2009年2月12日 浏览:315次 评论:0


ss=MsoNormal style=\"MARGIN: 0cm 0cm 0pt\"> prefix = o ns = \"urn:schemas-microsoft-com:office:office\" />

VERSION 5.00

Begin VB.Form frmUpdate

BackColor = &H80000007&

BorderStyle = 0 ´None

Caption = \"Form1\"

ClientHeight = 1185

ClientLeft = 0

ClientTop = 0

ClientWidth = 5400

LinkTopic = \"Form1\"

MaxButton = 0 ´False

MinButton = 0 ´False

ScaleHeight = 1185

ScaleWidth = 5400

ShowInTaskbar = 0 ´False

StartUpPosition = 2 ´屏幕中心

Begin VB.CommandButton Command1

Appearance = 0 ´Flat

Caption = \"关闭\"

Height = 435

Left = 2130

TabIndex = 0

Top = 630

Visible = 0 ´False

Width = 1245

End

Begin VB.Label lblCap

AutoSize = -1 ´True

BackStyle = 0 ´Transparent

BeginProperty Font

Name = \"宋体\"

Size = 12

Char = 134

Weight = 400



Underline = 0 ´False

Italic = 0 ´False

Strikethrough = 0 ´False

EndProperty

ForeColor = &H000000FF&

Height = 240

Left = 330

TabIndex = 1

Top = 150

Width = 120

End

Begin VB.Shape Shape1

BackColor = &H prefix = st1 ns = \"urn:schemas-microsoft-com:office:smarttags\" />00C0FFFF&

BackStyle = 1 ´Opaque

BorderColor = &H0000FF00&

Height = 1065

Left = 60

Top = 60

Width = 5265

End

End

Attribute VB_Name = \"frmUpdate\"

Attribute VB_GlobalNameSpace = False

Attribute VB_Creatable = False

Attribute VB_PredeclaredId = True

Attribute VB_Exposed = False

Option Explicit



´ ------------------------------------------

´ 升级例子

´ 作者: 谢家峰

´ 日期: 2003/12/19

´

´ 这里是升级

´

´ ------------------------------------------





Dim State As Boolean



Private Sub Command1_Click

Unload Me

End Sub



Private Sub Form_Activate



Dim i As Integer

Dim j As String



Dim OldExeFile As String

Dim NewExeFile As String



Dim tmpFile As String

Dim MainState As Boolean





DoEvents



If State Then

´ 获取旧主名称

OldExeFile = CStr(ReadIniFile(UpdateIniPath, \"Main\", \"Name\", \"主\"))

NewExeFile = OldExeFile

OldExeFile = App.Path & \"\\\" & OldExeFile & \".exe\"

tmpFile = App.Path & \"\\tmp.tmp\"



´ 改写升级次数

i = CInt(ReadIniFile(UpdateIniPath, \"Update\", \"Num\", \"0\"))

i = i + 1

ChangeLabelPos Me, lblCap, \"这是您第\" & i & \"次升级!\"

Sleep 1500



´ 摸拟从网站WebSite下载新更新

ChangeLabelPos Me, lblCap, \"正在 摸拟从网站WebSite下载新升级 ...\"

Sleep 1000

_disibledevent=> Kill tmpFile

´ 此处可以修改为将临时文件放在临时文件夹内

SaveFileFromRes 101, \"CUSTOM\", tmpFile

Sleep 1000

_disibledevent=>

´ 检查主是否开启若开启则关闭旧

MainState = CBool(CInt(ReadIniFile(UpdateIniPath, \"Main\", \"Active\", \"0\")))

If MainState Then

´ 关闭旧

ChangeLabelPos Me, lblCap, \"正在关闭旧 ... \"

Sleep 300





´ 这里强行关闭旧

´ 你也可以发送消息让旧自己关闭

Do While -1

DoEvents

If CloseValidForm(NewExeFile) Then

Exit Do

End If

Loop

Sleep 200

End If



´ 删除旧

_disibledevent=> ChangeLabelPos Me, lblCap, \"正在删除旧 ... \"

Sleep 1000

Kill OldExeFile

Sleep 1000





´ 生成新主名称

´ NewExeFile = CStr(ReadIniFile(UpdateIniPath, \"Main\", \"Name\", \"主\"))

j = Right(NewExeFile, 1)

If IsNumeric(j) Then

j = i

NewExeFile = Left(NewExeFile, Len(NewExeFile) - 1)

Else

j = 1

End If

´ 记录主名字

NewExeFile = NewExeFile & j

WritePrivateProfileString \"Main\", \"Name\", NewExeFile, UpdateIniPath

NewExeFile = App.Path & \"\\\" & NewExeFile & \".exe\"





´ 拷贝新

ChangeLabelPos Me, lblCap, \"正在更新 ... \"

Sleep 1000

FileCopy tmpFile, NewExeFile

Sleep 1000

´ 删除临时

Kill tmpFile



´ 记录更新次数

WritePrivateProfileString \"Update\", \"Num\", CStr(i), UpdateIniPath





´ 检查旧状态

If MainState Then

ChangeLabelPos Me, lblCap, \"正在启动更新后 ... \"

Sleep 1000

Shell NewExeFile, vbNormalNoFocus

End If



´ 关闭更新

Command1.Visible = True

ChangeLabelPos Me, lblCap, \"更新完成请等待 3 秒后将自动关闭更新 ...\"

Sleep 3000

lblCap.Refresh



Unload Me

End If

End Sub



Private Sub Form_Load



If App.PrevInstance Then End



UpdateIniPath = App.Path & \"\\Update.ini\"

State = True

End Sub





完成了 3个工程代码拷贝在代码必要的处我都进行了详细注释这里我就不再介绍代码了现在进行最后模拟从网站WebSite下载升级后

a. 打开projMain.vbp编译该工程并且命名为“主.exe”;

b. 打开projNewMain.vbp编译该工程并且命名为“projNewMain.exe”;

c. 打开projUpdate.vbp打开工具栏上“vb资源编辑器”(若没找到读者需要点击菜单“外接|外接管理器”在打开对话框中选择“vb6资源编辑器”在加载行为中选择“加载/卸载”复选框)在资源编辑器中选择“添加自定义资源 …”在打开对话框中定位到Update文件夹选择projNewMain.exe文件保存该资源文件最后编译该工程并且命名为“Update.exe”

d. 将可执行文件“主.exe”、“Update.exe”拷贝到同个文件夹中运行任相信读者会看到效果



以上代码比较简单仅供读者分析思路用在实际工程中代码编写时也根本没必要把projNewMain.exe放在资源文件中读者只需将它放在服务器某个位置然后在projUpdate.vbp中相应处写下载代码即可

Ok文章至此编写完成希望对各位读者能有所帮助



附:本人已在CSDN上发布了源码等管理员审核完毕本人再将链接地址补上






0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: