อยากได้แนวคิดและตัวอย่างการทำตัว Installer ที่ Include Database Engine ลงไปด้วย (MSSQL Express หรือ MySQL)

[เล่าให้ฟังก่อน]
ผมพัฒนา windows application ขนาดเล็กขึ้นมาตัวนึง สำหรับทำงานบนระบบปฏิบัติการ windows

เขียนด้วยภาษา C#.NET (MS Visual Studio Community 2013)
ซึ่งหลังจากการ Build ออกมาจะมีไฟล์ .dll มากมายและรวมไปถึงไฟล์ .exe สำหรับในการรันโปรแกรมด้วย

เดิมทีผมใช้ Database เป็น MS Access (.mdb) ซึ่งตัว .NET มี Data Provider คือ OLE DB ให้ผมใช้ติดต่อสื่อสารกับ Database อยู่แล้วซึ่งสะดวกมาก

เมื่อเวลาผ่านไป อยากจะอัพเกรดเปลี่ยน Database ไปใช้ MS SQL Server รุ่น Express อาจจะเป็น  2012, 2013 หรือรุ่นใหม่ๆ
ในระดับ Code ผมแค่เปลี่ยนจาก OleDb ไปใช้ Sql ได้อยู่แล้ว และเขียน SQL Query อีกชุดนึง ส่วนการทำงานอื่นๆ คงเดิม
และอาจเปลี่ยน ไปใช้ .NET 4 หรือ .NET 4.5 ตัวใหม่ไปเลย (เดิมใช้ .NET 2 อยู่เพราะเห็นว่าเป็น App ธรรมดาๆ) เพื่อรองรับการทำงานแบบ Client-Server ในวงแลนเล็กๆได้ไปด้วย

ส่วนเรื่องการทำ Installer ปัจจุบันผมใช้ Inno Setup [Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้ เป็น freeware
มันจะมีสคริปแบบง่ายๆ ทีว่าจะเอา .dll หรือ .exe  หรือไฟล์ไหน โฟลเดอร์ไหนของเรา ไปไว้ในไหนของเครื่องที่จะติดตั้ง
เช่นให้เอาไปไว้ที่ C:/Program files/XXX จากนั้น กด Compiler ทีเดียว ก็ออกมาเป็นไฟล์ Setup.exe ให้เรียบร้อยเลย
ก็เป็นการทำ installer แบบง่ายๆ ออกแนวแบบว่า เอาชุดไฟล์โปรแกรมของผมไปติดตั้งลงใน drive ตามที่ต้องการเท่านั้นเอง

[คำถาม และ ความต้องการ]
จากการที่ผมต้องการเปลี่ยน Database ใหม่ ปัญหาเรื่องการ Coding โดยใช้โค้ดชุดเดิม แต่รองรับ Database ใหม่ผมไม่มีปัญหาตรงนี้ .NET ตอบใจทย์ให้ได้อยู่แล้ว

ปัญหาของผมคือ ผมต้องการ ให้ include ตัว  Database Engine ลงไปด้วยทันที ในการกดติดตั้งจาก End Users
โดยที่ End Users หรือผู้ใช้งานของผมจะไม่ต้องมาคอยกดตั้งค่า กำหนดค่า หรือ config อะไรใดๆ ลงไป

ต้องการให้การติดตั้งกำหนดค่าทุกอย่างให้เสร็จตามต้องการ โดยที่ไม่สนใจว่า บนเครื่องเดิมของ End Users ได้มี DB Engine ตัวนั้นอยู่แล้วหรือไม่
อาจจะกำหนด PORT ใหม่เอง และ ตั้งชื่อ instance name ของ db เองเพื่อที่จะไม่ไปชนกับของเดิมที่อาจจะมีอยู่แล้ว

แต่ถ้า มีอยู่แล้วจริงๆ ก็ไม่ต้องติดตั้งซ้ำ

ทีนี้ ตามที่ผมถนัด มี DB สองตัวคือ MSSQL ผมจะใช้รุ่น Express เพราะเป็น freeware หรือ MySQL ก็ได้
การกำหนด INSTANCE NAME ของ DB, Port, Username, Password ต้องผ่านการกำหนดจาก script, code (หรืออะไรก็แล้วแต่) ทั้งหมด
End Users ทำหน้าที่แค่ กด Next Nextๆๆๆ เลือกโฟลเดอร์สำหรับ App แบบง่ายๆตามปกติ ในตอนติดตั้งเท่านั้น

อยากได้แนวคิด แนวทาง หรือตัวอย่างคร่าวๆ ในการทำ (สำหรับท่านใดที่เคยทำงานในลักษณะ แบบนี้มาแล้ว) Installer อย่างที่ว่ามาครับผม

ขอบคุณล่วงหน้าเลยครับผม นี่เป็นกระทู้แรกของผมเลยใน Pantip
หากมีอะไรผิดพลาดประการใดขออภัยมา ณ ที่นี้ด้วยครับ นอบรับคำแนะนำ

[แก้ไขเพิ่มเติม] 2015/05/08
งาน C#.NET + MSSQL สมัยผมเคยอยู่ในทีมพัฒนาระบบ เคยทำระบบใหญ่ ระดับระบบ รพ. (คิดว่าใหญ๋นะ เพราะงานหนักมาก)
ที่ trsnsaction ต่อวันเยอะมาก ซึ่งการ deploy เป็นการยกทีมไปที่หน้างานเลย ตั้ง mssql server 2 ตัว, ในการ deploy แบบ clickonce ไปที่ server เครื่อง client ก็ดึง icon exe ลงมารอไว้ เฉยๆ
เป็นการทำมือเองทั้งหมด เพราะ ทางหน่วยงานนั้นๆ มีการทำสัญญา MA ให้ทีมดูแลเรื่องพวกนี้ด้วย
และทางเขาก็มีทีม IT Support คอยดูแลพวก Hardware ทั้งหลายรวมไปถึง Network อยู่แล้ว  

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