Silverlight 4 elevated trust OOB Auto update


Silverlight 4 เมื่อรันนอกเบราว์เซอร์ และกำหนด Require elevated trust จะพบปัญหา ไม่สามารถ Auto update เวอร์ใหม่ได้

   image

รูปที่ 1 Require elevated trust when running outside the browser

 

และตอน Install เราจะได้หน้าต่างแจ้งเตือนว่า ผู้เผยแพร่(Publisher) ไม่ผ่านการตรวจสอบ(Verified) ซึ่งถ้าเราทำการยินยอมติดตั้ง  ด้วยกรกด Install เมื่อมีแอปฯ มีเวอร์ชั่นใหม่ จะไม่ยอมให้ update

1

เราไปดูวิธีการแก้ไข

ขั้นตอนที่ 1  กำหนดให้ Silverlight รันนอกเบราว์เซอร์

2

 

ขั้นตอนที่ 2 เราจะลงลายเซนต์ดิจิตอล (Local) โดยใช้ VS2010 สร้าง Certificate ให้

3

ในรูป password=sl4

 

เมื่อ VS2010 สร้าง Certificate เรียบร้อย เราจะได้ไฟล์ *.pfx ในโปรเจ็กต์ Silverlight ดังรูป

4

 

ให้เปิดมันขึ้นมาเพื่อ Import Certificate เข้าไปในเครื่องไคลเอ็นต์ โดยการคลิกขวาบนโปรเจ็กต์ Silverlight => Open Folder in Windows Explorer

5

 

ทำการดับเบิ้ลคลิกบนไฟล์ SL_OOB_AutoUpdate_TemporaryKey.pfx => Next

6

 

Next

7

 

ใส่ password ตอนเราสร้าง Certificate = SL4 แล้วคลิก Next

8

 

ให้เลือก Place certificate in the following store => Brows… แล้วเลือก Trusted Root Certificate Authorities => OK, Next

9

 

คลิก Finish

10

 

คลิก Yes

11

 

Import เรียบร้อย

12

 

ทีนี้ลองรัน แอปฯ ใหม่ แล้วคลิก Install จะเห็นว่า ไม่หน้าเตือน ผู้เผยแพร่ ไม่ผ่านการตรวจสอบ ให้เห็นแล้ว คลิก Install เลย

13

 

แอปฯ รันนอกเบราว์เซอร์เรียบร้อย ปุ่ม Install จะกลายเป็น Update

14

 

ให้ Build Project Silverlight หนึ่งครั้ง และ Build Project ASP.NET หนึ่งครั้งเพื่อจำรอง เหตุการณ์ว่า แอปฯ มีการปรับปรุงเวอร์ชั่นใหม่  จากนั้นทำการเปิด แอปฯ รันนอกเบราว์เซอร์ผ่านไอคอนหน้า Desktop และกดปุ่ม Update จะเห็นว่า แอปฯของเรายอมให้ Auto update แล้ว

15

 

มีโค้ดนิหน่อยเกี่ยวกับ การเช็ค Update

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_AutoUpdate
{
    public partial class Home : Page
    {
        public Home()
        {
            InitializeComponent();
           Loaded += new RoutedEventHandler(Home_Loaded);

            Application.Current.CheckAndDownloadUpdateCompleted += new CheckAndDownloadUpdateCompletedEventHandler(Current_CheckAndDownloadUpdateCompleted);
        }

        void Current_CheckAndDownloadUpdateCompleted(object sender, CheckAndDownloadUpdateCompletedEventArgs e)
        {
            if (e.UpdateAvailable)
            {
                MessageBox.Show(“ตรวจสอบพบเวอร์ชั่นใหม่ กรุณาปิด-เปิดโปรแกรม เพื่ออับเดตเวอร์ชั่นใหม่”, “Application updated”, MessageBoxButton.OK);
            }
        }

        void Home_Loaded(object sender, RoutedEventArgs e)
        {
            if (Application.Current.IsRunningOutOfBrowser)
                btInstall.Content = “Update”;
            else
            {
                if (Application.Current.InstallState == InstallState.Installed)
                    btInstall.Visibility = System.Windows.Visibility.Collapsed;
                else
                    btInstall.Visibility = System.Windows.Visibility.Visible;
            }
        }

        // Executes when the user navigates to this page.
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
        }

        private void btInstall_Click(object sender, RoutedEventArgs e)
        {
           if (Application.Current.IsRunningOutOfBrowser)
            {
                Application.Current.CheckAndDownloadUpdateAsync();
                return;
            }

            if (Application.Current.InstallState == InstallState.NotInstalled)
                Application.Current.Install();
        }
    }
}

 

การลบ Certificate ที่เรา Import เมื่อสักครู่ทิ้งไป สามารถทำได้ดังนี้

ไปที่ Start=>Run พิมพ์ certmgr.msc แล้ว Enter จะได้หน้าจอโปรแกรม certificate manage ให้คลิกไปที่โหนด Trusted Root Certificate Authorities เลือก certificate ที่เรา Import ไปเมื่อครู่ => Delete

d1

 

คลิก YES

d2

 

และคลิก YES

d3

 

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

d4

 

 

Source Code:

http://cid-7d608959d854cb28.office.live.com/embedicon.aspx/SourcesCode/2010-12-24_SL_OOB_AutoUpdate.zip

 

โดย: MVP Nuchit Atjanawat

เกี่ยวกับ

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
One comment on “Silverlight 4 elevated trust OOB Auto update

ใส่ความเห็น

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: