실버라이트 2 RTW는 최종 사용자를 위해 디버깅 관련 어셈블리들이 제거된 약 4.6메가 정도의 런타임이 배포 되죠.
하지만 개발자용 런타임은 이런저런 어셈블리들이 더 추가되어 있어서 약 6.5메가 정도로 배포 되고요.

만약 개발자가 개발자용 런타임을 설치하지 않고 일반 사용자용 런타임만을 설치한 경우 비주얼 스튜디오에서 디버깅으로 실행할 때 다음과 같은 메시지를 만나게 되죠.

Unable to start debugging. The Silverlight managed debugging package isn't installed.

그럼 개발자용 런타임은 어디있냐고요?

기본적으로 Silverlight 2 Tools for Visual Studio(Silverlight_Tools.exe)를 설치하면 SDK와 다른 패치들과 함께 개발자용 런타임이 설치되죠. 그러나 이 과정은 정말로 오래 걸리므로 그냥 개발자용 런타임만 따로 얻으려면 다음의 링크에서 받으면 돼요.

http://go.microsoft.com/fwlink/?LinkId=127693

그런데 위의 링크는 Silverlight_Tools.exe의 압축을 푼 후 그 안에 있는 ParameterInfo.xml 파일을 열어서 얻을 수 있었는데요, 구글에서 Silverlight 2 Developer Runtime으로 검색하면 위와는 다른 링크를 던져주는군요.

http://go.microsoft.com/fwlink/?LinkId=119972

어느게 맞는 건지는 모르겠는데 아무래도 위쪽의 링크가 더 정확하겠죠?
정확히 아시는 분 제보를 바랍니다. :)

P.S.
런타임 다시 깔 때 꼭 Visual Studio를 닫아 두세요. 가끔 띄워 놓은 상태에서 런타임 깔다가 비주얼 스튜디오가 죽을 때가 있어요.


저작자 표시 동일 조건 변경 허락
신고
Posted by gongdo

실버라이트 2에 들어와서는 간편한 <object>태그 만으로 실버라이트 플러그인을 초기화할 수 있기 때문에 더 이상 silverlight.js를 사용하지 않아도 되게 되었죠.

그러나 몇몇 시나리오에서 여전히 silverlight.js를 사용하여 초기화 할 필요가 있는데요,

  • 특정 버전의 실버라이트를 설치할 수 있는 브라우저인지 여부 검사
  • 특정 버전의 실버라이트가 설치되어 있는지 여부 검사
  • 실버라이트 설치가 완료되었을 때 곧바로 애플리케이션을 초기화

이런 상황을 위해 silverlight.js에 다양한 메서드와 프로퍼티가 준비되어 있죠.

현재 silverlight.js는 새로운 브라우저나 OS에 대한 빠른 대응을 위해 별도로 관리되고 있어요. 특이한 점은 기존의 기능 중 실버라이트를 지원하는 브라우저인지 여부를 체크하는데 사용했던 Silverlight.supportedUserAgent() 메서드가 더 이상 silverlight.js에 포함되지 않고 silverlight.supportedUserAgent.js라는 별도의 파일로 관리된다는 점이죠. 이 두 파일의 최신 버전은 각각 다음의 링크에서 다운로드 받을 수 있어요.

더 자세한 내용은 What's new in the Silverlight 2 Beta 2 SDK's Silverlight.js file? 에서 실버라이트 2 베타 2 SDK에 적용된 silverlight.js 파일에 대한 내용을 살펴볼 수 있어요. 저도 몰랐던 다양하고 유용한 기능들이 추가되었더군요.

silverlight.js 활용하여 다음과 같은 시나리오의 초기화를 수행하는 간단한 프로젝트를 첨부했으니 참고하세요.

  • 실버라이트를 설치 할 수 있는지 여부 검사
  • 실버라이트가 설치 되었는지 여부 검사
  • 실버라이트가 설치 되지 않았을 경우 커스터마이징한 HTML UI 표시
  • 실버라이트 설치가 완료된 경우 애플리케이션을 자동으로 초기화(단, IE 전용)

다운로드 :


※추가 :
혹시 이번 업데이트 이후에 비주얼 스튜디오에서 디버깅이 되지 않는다거나 하면 Silverlight Tools Beta 2 for Visual Studio 2008을 다시 설치해 보세요.
제 경우는 특별히 기존 버전의 Tools를 제거하지 않았어도 문제가 없었는데, 혹시 문제가 있다면 KB949325를 제거하라는 군요.

또한 저는 어디까지나 영문 버전만을 사용하기 때문에 한글판 Visual Studio나 Tools에 대해서는 어떻게 작동될지 알지 못한다는 점도 참고해 주세요.
신고
Posted by gongdo
실버라이트 2는 1.0과는 달리 <object>태그를 사용하여 마치 플래시나 미디어 플레이어를 올리는 것 처럼 쉽게 올릴 수 있게 되어 있고 <object></object> 태그 사이에 원하는 HTML 디자인을 넣어서 실버라이트가 설치되지 않았을 때 화면도 매우 쉽게 구성할 수 있게 되어 있죠.

그런데, 한가지 문제는 이렇게 해서 설치를 마친 후에 자동으로 실버라이트 애플리케이션이 초기화되지 않는다는 점인데요, 이것을 해결하려면 어쩔 수 없이 1.0에서 했던 Silverlight.js와 createSilverlight 함수를 만들어서 사용하는 수 밖에 없어요.

생각해보면 그리 어렵지 않은데 막상 구현하려면 막막한게 사실이죠.
일단 다음 다운 받고 실버라이트 2를 제거한 후 SL2Install_web/SL2InstallTestPage.html 파일을 열어 데모를 실행해볼 수 있어요.
SL2Install.zip

실버라이트 설치 후 자동으로 실행하기 데모


원리는 아주 간단한데요, Silverlight.js에 포함된 Silverlight.isInstalled 함수와 Silverlight.available 및 Silverlight.us.Browser 속성을 사용하여 현재 상태에 따라 처리할 수 있게 했어요. 만약 실버라이트가 설치되어 있으면 정상적으로 생성하면 그만이고, 그렇지 않다면 설치 화면을 보여주고 3초 후에 설치가 완료되었는지를 계속 검사해요. 그러다가 실제로 사용자가 설치 완료하면 다시 한번 실버라이트 생성을 시도하죠.
이러한 역할을 하는 파일이 SL2Install.js인데요, 관심있는 분들은 분석을 해보세요.

단, 이 방법은 IE에서만 작동하는 걸로 알려져 있어요. 아쉽게도 다른 브라우저에서는 자동으로 리프레시 되지 않아서 브라우저를 껐다가 켜야 할 거에요.

사용 방법은 간단해요.
    <div id="silverlightControlHost">
        <div id="silverlightInstall">
            <a href="http://go.microsoft.com/fwlink/?LinkID=108182">
                Microsoft Silverlight 설치하기<br />
                <img src="Silverlight.png" alt="실버라이트 설치" style="border:none 0px #FFFFFF" />
            </a>
        </div>
    </div>
   
    <script type="text/javascript">
        Silverlight.createWithInstall(
            'mySilverlight',
            'ClientBin/SL2Install.xap',
            'silverlightControlHost',
            'silverlightInstall',
            '100%', '100%', null
        );
    </script>

위의 코드에서 굵게 표시된 글자 부분만 체크하면 되는데요,
먼저 silverlightControlHost DIV태그는 실버라이트 애플리케이션이 호스팅될(올라갈) 위치이고,
silverlightInstall DIV는 실버라이트가 설치되지 않았을 때 보여줄 HTML 디자인이에요.
당연히 실버라이트 런타임을 다운받을 수 있는 링크를 연결해줘야 겠죠?
링크는 2.0 beta1의 경우 http://go.microsoft.com/fwlink/?LinkID=108182 이걸 넣어주면 되는데 이 링크는 후에 바뀔 가능성도 염두해야 해요.

마지막으로 위의 두 DIV 태그를 적당한 위치에 배치했으면 HTML의 제일 바닥쯤에 <script>태그를 넣고 Silverlight.createWithInstall(고유ID, XAP위치, HostDIV태그ID, 설치DIV태그ID, 너비, 높이, 유저데이터); 를 호출하면 Host DIV 위치에 실버라이트 애플리케이션이 생성되죠.

피드백 바랍니다. ~ :D
신고
Posted by gongdo


티스토리 툴바