Silverlight 5 full trust application in the browser

Silverlight има какво да предложи (все още), макар и все по-малко и все по-трудно. Едно от предимствата достъпни във версия 5, които може да се използва е връзка с хардуер/ COM/ native call в браузър. Отделен е въпроса “защо” и “кой” би искал да се направи по този начин. Във всеки случай, ако сте стигнали дотам има няколко gotchas, които е хубаво да се знаят.
За да имате достъп до файлова система, хардуер и т.н., applet-а е нужно да е с повишени права, което става от настройките на проекта : Require elevated trust when running in-browser. Всичко работи идеално, ако аплета се хоства в localhost или 127.0.0.1 – в момента, който се изпълнява в Internet/ Local Internet всичко изведнъж се скапва и се получава грешки от рода на

За да работи нормално и тук са необходими няколко стъпки:

  • аплетът трябва да е подписан (настройки на проекта – Signing)
  • горния сертификат трябва да присъства в Trusted Publishers на всички клиентски компютри (!!!)
  • ако е self-signed, то разбира се трябва да присъства и в Trusted Root authorities
  • в Registry на всяка клиентска машина е необходимо да се позволи изпълнението на аплети с повишени права в бразуър (ако се изпълнява out-of-browser това не е необходимо).

Необходимите ключове, които търпят промяна са

както е описано в MSDN.
Не измислих нищо по-добро от проверка дали аплета върви с повишени права с

и ако не – да прехвърля към страница с допълнителна информация как да се разреши проблема. А именно еднократно изпълнение на изпълним файл (по-добри идеи?), който променя настройките в Registry и инсталира нужните сертификати.

За инсталиране на сертификатите може да се използва например:

а за настройките в registry:

 

Silverlight.js под Firefox 3

При приложение, което използва Silverlight 1.0 (Silverlight.js) под Firefox 3 се стига до неприятния момент винаги да показва, че Silverlight не е инсталиран и трябва да се изтегли наново.
Разбира се, повторното изтегляне и инсталиране не води до абсолютно никакъв резултат (освен загубено време).
Проблемът се оказа, че “стария” Silverlight 1.0 няма понятие за Firefox 3 като browser, поради което винаги се изкарва съобщение, че е нужна повторна инсталация.

Решението и причините са описани тук, като общо взето всичко се свежда до подмяна на Silverlight.js файла с по-нова версия (такава от 2.0), която може да се изтегли от http://code.msdn.microsoft.com/silverlightjs

Като цяло, не виждам причина да се използва Silverlight 1.0 за ново RIA приложение, при положение че Silverlight 2 е с много повече възможности и превъзхожда 1.0 в почти всяко едно направление. Но при наличие на неработещо 1.0 приложение, което трябва да се подкара, горното е повече от добре дошло.