หน้าแรก
 การบ้าน
  C/C++ new
  Java new
  Windows Phone
  แจ้งเรื่องที่ต้องการ
 บทความ
  .NET
  Android
  Blackberry
  C++Builder
  Delphi
  Java
  Mobile
  Open Source
  Pocket PC
  Visual Basic
  Web
  Windows Phone
  Others
 แบบเรียนฟรี
  ASP
  ASP.NET Webmatrix
  C++
  eVB
  J2ME
  Java
  PHP
 ซอร์สโค้ด
  Android
  ASP
  C++
  VC++
  CGI-Perl
  Delphi
  Java
  jQuery
  PHP
  Visual Basic
  .NET
 บริการจากเรา
  เปิดท้าย... ขายโค้ด
  Freeware
  อัตราค่าโฆษณา
  รายชื่อลูกค้า
  สถิติผู้เข้าเว็บ
 ดาว์นโหลด
 ค้นหาข้อมูล
 กระดานสนทนา
  .NET
  C/C++
  Delphi
  Java
  Palm/PocketPC
  Visual Basic
  Web
  อื่นๆ
 กระดานงาน
 ลิงค์เว็บ
 เกี่ยวกับผม
 อัตราค่าโฆษณา
Social Network

Facebook  Twitter  YouTube
 New Article
 Webboard
 Freelanceboard
Freeware
โปรแกรมเบอร์ดี (BerDee)
โปรแกรมเบอร์ดี (Android)
เกมส์เป่ายิ้งฉุบ
เกมส์เป่ายิ้งฉุบ(Android)
WebcamMonitor
WebcamMonitor(Windows)
scSendMail
scSendMail(Windows)
MSN Caption
MSN Caption(Windows)
  Freelance comment
  ติดต่อสอบถามมาได้ตลอดนะ...
2015-07-29 13:35:58
  ถ้าผมต้องการเว็บที่พัฒน...
2015-01-18 15:33:54
  ถ้าผมต้องการเว็บที่พัฒน...
2015-01-18 15:32:51
  ติดต่อสอบถามเข้ามาได้นะ...
2014-01-06 12:47:38
  ถ้ายังหาคนสอนไม่ได้ ก็ลอ...
2013-07-06 01:04:37
  สนใจส่งขอบเขตมาคุยราคาก...
2013-03-24 18:54:20
  ถ้ายังไม่มีคนรับงานติดต...
2012-12-16 19:18:14
  สนใจคะ ติดต่อ 0905076277...
2012-11-12 11:07:46
  รับทำโปรเจ็คนักศึกษาหรื...
2012-10-29 03:10:46
  sukit_te34@hotmail.com...
2012-10-29 03:09:36
  Webboard comment
  เขียนโปรแกรมภาษาจาวา
1.โ...

2023-09-12 11:40:28
  ต้องลอง debug ดูเองครับ
ไล่...

2023-06-08 18:03:06
  ร้านค้าแห่งหนึ่ง จะต้องน...
2021-09-21 08:47:08
  จงเขียนโปรแกรมดำเนินการ...
2021-05-07 15:06:11
  จงเขียนโปรแกรมสำหรับคำน...
2021-03-09 14:21:45
  ขอดู...
2021-01-04 23:56:45
  ขอโค้ดเพื่อทำการเรียนกา...
2020-12-09 23:02:09
  แล้ว ?...
2020-12-09 10:56:34
  จ้า...
2020-10-18 16:53:21
  พอดีผมเหลื่อแค่ตัดสต๊อก...
2020-05-31 21:49:43
  Homework comment
  เขียนโปรแกรมเพื่อรับค่า...
2022-02-24 10:45:17
  จากโค้ดนี้อะครับ พอดีลอง...
2021-03-22 01:22:39
  จากโค้ดนี้อะครับ พอดีลอง...
2021-03-22 01:22:39
  โจทย์การบ้าน c++ เขียนรูปแ...
2020-04-06 11:01:33
  แบบนี้ขอเป็น ภาษา php หน่อย...
2019-09-18 14:36:34
  ผมไม่อยากให้คุณได้คะแนน...
2019-04-27 01:29:07
  อาจารย์เขาบอกแนวข้อสอบม...
2019-04-27 00:44:29
  ขอสอบถามการเขียน c++ ครับ เ...
2018-04-02 12:19:21
  โค้ดตัวอย่างศึกษาให้เข้...
2017-11-26 14:50:05
  คำนวณค่าน้ำโดยรับค่ามิเ...
2017-11-20 23:15:26
  Article comment
  เท่าที่อ่าน error คือพื้นที่...
2022-03-23 13:56:48
  เรียน สอบถามปัญหา กับ อ.คร...
2022-01-24 17:39:49
  ต้องการ ให้เขียน โปรแกรม ...
2019-12-09 11:39:58
  รับเขียน arx จาก vc++ 2017 ล็อคโปร...
2019-09-19 09:48:09
  ทำการ register ไฟล์ที่ชื่อ mswinsck.oc...
2019-09-17 14:05:56
  ใน vb 6 ไม่มี component winsock เลยค่ะ ส...
2019-09-03 10:31:02
  รบกวนขอสอบถามหน่อยนะครั...
2019-03-04 05:31:04
  สามารถนำตัวหนังสือจากภา...
2018-12-25 08:54:32
  มีcode ของ VB ไหมค่ะ ถ้ามีรบกว...
2017-09-28 16:50:02
  น่าจะได้ครับ ไม่เคยลอง
...

2017-07-11 09:59:35
  9Mcode comment

Link Exchange

อัตราค่าโฆษณา
 
วิธีการสร้างโปรแกรมติดตั้ง สำหรับ PDA (PPC2003) บน VS 2005 (อ่าน 31,076)
ศุภกิจ ทองดี (9'M) บทความโดย: นาย ศุภกิจ ทองดี (9'M)
e-mail: webmaster@sourcecode.in.th
mobile: 09-5009-5351
Line: suppakit.thongdee
Youtube: 9Mcode
Fanpage: Sourcecode.in.th
   
: ดาว์นโหลดตัวอย่างโปรแกรม (ดาว์นโหลด 2,230 ครั้ง)

- - - - - - - - - - - - - - ผู้ให้การสนับสนุน- - - - - - - - - - - - - -

 
 
Freelanceรับพัฒนาโปรแกรม และเว็บ โดย 9'M 

บทความนี้เป็นการแสดงถึงตัวอย่าง การสร้างโปรแกรม setup ที่ใช้ในการติดตั้งโปรแกรม PDA ที่นักพัฒนาได้ทำการสร้างขึ้นมา โดยมากแล้ววิธีการนำโปรแกรมบน PDA ไปติดตั้งนั้น สามารถกระทำได้หลายวิธี เช่นการสร้างเป็น cab file และให้ผู้ใช้คำการ คัดลอกไปไว้ในเครื่อง PDA แล้วทำการติดตั้ง นอกจากนั้นแล้ว ยังมีโปรแกรมติดตั้งที่เป็นไฟล์ EXE ซึ่งหัวข้อนี้ เราจะได้มาเรียนรู้ถึง ลำดับขั้นตอน และวิธีการทำโปรแกรมติดตั้งดังกล่าว กันต่อไป

เริ่มจาก นักพัฒนาได้มีการพัฒนาโปรเจค ที่เป็นโปรแกรม สำหรับ Pocket PC 2003 ด้วย Visual Studio 2005 ดังรูป

คลิกเพื่อดูภาพใหญ่

ลำดับขั้นตอนในการสร้างโปรแกรมติดตั้ง จะมีด้วยกันดังนี้

  1. สร้าง Cab Project
  2. สร้าง Installer DLL
  3. สร้าง INI File
  4. สร้าง MSI

สร้าง Cab Project

Cab Project จะเป็นการสร้างไฟล์ที่ประกอบด้วยไฟล์อื่นๆที่อยู่ภายใน เช่นเดียวกับไฟล์ zip,jar, rar โดยลักษณะของ cab file อาจจะประกอบด้วย ไฟล์ที่ถูกพัฒนาขึ้นโดยนักพัฒนา และจำเป็นต้องใช้ประกอบกับโปรแกรม ที่พัฒนาขึ้น เช่นไฟล์ exe,dll,sdf,bmp

ในการสร้างจะเริ่มจาก การคลิกเลือกที่เมนู File > Add > new Project ของโปรแกรม Visual Studio 2005
เลือก Other Project Types > Setup and Deployment > Smart Device CAB Project และกำหนด Name เป็น sampleCab คลิกปุ่ม OK เพื่อยืนยันการทำงานดังรูป

คลิกเพื่อดูภาพใหญ่

คลิกขวาที่โปรเจค sampleCab และเลือก Add Project Output... จะปรากฏหน้าต่างดังรูป

คลิกเพื่อดูภาพใหญ่

ทำการเลือกProject เป็น sampleApp ซึ่งเป็นโปรเจคของโปรแกรมที่นักพัฒนาสร้างขึ้น แล้วทำการเลือก Primary output และคลิกที่ปุ่ม OK เพื่อยืนยัน ก็จะทำให้มีรายการของไฟล์ ระบบ และไฟล์อื่นๆ ที่โปรเจคต้องใช้ แสดงอยู่ดังรูปด้านล่าง

*** ในกรณีที่โปรแกรมของนักพัฒนา มีการเรียกใช้งานไฟล์อื่นๆที่อยู่ใน โปรเจค เช่นไฟล์ bmp(ไฟล์รูปภาพ) หรือไฟล์ sdf(ไฟล์ฐานข้อมูล) ให้นักพัฒนานำเข้าไฟล์ดังกล่าว โดยทำการเลือกนำเข้าอีกรอบ โดยเลือกที่ Content Files

ให้คุณคลิกขวาที่โปรเจค sampleCab และเลือก Properties จะปรากฏหน้าต่าง ขึ้นมา จากหน้าต่างใหม่ ให้เลือก Configuration เป็น Release ในช่อง Out put file name จะแสดงชื่อ cab file ที่จะถูกสร้างขึ้นมา ดังรูป

คลิกเพื่อดูภาพใหญ่

ทำการคลิกปุ่ม Configuration Manager... จะปรากฏหน้าต่าง ขึ้นมา ให้คุณทำการเลือก Active Solution Configuration เป็น Release และคลิกปุ่ม Close เพื่อปิดหน้าต่าง ดังรูป

คลิกเพื่อดูภาพใหญ่

นอกจากนี้ Cab Project ที่สร้างขึ้น ยังมีความสามารถให้ผู้พัฒนากำหนดค่าลงใน Registryของเครื่องที่จะถูกติดตั้งโปรแกรม ผ่านทางหน้าต่าง Registry Editor ดังแสดงในรูป

ให้คุณทดสอบสร้าง cab file โดยคลิกขวาที่โปรเจค sampleCab และเลือกที่ Build.. ดังรูป

cab file จะถูกสร้างและเก็บไว้ตามค่าของ Out put file name ที่ได้มีการกำหนดไว้ก่อนหน้านี้ ดังรูป

มาถึงตอนี้คุณก็มี cab file ที่จะใช้ในการสร้างโปรแกรมติดตั้งไว้แล้ว

สร้าง Installer DLL

เป็นการสร้างไฟล์ dll ที่ใช้ในการควบคุมกระบวนการในการติดตั้ง โดยโค้ดที่ใช้จะเป็น ภาษา C#

เริ่มต้นโดยคลิกเลือกที่เมนู File > Add > New Project เมื่อปรากฏหน้าต่าง New Project ให้คุณทำการเลือก Visual C# > Windows > Class Library และกำหนด Name ให้มีค่าเป็น InstallerDLL ดังรูป

คลิกเพื่อดูภาพใหญ่

จะมีโปรเจคใหม่ที่ชื่อ installerDLL ปรากฏขึ้นมา ให้คุณทำการคลิกขวาที่ไฟล์ Class1.cs และเลือก Delete
จากนั้นทำการคลิกขวาที่โปรเจค InstallerDLL แล้วเลือก Add > New Item จะปรากฏหน้าต่างใหม่ ให้ทำการเลือก Installer Class แล้วกำหนดชื่อไฟล์เป็น CustomInstaller.cs ดังรูป

คลิกเพื่อดูภาพใหญ่

จากนั้นให้ทำการแก้ไขโค้ดของไฟล์ CustomInstaller.cs ดังนี้

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using Microsoft.Win32;
using System.IO;

namespace InstallerDLL
{
    [RunInstaller(true)]
    public partial class CustomInstaller : Installer
    {
        private const string CEAPPMGR_PATH = @"SOFTWAREMicrosoftWindowsCurrentVersionApp PathsCEAPPMGR.EXE";
        private const string ACTIVESYNC_INSTALL_PATH = @"SOFTWAREMicrosoftWindows CE Services";
        private const string CEAPPMGR_EXE_FILE = @"CEAPPMGR.EXE";
        private const string CEAPPMGR_INI_FILE = @"sampleApp.ini";
        private const string APP_SUBDIR = @"sampleApp";
        private string TEMP_PATH = Environment.SystemDirectory + @"TEMPsampleApp";


        public CustomInstaller()
        {
            InitializeComponent();
            this.BeforeInstall += new InstallEventHandler(CustomInstaller_BeforeInstall);
            this.AfterInstall += new InstallEventHandler(CustomInstaller_AfterInstall);
            this.BeforeUninstall += new InstallEventHandler(CustomInstaller_BeforeUninstall);
     
        }

        private string GetAppInstallDirectory()
        {
            // get the ActiveSync install directory
            RegistryKey keyActiveSync = Registry.LocalMachine.OpenSubKey(ACTIVESYNC_INSTALL_PATH);

            if (keyActiveSync == null)
            {
                throw new Exception("ActiveSync is not installed.");
            }

            // build the target directory path under ActiveSync
            string activeSyncPath = (string)keyActiveSync.GetValue("InstalledDir");
            string installPath = activeSyncPath + APP_SUBDIR;
            keyActiveSync.Close();
            return installPath;
        }

        void CustomInstaller_BeforeInstall(object sender, InstallEventArgs e)
        {

            // find where we're going to be installed
            string installPath = GetAppInstallDirectory();

            // create the target directory
            Directory.CreateDirectory(installPath);

            // copy our app files to the directory
            foreach (string installFile in Directory.GetFiles(TEMP_PATH))
            {
                File.Copy(installFile, Path.Combine(installPath,Path.GetFileName(installFile)), true);
            }

            // get the path to ceappmgr.exe
            RegistryKey keyAppMgr = Registry.LocalMachine.OpenSubKey(CEAPPMGR_PATH);

            string appMgrPath = (string)keyAppMgr.GetValue(null);
            keyAppMgr.Close();

            // run CeAppMgr.exe to install the files to the device
            System.Diagnostics.Process.Start(appMgrPath,""" + Path.Combine(installPath, CEAPPMGR_INI_FILE) + """);

        }

        void CustomInstaller_AfterInstall(object sender, InstallEventArgs e)
        {

            // delete the temp files
            foreach (string tempFile in Directory.GetFiles(TEMP_PATH))
            {
                File.Delete(tempFile);
            }

        }


        void CustomInstaller_BeforeUninstall(object sender, InstallEventArgs e)
        {

            // find where we are installed
            string installPath = GetAppInstallDirectory();

            // delete the files
            foreach (string appFile in Directory.GetFiles(installPath))
            {
                File.Delete(appFile);
            }

            // delete the folder
            Directory.Delete(installPath);
        }
    }
}

ให้คุณแก้ไขโค้ดในส่วนที่เป็นสีแดง ให้เป็นไปตามชื่อโปรแกรมที่ต้องการติดตั้ง ซึ่งในบทความนี้ผมมีโปรเจค sampleApp ไว้เพื่อแสดงตัวอย่าง

ขณะนี้คุณสามารถคลิกขวาที่โปรเจค InstallerDLL แล้วเลือก Build เพื่อสร้างไฟล์ dll สำหรับควบคุมขั้นตอนการติดตั้ง โดยไฟล์ดังกล่าวจะเก็บไว้ที่ sampleAppInstallerDLLinRelease ดังรูป

สร้าง INI File

ให้คุณทำการสร้างไฟล์ sampleApp.ini ไว้ใน โปรเจค sampleApp โดยอาจจะสร้างเป็น text file ก่อนแล้วค่อย rename ไฟล์มาเป็น sampleApp.ini ก็ได้ ซึ่งมีรายละเอียดของข้อมูลภายในไฟล์ดังต่อไปนี้

[CEAppManager]
Version = 1.0
Component = sampleApp

[sampleApp]
Description = Sample Application for PDA
CabFiles = sampleCab.cab

คุณจะสังเกตุได้ว่า CabFiles มีค่าเป็นชื่อของ cab file ที่ได้จากโปรเจค sampleCab นั่นเอง

สร้าง MSI

ไฟล์ msi เป็นไฟล์ติดตั้งประเภทนึง ที่พบเห็นกันโดยทั่วไป ซึ่งวิธีการในการสร้างไฟล์ดังกล่าวจะมีลำดับขั้นตอนดังต่อไปนี้
เริ่มจาก เลือกเพิ่มโปรเจคใหม่ จากเมนู File > Add > New Project จากนั้นเลือก Project types เป็น Setup and Deployment > Setup Project และกำหนด Name เป็น DeploymentMSI ดังรูป

คลิกเพื่อดูภาพใหญ่

ที่แท็ป File System(DeploymentMSI) ให้ทำการคลิกขวาที่ Application Folder แล้วเลือก Add > Project Output... ดังรูป

คลิกเพื่อดูภาพใหญ่

จะปรากฏหน้าต่าง ขึ้นมา ให้ทำการเลือก Project เป็น InstallerDLL และเลือกด้านล่างเป็น Primary output คลิกปุ่ม OK เพื่อยืนยัน ดังรูป

ที่แท็ป File System(DeploymentMSI) ให้ทำการคลิกขวาที่ ช่องว่าง แล้วเลือก Add Special Folder > System Folder ดังรูป

จากนั้นทำการคลิกขวาที่ System Folder เลือก Add > Folder กำหนดชื่อเป็น Temp ดังรูป

คลิกขวาที่โฟลเดอร์ Temp ทำการเลือก Add > Folder กำหนดชื่อเป็น sampleApp ดังรูป

คลิกขวาที่โฟลเดอร์ sampleApp ทำการเลือก Add > Project output... จะปรากฏหน้าต่างใหม่ขึ้นมา ให้คุณทำการเลือก Project เป็น sampleCab และทำการคลิกปุ่ม OK ดังรูป

คลิกขวาที่โฟลเดอร์ sampleApp อีกครั้ง ทำการเลือก Add > File จากนั้นให้ทำการไปเลือกไฟล์ sampleApp.ini ซึ่งเป็นไฟล์ที่ได้มีการสร้างไว้ ในกระบวนการ สร้าง INI File ผลที่ได้จะแสดงดังรูป

กระบวนการต่อมา จะเป็นการนำเข้า InstallerDLL เพื่อนำมาใช้ควบคุมการติดตั้งของโปรแกรม
โดยเริ่มจาก ทำการคลิกขวาที่โปรเจค DeploymentMSI และเลือก View > Custom Actions ดังรูป

จะปรากฏแท็ป Custom Actions ขึ้นมา ให้ทำการคลิกขวาที่ไอคอน Custom Actions แล้วเลือก Add Custom Action ดังรูป

ที่หน้าต่าง Select Item in Project ให้คุณดับเบิ้ลคลิกที่ Application Folder จะปรากฏรายการของ Primary output from InstallDLL (Active) จากนั้นนั้นให้คลิกปุ่ม OK เพื่อยืนยัน ดังรูป

คลิกเพื่อดูภาพใหญ่

ผลที่ได้คือ มีการนำเข้ากระบวนการทำงานจาก InstallerDLL เข้ามาดังรูป

กระบวนการสุดท้ายคือ ให้คุณทำการคลิกขวาที่โปรเจค DeploymentMSI จากนั้นให้เลือก Build แล้วรอจนกระทั่ง Build succeeded
ผลจากการ ดำเนินการนี้เราจะได้ไฟล์ 2 ไฟล์ คือ msi และ exe ดังแสดงในรูป

ทิ้งทาย

ตัวอย่างจากบทความนี้ คงสามารถนำไปใช้เป็นแนวทางในการสร้างโปรแกรมติดตั้งบน PDA ได้ สำหรับการประยุกต์ใช้ ในบางครั้งต้องการการ แก้ไขค่าของข้อมูลต่างๆ ซึ่งอาจจะประสบปัญหาในเบื้องต้น แต่หากว่าคุณได้ซ้อมมือ ทำตามบทความนี้แล้ว ก็คงพอจะช่วยให้การทำงานของคุณง่ายขึ้นครับ ก็หวังว่าคงเป็นประโยชน์ไม่มากก็น้อย สำหรับเพื่อนๆนักพัฒนาทุกท่าน แล้วพบกันใหม่กับ 9'M

: ดาว์นโหลดตัวอย่างโปรแกรม (ดาว์นโหลด 2,230 ครั้ง)
 

- - - - - - - - - - - - - - ผู้ให้การสนับสนุน- - - - - - - - - - - - - -


49.49.226.83 ความคิดเห็น #57 (จาก IP: 49.49.226.83)
ผมใช้ vs c# ทำตามทุขั้นตอนแต่ติดที่ การทำ Installer ที่คำสั่ง
""" + Path.Combine(installPath, CEAPPMGR_INI_FILE) + """
จากคุณ : Krit / krit.em@gmail.com [2016-06-17 14:37:44]

49.49.226.83 ความคิดเห็น #58 (จาก IP: 49.49.226.83)
vs2008 c# ครับ ขอบคุณครับ
จากคุณ : Krit / krit.em@gmail.com [2016-06-17 14:39:30]

103.5.25.94 ความคิดเห็น #59 (จาก IP: 103.5.25.94)
ครับ คุณ "ติด" แล้วลองนึกต่อว่า คนอื่นเค้าจะทราบหรือไม่ ว่าคุณ"ติด" อะไร อย่างไร มีข้อความ error อะไรไหม๊ ลองเอา error ไปค้นหาดูแล้วหรือยังว่าเกิดจากอะไร ?

ปล. การโพสต์ถามที่ดี ควรให้ข้อมูลให้มากที่สุด
จากคุณ : maddog [2016-06-18 15:21:09]
สอบถาม
  • ห้ามการโฆษณา หากต้องการติดต่อหาลูกค้า ติดต่อโฆษณาโดยตรงได้ที่ webmaster@sourcecode.in.th
  • ห้ามใช้คำหยาบและคำพูดที่ไม่เหมาะสม
  • ขอสงวนสิทธิหากตรวจพบ ข้อความที่ไม่เหมาะสม ข้อความนั้นจะถูกลบทันที
ชื่อ
อีเมล์
รายละเอียด

 
 
คลิปสอนเขียนโปรแกรม
เรียนเขียนโปรแกรมดอทเน็ต
เรียนเขียนโปรแกรมแอนดรอยด์
เรียนเขียนโปรแกรมเบล็คเบอร์รี่
เรียนเขียนโปรแกรมซี ซีพลัสพลัส
เรียนเขียนโปรแกรมจาวา
เรียนการใช้งานลินุกส์
เรียนการเขียนโปรแกรมวินโดว์โฟน
เรียนการเขียนโปรแกรมพีเฮชพี มายเอสคิวเอล
อัตราค่าโฆษณา
 
บทความที่เกี่ยวข้อง

ติดตั้งภาษาไทย ใหักับ Emulator บน Visual Studio 2005 (PPC2003)

ไม่สามารถ Run Emulator ของ Pocket PC2002 แก้ไขอย่างไร (ภาค 2)

ไม่สามารถ Run Emulator ของ Pocket PC2002 แก้ไขอย่างไร

เริ่มต้น การพัฒนา โปรแกรมบน Pocket PC & Smartphone
Tutorial
eVB Tutorial
ASP.NET Webmatrix Tutorial
J2ME Tutorial
C++  Tutorial
Java  Tutorial
PHP Tutorial
ASP Tutorial
 
แบบสำรวจ

Home - Article - Tutorial - Sourcecode - Dev Handbook - Search - WebBoard - Links - About Us

สงวนลิขสิทธิ์ ห้ามคัดลอก ทำซ้ำ แก้ไข ดัดแปลง ไม่ว่าในรูปแบบใด โดยไม่ได้รับอนุญาตเป็นลายลักษณ์อักษร
เลขทะเบียนพาณิชย์อิเล็กทรอนิกส์จากกระทรวงพาณิชย์: 7100503002000
Copyright 2001 SourceCode.in.th