Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > สอบถามครับ พอจะมีวิธีการ Update โปรแกรมโดยอัตโนมัติไหมครับ โดยใช้การ เช็คเวอร์ชั่น .txt ผมใช้ WinApp



 

สอบถามครับ พอจะมีวิธีการ Update โปรแกรมโดยอัตโนมัติไหมครับ โดยใช้การ เช็คเวอร์ชั่น .txt ผมใช้ WinApp

 



Topic : 117943



โพสกระทู้ ( 374 )
บทความ ( 0 )



สถานะออฟไลน์





ผมต้องการจะอัพเดทโปรแกรมโดยอัตโนมัติทันที ที่ผู้ใช้งานเปิดใช้โปรแกรมอ่ะครับ การทำงาน เป็นการทำผ่านแลน โดยเครื่องผมเป็นเครื่อง
Client ครับ มีตัว Sutup โปรแกรม ทำการแชร์ไว้ เพื่อให้ให้เครื่องอื่นดึงไปติดตั้งครับ

ผมเลยอยากสอบถามว่า พอจะมีวิธีการที่ User ไม่ต้องเข้ามาในเครื่องผม เพื่อดึงโปรแกรมไป Update ไหมครับ
(ความคิดส่วนตัวผมนะ)
1.คิดว่าน่าจะสร้างไฟล์ .txt เก็บ Version ไว้เป็นข้อความ เช่น 1.0.0 พอ User เปิดโปรแกรมในเครื่องตัวเอง ก็ให้ตรวจสอบค่า .txt ในเครื่องผม
ว่าเวอร์ชั่นที่ใช้อยู่ ตรงกับ .txt ในเครื่องผมหรือไม่ครับ ถ้าตรง ก็ให้เข้าหน้าล๊อกอินได้เลย แต่ถ้าไม่ตรง ให้มีฟอร์มอัพเดทมาก่อน เมื่ออัพเดท
แล้ว ก็ให้ Restart Program ครับ โดยดึงตัวติดตั้งจากเครื่องผมไปติดตั้งใหม่ "แบบอัตโนมัติ" ครับ

พอจะมีท่านใดทราบวิธีการทำแบบนี้บ้างไหมครับ ผมลองค้นหาดู เจอแต่อัพเดทผ่าน WebClient ครับ เลย งง

ขอบคุณมากครับ



Tag : .NET, Ms SQL Server 2005, VS 2005 (.NET 2.x)









ประวัติการแก้ไข
2015-07-21 13:02:24
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-07-21 13:00:17 By : Balll2iFFer View : 1544 Reply : 9
 

 

No. 1



โพสกระทู้ ( 821 )
บทความ ( 0 )



สถานะออฟไลน์


ผมไม่เคยใช้น่ะครับ
แบบนี้หรือปล่าวครับ

http://autoupdaterdotnet.codeplex.com/






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-07-21 13:12:25 By : fonfire
 


 

No. 2



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

น่าสนมากเลยคับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-07-21 13:31:25 By : mr.win
 

 

No. 3



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

step ที่ว่ามาใช้งานได้เลยครับ
แค่เอามันออกมาเป็นโค๊ดก็ได้แล้วครับ

แต่แนะนำนิดนึงครับ

1. ถ้าเปิดโปรแกรมมาก่อนที่เราจะอัพ ver ใหม่ละครับ
2. ถ้าเครื่องเราเปิดทีหลังเครื่อง user ละครับ
3. บางครั้งการ อัพ ที่เครื่อง user ผิดพลาด user ไม่รู้นึกว่าใช้ตัวใหม่ยุละครับ

ถ้าเป็นระบบแลนที่มีการใช้ database ร่วมกันส่วนมากที่เห็นจะเป็นการแชร์โฟลเดอร์ที่ติดตั้งโปรแปกรมให้ user ใช้งานมากว่า
ยกตัวอย่าง Express หรือโปรแกรมบัญชีต่างๆจะเป็นแบบนี้เกือบหมด

แต่ถ้าไม่ใช้ร่วมกันดูเหมือนว่าไม่จำเป็นต้องอัพโปรแกรมก็ใช้งานได้แล้วครับเพราะ database จะต้องออกแบบให้เป็นแบบนั้นยุแล้วครับ
ทั้งนี้ขึ้นยุกับรูปแบบของ database นั้นๆครับว่าออกแบบมายังไง


ส่วนโปรแกรมที่ผมเขียนยุ มีการใช้ database ร่วมกันแชร์โฟลเดอร์ที่ติดตั้งโปรแปกรมให้ user ใช้งานเราจะไม่ต้องเสียเวลาเดินไปเดินเพื่อแก้ไขแต่ละเครื่องครับถ้ามีปัญหาการติดตั้ง

แต่ถ้าคิดจะลองทำจริงๆแนะอีกว่าให้สร้าง windows services มาคอย ดักจับการอัพ เป็นระยะ ครับ (อิงมาจากโปรแกรม Line IDM ฯลฯ )
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-07-21 13:50:26 By : lamaka.tor
 


 

No. 4



โพสกระทู้ ( 374 )
บทความ ( 0 )



สถานะออฟไลน์


เริ่มไม่ถูกเลยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-07-21 14:17:45 By : Balll2iFFer
 


 

No. 5



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 4 เขียนโดย : Balll2iFFer เมื่อวันที่ 2015-07-21 14:17:45
รายละเอียดของการตอบ ::
ถ้าใช้เป็น .txt
แนะนำให้ทำเป็นรูปแบบ .ini ครับมีระเบียบกว่าสามารถเก็บ SQL ,connectionstring หรืออะไรที่เราขี้เกียจยัดลงโปรแกรมได้

Code (C#)
namespace TORServices
{
    public static class clsINI
    {
        [DllImport("kernel32.dll", EntryPoint = "GetPrivateProfileStringA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
        private static extern int GetPrivateProfileString(string lpApplicationName, string lpKeyName, string lpDefault, global::System.Text.StringBuilder lpReturnedString, int nSize, string lpFileName);
        [DllImport("kernel32.dll", EntryPoint = "WritePrivateProfileStringA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
        private static extern int WritePrivateProfileString(string lpApplicationName, string lpKeyName, string lpString, string lpFileName);
        public static string ReadValue(string Path, string section, string key)
        {
            global::System.Text.StringBuilder sb = new global::System.Text.StringBuilder(255);
            dynamic i = GetPrivateProfileString(section, key, "", sb, 255, Path);
            return sb.ToString();
        }
        public static void WriteValue(string Path, string section, string key, string value) { WritePrivateProfileString(section, key, value, Path); }
            public static string textFileReader(string pathFileName)
   {
     string line;
     StreamReader fs;
     try 
     {
        fs = new StreamReader(pathFileName);
        line = fs.ReadToEnd();

        /* อ่าน Encode จาก String ที่อ่านมาได้จาก text file */ 
        Encoding encodeSource = Encoding.GetEncoding(fs.CurrentEncoding.CodePage);
        fs.Close();

        //* ............ */
        Encoding systemEncode = Encoding.Default; 
        Encoding targetEncode = encodeSource;

        /* สั่ง getbyte array จาก string ที่เราอ่านมา */
        byte[] srcData = systemEncode.GetBytes( line );
        byte[] dstData;

        /* ถ้าเป้น Encode ต่างกัน windows และ text file ให้ Convert byte array ไปเป็น text file encode */
        if( targetEncode != systemEncode )
          dstData = Encoding.Convert( systemEncode, targetEncode, srcData );
        else 
          dstData = srcData;

        /* convert bytearray ไปเป็น string ด้วย text file encode */
        return  targetEncode.GetString(dstData);

     }
     catch(Exception ex)
     {
        throw new IOException("cannot find " + pathFileName,ex);
     }

   }
        public static System.Collections.Generic.List<string> textFileReaderFormline(string pathFileName)
        {

            System.Collections.Generic.List<string> list = new System.Collections.Generic.List<string>();
            System.IO.StreamReader fs;
            fs = new System.IO.StreamReader(pathFileName, System.Text.Encoding.GetEncoding(874));

            string line;
            while ((line = fs.ReadLine()) != null)
            {
                list.Add(line);
            }
            return list;

        }
    }
}





บ้านๆคือดักจับตอน load โปรแกรมขึ้นมาละกันครับ

Code (C#)
private void frmMain_Load(object sender, EventArgs e)
        {
            if (TORServices.clsINI.ReadValue(@"X:\DATA\Info.txt", "Program", "Ver") != Application.ProductVersion)
            {
                //.....
            }
        }


รูปแบบง่ายๆมีแค่นี้ครับ
แต่ตัณหาที่จะเจอต่อไปคือ

อ้าว ลบไฟล์ไม่ได้เพราะเปิดใช้งานอยู่ 5555

ดังนั้นถึงได้แนะนำให้สร้าง windows services แล้วใช้ timer หรืออะไรก็ได้ครับมาดักจับ
พอเจอการเปลี่ยนแปลงก็ kill path โปรแกรมมันซะเลย แล้วค่อย สั่งติดตั้งโปรแกรมใหม่

แต่ปัญหายังไม่จบแค่นั้นครับ

หากเราทำงานเกี่ยวกับ database ค้างไว้ แล้วมัน kill path ตัวโปรแกรมเราละ

ดังนั้นในตัวโปแกรมเองจะต้องมีการตรวจจับว่าถ้าเกิดข้อผิดพลาดระหว่างใช้งาน เช่น เราสั่ง delete insert update ซัก 50000 แล้วมันดันค้างเพราะ kill path เราจะแก้ไขยังไง

แต่ก็ยังเอาใจช่วยครับ แค่บอกปัญหาจะเจอแค่นั้นเอง

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-07-21 14:50:48 By : lamaka.tor
 


 

No. 6



โพสกระทู้ ( 374 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 5 เขียนโดย : lamaka.tor เมื่อวันที่ 2015-07-21 14:50:48
รายละเอียดของการตอบ ::
ขอบคุณครับ จะลองดูนะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-07-21 15:00:52 By : Balll2iFFer
 


 

No. 7

Guest


จากที่ผมเคยทำมานะครับ ผมใช้วิธีการเช็คเวอร์ชั่น

เครื่อง server
ลง IIS -> สร้าง web service เพื่อสร้าง WebMethod (เพื่อ update ไฟล์, ตรวจสอบเวอชั่นไฟล์)

เครื่อง Client
สร้าง win app สำหรับอัพเดทโปรแกรม เมื่ออัพเดทเสร็จสิ้น ให้เรียกโปรแกรมของเรา และปิดโปรแกรมอัพเดท

คล้ายๆเกมส์ออนไลน์
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-07-23 14:27:28 By : surawutl
 


 

No. 8



โพสกระทู้ ( 374 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 7 เขียนโดย : surawutl เมื่อวันที่ 2015-07-23 14:27:28
รายละเอียดของการตอบ ::
ในกรณีนี้ เราต้องเอาไฟล์ไว้ที่ Server ด้วยหรือป่าวครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-07-23 16:20:20 By : Balll2iFFer
 


 

No. 9

Guest


ใช่ครับไฟล์อยู่ที่ server
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-07-23 20:52:00 By : Surawutl
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามครับ พอจะมีวิธีการ Update โปรแกรมโดยอัตโนมัติไหมครับ โดยใช้การ เช็คเวอร์ชั่น .txt ผมใช้ WinApp
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่