Silverlight OOB bat file Installation


image

 

โปรแกรม Silverlight…

มันถูกบีบอัดอยู่ในรูปของไฟล์ XAP…

โดยไฟล์ XAP นี้…

จะถูก Silverlight runtime ดาวน์โหลด…

จากโฮสของ Silverlight…ที่วางอยู่บนเว็บเซอร์ฟเวอร์…

ซึ่งก็คือไฟล์ *.aspx หรือ ไฟล์ *.html…

ที่มี tag …

โดยระบุแหล่งที่เก็บไฟล์ XAP อยู่ภายใน…

 

เมื่อไฟล์ XAP ถูกโหลดลงไปที่ไคลเอ็นต์เรียบร้อย…

จะถูกรันด้วยโปรแกรม Silverlight runtime อีกครั้ง

 

นั่นแสดงว่า…

ถ้าไฟล์ XAP และไฟล์โฮส…แม้จะอยู่ ณ ใดก็ตาม…

ถ้าไฟล์โฮสถูกเปิดได้โดยไคลเอ็นต์…

Silverlight runtime ก็สามารถโหลดไฟล์ XAP เข้าไปรันได้…

 

คำถาม?…

จึงเกิดคำถามว่า…

Silverlight OOB (Out-of-Browser)…

ถ้า Copy ใส่ flash drive…

แล้วนำไป Install ลงบนเครื่องไคล์เอ็นต์…

มันจะยังสามารถ Auto update ได้หรือไม่?…

image

คำตอบ:

สามารถทำได้…

แต่ต้องติดตั้งผ่านโปรแกรมพิเศษชื่อ…

sllauncher.exe

 

โปรแกรม sllauncher.exe

ตัวโปรแกรม sllauncher.exe จะถูกติดตั้งพร้อม Silverlight runtime อยู่ที่พาธ…

“%ProgramFiles%\Microsoft Silverlight\sllauncher.exe”

ตามพาธที่ OS ติดตั้งอยู่…

image

 

โดยโปรแกรม sllauncher.exe ทำหน้าที่
ในการการสร้างหน้าต่างเบราว์เซอร์…
แบบสแตนด์อะโลนที่โฮสต์คอนโทรลภายในได้…
โดยหน้าต่างเบราว์เซอร์นี้จะเป็นกรอบเปล่าๆ…
ไม่มี
toolbar, favorites, ปุ่ม navigation และอื่นๆ…
จึงไม่แปลกที่มันยังคงทำงาน…
อยู่ในกรอบของเบราว์เซอร์(
sandbox)…
(ส่วนหนึ่งในเนื้อหาหลักสูตร:
Introduction to Silverlight 4
)

 

ขั้นตอนการติดตั้งโปรแกรม Silverlight OOB
โดยผ่านโปรแกรม
sllauncher.exe มีขั้นตอนดังนี้:

ขั้นตอนการติดตั้งผ่านโปรแกรม sllauncher.exe

·         ขั้นตอนที่หนึ่ง: นำโปรเจ็กต์ในบทความ Silverlight 4 OOB Access Local DB มาใช้ต่อ

·         ขั้นตอนที่สอง: ปรับแต่งหน้า Home

·         ขั้นตอนที่สาม: สร้าง batfile เพื่อเรียกโปรแกรม sllauncher.exe

·         ขั้นตอนที่สี่: ทดสอบติดตั้งผ่าน batfile          

·         ขั้นตอนที่ห้า: ทดสอบ Auto update

 

ขั้นตอนที่หนึ่ง: นำโปรเจ็กต์ในบทความ Silverlight 4 OOB Access Local DB มาใช้ต่อ

ก่อนอื่นไปทำการดาวน์โหลดตัวอย่างโปรเจ็กต์…

ในบทความ Silverlight 4 OOB Access Local DB 

แล้วทำการแตกไฟล์…

เปิดโปรเจ็กต์…

เพื่อไปทำการปรับแต่งหน้าจอ Home

ตามในขั้นตอนที่สอง…

 

ขั้นตอนที่สอง: ปรับแต่งหน้า Home

เปิดไฟล์ Home.xaml
แล้วปรับแต่งหน้าจอ

เพื่อใส่ปุ่ม Install และปุ่ม Update
ดังรูป…

image

 

Result: Silverlight in Browser…

image

 

XAML:

Home.xaml

<navigation:Page x:Class=”SL_OOB_AccessLocalDB.Home”

    xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation&#8221;

    xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml&#8221;

    xmlns:d=”http://schemas.microsoft.com/expression/blend/2008&#8243; xmlns:mc=”http://schemas.openxmlformats.org/markup-compatibility/2006&#8243;

    xmlns:navigation=”clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation”

    mc:Ignorable=”d” d:DesignWidth=”640″ d:DesignHeight=”480″

    Title=”Home”

    Style=”{StaticResource PageStyle}”>

 

    <Grid x:Name=”LayoutRoot”>

        <ScrollViewer x:Name=”PageScrollViewer” Style=”{StaticResource PageScrollViewerStyle}” >

 

            <StackPanel x:Name=”ContentStackPanel” VerticalAlignment=”Top”>     

                <TextBlock x:Name=”HeaderText” Style=”{StaticResource HeaderTextStyle}”

                                   Text=”Home”/>

                <TextBlock x:Name=”ContentText” Style=”{StaticResource ContentTextStyle}”

                                   Text=”Home page content”/>

                <StackPanel 

                            Name=”stackPanel1″

                           

                            Orientation=”Horizontal”

                            Margin=”5″>

                    <Button Content=”Install”

                            Height=”23″

                            Name=”btInstall”

                            Width=”75″

                            Margin=”2″

                            Click=”btInstall_Click” />

                    <Button Content=”Update”

                            Height=”23″

                            Name=”btUpdate”

                            Width=”75″

                            Margin=”2″

                            Click=”btUpdate_Click” />

                </StackPanel>

            </StackPanel>

           

 

        </ScrollViewer>

    </Grid>

 

</navigation:Page>

 

 

C#:

เขียนโค้ด บนปุ่ม Install และปุ่ม Update

btInstall_Click()

private void btInstall_Click(object sender, RoutedEventArgs e)

        {

            if (Application.Current.InstallState == InstallState.NotInstalled)

            {

                Application.Current.InstallStateChanged += (s, args) => { checkInstall(); };

                Application.Current.Install();

            }

        }

 

#โค้ด บนปุ่ม Install ใช้สำหรับการติดตั้งผ่าน Host ซึ่งในบทความนี้ไม่ได้ใช้ เราจะใช้การติดตั้งผ่าน batfile

btInstall_Click()

private void btInstall_Click(object sender, RoutedEventArgs e)

        {

            if (Application.Current.InstallState == InstallState.NotInstalled)

            {

                Application.Current.InstallStateChanged += (s, args) => { checkInstall(); };

                Application.Current.Install();

            }

        }

 

 

โค้ดสมบูรณ์:

Home.xaml.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Navigation;

using System.Windows.Shapes;

 

namespace SL_OOB_AccessLocalDB

{

    public partial class Home : Page

    {

        public Home()

        {

            InitializeComponent();

         

            //ดึงเวอร์ชั่นของโปรแกรม

            var appName = Application.Current.GetType().Assembly.FullName.Split(‘,’)[1];           

            this.HeaderText.Text = appName.Replace(“=”, ” “);

 

            //เมธอดตรวจสอบสถานะการติดตั้ง

            checkInstall();

 

            //ตรวจสอบโปรแกรม Silverlight ทำงานนอกเบราว์เซอร์

            //เมื่อ IsRunningOutOfBrowser = True

            if (Application.Current.IsRunningOutOfBrowser)

            {

                //สร้างอีเว้นต์ CheckAndDownloadUpdateCompleted

                //โดยใช้ Lambda expressions (=>)

                //ในการกำหนด delegate logic inline

                Application.Current.CheckAndDownloadUpdateCompleted += (s, args) =>

                {

                    if (args.UpdateAvailable)

                    {

                        MessageBox.Show(ตรวจสอบ พบโปรแกรมเวอร์ชั่นใหม่….\rกรุณาปิดเปิดโปรแกรมเพื่อทำงานในเวอร์ชั่นใหม่…”,

                            ผลการตรวจสอบ…”, MessageBoxButton.OK);

                    }

                    else

                    {

                        MessageBox.Show(ตรวจสอบ ไม่พบโปรแกรมเวอร์ชั่นใหม่….”, ผลการตรวจสอบ…”, MessageBoxButton.OK);

                    }

                };

            }

        }

 

        private void checkInstall()

        {

            //ถ้าติดตั้งโปรแกรม Silverlight OOB แล้ว [InstallState = Installed]

           

            //Disable ปุ่ม btInstall

            btInstall.IsEnabled = !(Application.Current.InstallState == InstallState.Installed);

 

            //Enable ปุ่ม btUpdate

            btUpdate.IsEnabled = (Application.Current.InstallState == InstallState.Installed);

        }

 

      

 

        // Executes when the user navigates to this page.

        protected override void OnNavigatedTo(NavigationEventArgs e)

        {

        }

 

        private void btInstall_Click(object sender, RoutedEventArgs e)

        {

            //ถ้ายังไม่ติดตั้งโปรแกรม Silverlight OOB [InstallState=NotInstalled]

            if (Application.Current.InstallState == InstallState.NotInstalled)

            {

                //สร้างอีเว้นต์ InstallStateChanged

                //เพื่อ Disable ปุ่ม btInstall เมื่อติดตั้งเรียบร้อยแล้วผ่านเมธอด checkInstall()

                Application.Current.InstallStateChanged += (s, args) => { checkInstall(); };

 

                //ติดตั้งโปรแกรม Silverlight OOB โดยเรียกเมธอด Install()

                Application.Current.Install();

 

            }

        }

 

     

 

        private void btUpdate_Click(object sender, RoutedEventArgs e)

        {

            //ตรวจสอบ และดาวน์โหลดโปรแกรมเวอร์ชั่นใหม่

            //ผ่านเมธอด CheckAndDownloadUpdateAsync()

            Application.Current.CheckAndDownloadUpdateAsync();

        }

    }

}

 

 

เมื่อทำการปรับแต่งหน้า Home แล้ว…

ไปสร้าง bat file เพื่อติดตั้งโปรแกรม…
ผ่านโปรแกรม
sllauncher.exe

ซึ่งเป็นเป้าหมายในบทความนี้…image

 

ขั้นตอนที่สาม: สร้าง batfile เพื่อเรียกโปรแกรม sllauncher.exe

 

ตัวเลือกสำหรับการติดตั้ง (Options)

สำหรับการติดตั้งผ่านโปรแกรม sllauncher.exe…

มีพารามิเตอร์ที่สำคัญให้เลือกอยู่ 4 ตัวดังนี้…

1. /install:”path-toXAP-File”:…

เป็นจุดที่ระบุพาธชี้ไปยังไฟล์XAPที่คุณต้องการติดตั้ง…โดยพาธอาจจะอยู่บน CD, flash drive หรือจะอยู่ใน… Network drive…
จุดนี้เป็นสิ่งจำเป็นที่ขาดมิได้…

2. /origin:”URI-to-origin”:…

จุดนี้นี้เป็นเป็นการระบุ ต้นทางของไฟล์ XAP…
ที่คุณดิพลอย์ โปรแกรม
Silverlight ไปวางบน host…
เมื่อคุณมีการ
update โปรแกรมใหม่…มันจะไปหาที่นี่…

3. /shortcut:desktop+startmenu:…

เป็นการสร้าง Shortcut ในการเข้าถึงโปรแกรม…
โดยใช้
Startmenu + Desktop

4. /overwrite:

เป็นการยืนยันในการติดตั้งทับไฟล์ XAP
ถ้ามีเวอร์ใดๆ ติดตั้งอยู่ก่อนแล้ว…

 

สมมติว่าสถานการณ์ต่อไปนี้เราจะทำการติดตั้งโปรแกรม silverlight (SL_OOB_AccessLocalDB.xap) ที่ต้นทางการดิพลอย์อยู่ที่: http://203.107.158.164/oob/ClientBin/SL_OOB_AccessLocalDB.xap

ส่วนไฟล์ XAP ของเราอยู่ที่พาธ S:\OOB\ClientBin\ SL_OOB_AccessLocalDB.xap

 

ขั้นตอนการเขียนคำสั่ง batfile

เราจะเขียนคำสั่ง batfile ได้ตามขั้นตอนดังนี้:

> สร้างโฟลเดอร์ เช่น S:\OOB

> Copy โฟลเดอร์ ClientBin จากโปรเจ็กต์ SL_OOB_AccessLocalDB.Web ไปวางที่พาธ S:\OOB

> เปิดโปรแกรม Notepad แล้วใส่ข้อมูลดังนี้

คำสั่ง batfile

“%ProgramFiles%\Microsoft Silverlight\sllauncher.exe/install:“S:\OOB\ClientBin\SL_OOB_AccessLocalDB.xap” /origin:“http://203.107.158.164/oob/ClientBin/SL_OOB_AccessLocalDB.xap” /shortcut:desktop+startmenu /overwrite

> แล้วบันทึกชื่อไฟลเป็น install.bat ไปวางที่โฟลเดอร์ S:\OOB

imageimage

เมื่อสร้าง batfile install เป็นที่เรียบร้อยแล้ว…

ไปทำการทดสอบกาติดตั้งตามขั้นตอนที่สี่…

 

ขั้นตอนที่สี่: ทดสอบติดตั้งผ่าน batfile    

ทำการ Copy โฟลเดอร์ OOB

ใส่ flash drive แล้วนำไปติดตั้งบนเครื่องไคล…

โดยการคลิกขวาบนไฟล์ Install.bat เลือก Run as administrator

image

Batfile จะทำการไปเรียกโปรแกรม sllauncher.exe โดยผ่านพารามิเตอร์ต่างๆ ตามที่กล่าวไปแล้ว จะได้หน้าจอ console ดังรูป

image

คุณจะเห็น Shortcut ของโปรแกรมอยู่ที่ Desktop และ Startupmenu ดังรูป

imageimage
Desktop                          Startupmenu

 

Result: Silverlight Out-of-Browser…

image

 

ขั้นตอนที่ห้า: ทดสอบ Autoupdate

ลองเปลี่ยนเวอร์ชั่นโปรแกรม…ดังนี้…

·         คลิกขวาบนโปรเจ็กต์ SL_OOB_AccessLocalDB> Add>New Item..

·         บนหน้าต่างพรอปเพอร์ตี้โปรเจ็กต์ SL_OOB_AccessLocalDB>คลิกแทบ Silverlight…คลิกปุ่ม Assembly Information…

image

·         บนหน้าต่าง Assembly Information…

·         ระบุเลขที่เวอร์ชั่นดังรูป…

image

แล้วทำการ Build โซลูชั่นใหม่…

แล้วดิพลอย์ขึ้นเวอร์ฟเวอร์…

ดังนี้:

 

Publish Silverlight Application…

ทำการ publish โปรแกรม Silverlight ขึ้น Host (เว็บเซอร์ฟเวอร์)…

โดยทำการคลิกขวาบนโปรเจ็กต์ SL_OOB_AccessLocalDB.Web…เลือก Publish…

image

บนหน้าต่าง Publish Web…

Publish method:เลือก File System

Target Location:ระบุ IP Address เว็บเซอฟเวอร์

จากนั้นคลิก OK

image
โดยโฟลเดอร์
oob เป็น Virtual Directory ที่ได้เพิ่มไว้ก่อนหน้านี้แล้ว

 

จากนั้นทำการรันโปรแกรมจาก Shortcut บน Desktop

เมื่อเปิดโปรแกรมขึ้นมาเป็นที่เรียบร้อย…

ทำการกดปุ่ม Update

image

คุณจะได้หน้าต่างแสดงการ Update โปรแกรม…

ให้ทำการปิดโปรแกรม และเปิดใหม่…

image

จะเห็นว่าคุณจะได้โปรแกรมเวอร์ใหม่เรียบร้อยแล้ว… 

image

 

#เพิ่มเติม:

สำหรับ Silverlight OOB ถ้าเลือก elevated trust…

เพื่อให้สามารถเข้าถึงทรัพยากรบนเครื่องไคลเอ็นต์มากขึ้น…

image

ในการ Auto update ต้อง Signing ให้มันด้วย

image

สำหรับการ Signing สามารถติดตามได้ที่บทความ:

Silverlight 4 elevated trust OOB Auto update: https://janawat.wordpress.com/2010/12/23/silverlight-4-elevated-trust-oob-auto-update/

 

แหล่งข้อมูลดาวน์โหลด:

แหล่งข้อมูลอ้าอิง:

·         Silverlight 4 elevated trust OOB Auto update: https://janawat.wordpress.com/2010/12/23/silverlight-4-elevated-trust-oob-auto-update/

 

·         Silverlight Desktop Applications Access Local database: https://janawat.wordpress.com/2011/06/27/silverlight-desktop-applications-access-local-database/

 

image

 

** รู้จักกับผู้สอน อ.นุชิต **
JANAWAT Blog: https://janawat.wordpress.com
Nuchit’s Profile @microsoft https://mvp.support.microsoft.com/profile/nuchit
Facebook: https://www.facebook.com/nuchit
Twitter:
http://twitter.com/janawat

เกี่ยวกับ

Nuchit Atjanawat is a Microsoft MVP, GreatFriends Community Leader, WindowsITPro Columnist(Mr.Nano), Silverlight Business Application Instructor, Speaker in various Microsoft events, Author, passionate Blogger and a Software Engineer by profession. He has a very good skill over Silverlight, LightSwitch, C#, XAML & Blend. He shares his technical findings, tutorials in his technical blog. Follow his Blog and Facebook page to be updated on latest articles. - Technical Blog: https://janawat.wordpress.com - WindowsITPro Columnist(Mr.Nano): http://windowsitpro.net - The GreatFriends.Biz Community Discussion Board (nano): http://greatfriends.biz - witter: https://twitter.com/janawat - Facebook Page: https://www.facebook.com/nuchit - Instructor: http://bit.ly/GF250-01, http://bit.ly/GF150-02

เขียนใน Silverlight

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

In Archive
%d bloggers like this: