คือ จะเช้ค version ใน host กับ เช้ค version ในโปรแกรม ถ้าไม่ตรงกัน คือโหลดตัวใหม่
แต่มันดันติด error ในการเช้ค version ในโปรแกรมครับ
โค้ด Code (VB.NET)
Imports System.Net
Imports System.IO
Imports System
Public Class Form1
Shared Sub Main()
Console.WriteLine("CurrentDirectory: " & System.Environment.CurrentDirectory)
End Sub
'สำหรับเช็คเวอร์ชั่น
WithEvents webclient1 As New WebClient
'สำหรับดาวโหลดไฟล์ Update
WithEvents webclient2 As New WebClient
Dim oWrite As IO.StreamWriter
'#################################Config#################################
Dim urlUpdate As String = "http://www.pongtanakorn.com/update/WindowsApplication2.rar" 'ลิงค์ URL ไฟล์ที่จะทำการอัพเดต
Dim LocalPro As String = "System.Environment.CurrentDirectory" ' ตำแหน่งที่ตั้งของไฟล์ที่จะอัพเดต
Dim iniServer As String = "http://www.pongtanakorn.com/ver.ini" 'URL ของไฟล์ ver.ini เพื่อเช็คเวอร์ชั่นใหม่
Dim Proname As String = "WindowsApplication2.exe" 'โปรแกรมที่จะสั่งให้เปิดเมื่อัพเดตเสร็จ
Dim currentversion As String = Application.ProductVersion
'#############################################################################
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Start()
Dim chkIPaddress As New Threading.Thread(AddressOf chkUpdate)
CheckForIllegalCrossThreadCalls = False
chkIPaddress.Start()
End Sub
Private Sub webclient2_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles webclient2.DownloadProgressChanged
'ProgressBar1.Show()
ProgressBar1.Maximum = e.TotalBytesToReceive
ProgressBar1.Value = e.BytesReceived
'แสดงเปอร์เซ็น
Label2.Text = e.ProgressPercentage & " %"
End Sub
Private Sub webclient2_DownloadFileCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) Handles webclient2.DownloadFileCompleted
MsgBox("เสร็จ")
ProgressBar1.Hide()
Process.Start(Proname)
Me.Close()
End Sub
Private Sub chkUpdate()
'อ่านเวอร์ชั่นที่โปรแกรม
Dim versionpro As String = webclient1.DownloadString(Application.ProductVersion)
'อ่านเวอร์ชั่นที่ Server
Dim versionsite As String = webclient1.DownloadString(iniServer)
'ถ้าเวอร์ชั่นที่โปรแกรมกับ Server ไม่ตรงกัน
If versionsite <> versionpro Then
'ถ้าไม่ตรงให้เข้ามา Update
'เริ่มดาวโหลดไฟล์รูปแบบคือ (New Uri("http://www.pongtanakorn.com/autoupdate.exe"), "C:\Users\oHm Ja\Desktop")
webclient2.DownloadFileAsync(New Uri(urlUpdate), LocalPro)
'อัพเดตไฟล์ .ini
oWrite = New IO.StreamWriter(currentversion)
'เขียนไฟล์ ini ของโปรแกรมให้เท่ากับของ server
oWrite.Write(versionsite)
oWrite.Close()
Else
'ถ้าตรงไม่ต้อง
'Label2.Text = "เวอร์ชั่นล่าสุดแล้ว"
End If
End Sub
Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label3.Click
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
ProgressBar1.Increment(4)
If ProgressBar1.Value = ProgressBar1.Maximum Then
Timer1.Stop()
ProgressBar1.Hide()
End If
End Sub
End Class
มันจะเหมือนปัญหาที่ผมเคยเจอเปล่าไม่แน่ใจนะครับ เนื่องจาก user ใน os ที่ใช้นั้นไม่มีสิทธิ์การเพิ่มหรือแก้ไขไฟล์ครับ
ให้ทำการเปลี่ยนการเข้าถึงไฟล์เป็น allow ทั้งหมด แต่ละ os อาจไม่เหมือนกันให้ลองหาค้นหาดูตามเว็บเอานะครับ อันนี้จะบอกแค่ window xp นะครับ
ให้ไปที่ c:/..../visual studio 2008
คลิ๊กขวาที่ visual studio 2008 เลือก properties -> security
ตรง group or user name เลือก users (ชื่อเครื่อง )
ตรง permissions ช่อง allow ให้ติ๊กทั้งหมด ( มีสิทธิ์ไปทั้งหมดเลย หรือจะเลือกก็ได้ครับแล้วแต่ )