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\" /> 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 ´ ------------------------------------------ ´ 升级例子 ´ 作者: 谢家峰 ´ 日期: ´ ´ 这里是升级 ´ ´ ------------------------------------------ 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 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
相关文章读者评论发表评论 |