2009. 7. 14. 20:03

Out Of Browser로 사용해오던 실버라이트 윈도우 어플리케이션이 버전이 업데이트 될 수도 있다. 이럴 경우 실버라이트 어플리케이션도 당연히 업데이트 되어야 할 것이다.
이를 위해 API로 업데이트를 위한 코드도 함께 제공된다.(당연한거 아냐..)

    Application.Current.CheckAndDownloadUpdateCompleted += (s, e) =>
    {
        if (e.UpdateAvailable)
        {
                MessageBox.Show(@"어플리케이션 업데이트를 위해 재시작");
        }
    };
    Application.Current.CheckAndDownloadUpdateAsync();


그 외에 Out Of Browser관련 API가 여러가지가 있겠지만.. 눈에 띄는건 아래 함수정도였다.
bool Application.Current.IsRunningOutOfBrowser {get;} 
  : OutOfBrowser로 실행되는지 여부

Out of Browser 설치창 띄우기
private void btnInstall_Click(object sender, RoutedEventArgs e)
{
     if (Application.Current.InstallState == InstallState.NotInstalled)
     {
          Application.Current.InstallStateChanged += new EventHandler(Current_InstallStateChanged);
          Application.Current.Install();
     }           
}

void Current_InstallStateChanged(object sender, EventArgs e)
{
    MessageBox.Show("설치 완료");
}

네트워크 상태변경 이벤트
using System.Net.NetworkInformation;

...
NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged);
...

void NetworkChange_NetworkAddressChanged(object sender, EventArgs e)
{       
  if (NetworkInterface.GetIsNetworkAvailable())
  {  
    // 연결됨
  }
  else
  {
    // 연결안됨
  }
}


블로깅 열심히 했더만.. 실버라이트 공식 사이트에 동영상이 있네요 ㅜㅜhttp://silverlight.net/learn/learnvideo.aspx?video=187318


결론으로
1. OutOfBrowser 기술을 이용하여 online, offline 작업이 가능하다고 하니 잘 응용하면 정말 윈도우 어플리케이션 같은 프로그램이 만들어질 수도 있을 것 같다. (격리파일과 함께..)
2. 못내 아쉬운점은 XAP파일이 업데이트가 되면 실버라이트 윈도우 어플리케이션에서는 실행 직전에 버전을 확인하여 자동업데이트 되었으면 좋았을텐데.. 그렇지 않고.. API를 통하여 업데이트를 하고 재시작을 해야하는 불편함이 있다.
3. 실버라이트 윈도우 어플리케이션이 업데이트되면 업데이트 메시지를 보여주고 직접 종료하고 싶었지만 종료 함수가 있는건지 없는가 보다.... (찾지 못했다.)
Posted by CoolDragon