OffBeatMammal

Searching for monkeys in Cyberspace

Silverlight Install and Logging Framework

clock March 15, 2010 22:06 by author offbeatmammal

So, you've just created a great Silverlight application and you want everyone to enjoy it. You, of course, have the Silverlight runtime already installed but what about users who don't have a current version of Silverlight or, worse, are on an unsupported platform?

You could leave them with the standard silverlight.js experience but, let's be honest, it's probably not going to reflect that well against the carefully crafted user experience of your application is it? That said, you've got deadlines and developing install experiences isn't the most exciting task on your to-do list is it?

The Silverlight Install and Logging Framework (SILF) is designed to make that job a little easier for you. Without much more work than designing some screens for a few possible install conditions it handles all the logic and guides the user through install or upgrade experiences and, if you want, even logs the results so you can see what’s working and where you need to tweak the solicitation to make it more attractive.

You can grab the files you need from the temporary home of SILF (hopefully it’ll move to Codeplex soon) and kick the tires (or even the tyres depending on where you’re from ... it’s just javascript so it’s easy to localize, or is that localise!)

Although the full blown thing looks a bit intimidating it’s actually really easy to get started with the basics and then elaborate

<head>
 
<!-- Install the Silveright install and logging controller -->
<script type="text/javascript" src="SILF.js"></script>
 
<script type="text/javascript">
// Configure logging parameters
<!--
SILF.minSlVersion = "3.0.50106.0"; // Required Silverlight version
SILF.SilverlightControlHost = "silverlightControlHost"; // div which contains Silverlight control
 
// Use this section to configure messages
SILF.PromptInstall = "Please <a href='#' onclick='SILF.InstallClicked()'>click here to install Silverlight</a>";
SILF.PromptFinishInstall = "Please wait for Silverlight installation to complete. You may need to refresh the page.";
SILF.PromptUpgrade = "Please <a href='#' onclick='SILF.UpgradeClicked()'>click here to upgrade Silverlight</a>";
SILF.PromptFinishUpgrade = "Please wait for Silverlight upgrade to complete. You will need to restart your browser.";
SILF.PromptRestart = "Please exit/quit and restart your browser to proceed";
SILF.PromptNotSupported = "Sorry, your browser or operating system are not supported";
// If you want to redirect on Silverlight not supported, rather than show a slate, enable this variable
// SILF.RedirectNotSupported = "http://bing.com";
-->
</script>
</head>
<body onload="SILF.onLauncherPageLoad();">
 
<div id="silverlightControlHost" style="height:100;">
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="940" height="406">
    <param name="Source" value='SmoothStreamingSamplePlayer.xap' /> 
    <param name="InitParams" value='fakemode=,background=#FF000000,autoload=False,autoplay=False,muted=False,stretchmode=0,playlist=&lt;playList><playListItems><playListItem title="Smooth Streaming : Media : Test" description="" mediaSource="http://mediadl.microsoft.com/mediadl/iisnet/smoothmedia/Experience/BigBuckBunny_720p.ism/Manifest" adaptiveStreaming="True" thumbSource=""></playListItem></playListItems></playList>' /> 
    <param name="windowless" value="false" />
    <param name="background" value="black" />
    <param name="minRuntimeVersion" value="3.0.50106.0" />
    <param name="autoUpgrade" value="false" />
    <param name="onerror" value="onSilverlightError" />
    <param name="onload" value="onSilverlightLoad" />
</object>
</div>
 
</body>
</html>

The code owes a lot to the work of Laurence Moroney and Tim Heuer as well as experiences on sites such as Sunday Night Football, FranceTV Olympics and RedBullStratos. It consolidates the current silverlight.js as well as including and extending silverlightSupportedUserAgent.js and silverlightVersion.js and, for the logging functions uses the math.uuid.js library.

In advance of a move to a proper community sources project I’d love to hear your feedback below so we can make this more versatile and useful. If you use it please let us know as well.



Mesh and Portable Apps

clock January 6, 2009 21:39 by author offbeatmammal

Portable-Apps I've been using PortableApps for a while as a way to keep a copy of FileZilla and Firefox close to hand with my preferred settings.

Like most PortableApps users I used to use a USB key to carry them around - but recently I've been less attached to that dongle and started relying on the cloud storage and synchronization capabilities of Live Mesh to make sure the utilities are always to hand.

Because PortableApps doesn't install anything on the host PC (it's more like an OSX or Linux app in that regard - no registry changes, no INI files squirreled away in user directories) it's a perfect fit for a Mesh folder... and really easy to set up.

I created a new Mesh folder on my test machine and called it PortableApps (imaginative I know, but I wanted to be able to find it easily!). I then installed the base PortableApps version ("Platform Only") into that folder to get everything initialized. Once that was installed I added the three apps I wanted - Filezilla, Firefox and the PortableApps updater (useful to keep things at the latest version - no Windows Update for these apps sadly!) and tested they were working.

Just for good measure I added a shortcut for the Portable Apps launcher to my Windows start folder so it would run automatically when I logged in.

I then sync'd the folder to machines where I knew I wanted to run those apps (my Windows Home Server and my laptop) and also shared the folder with my wifes Mesh so that I would always have the apps there if I was using her machine for anything.

Now my settings follow me around, and if I update something on one machine a sync later it's everywhere I need it.

... is this the start of everything living in the cloud and being available on every connected device I can authenticate on?



Detecting Silverlight

clock March 27, 2008 10:21 by author offbeatmammal

image A while ago I posted about BrowserHawk adding support for Silverlight detection and for a while, apart from writing your own code, that had been it.

The good news is that as Silverlight is getting more popular the options are improving… I got a comment on the post to let me know that BrowserObject now also supports Silverlight detection in the same way as other plug ins.

The free version doesn’t detect plugins, but does give you some basic information for very little effort. The upscale product works for both .Net and PHP infrastructure and comes with some easy getting started samples to make you productive.

Good to see the eco-system growing.



Are you still using IE6?

clock March 25, 2008 10:22 by author offbeatmammal

IE7 has been available for a couple of years, and IE8 has just gone into beta. Firefox 2 is getting on nicely with v3 in the wings and even Safari with version3 is looking pretty good on Windows. Some people even like Opera (actually, it’s pretty cool on the Mobile platform).

So why are folks still persisting in using IE6? 31% of internet users in recent reports. That’s almost a third. More than all the non-IE browser population combined.

It’s old, and it’s got some quirks. And those quirks make developers lives a misery (I should know, I spent many happy years wrangling browser incompatibility issues).

popdown.gif

If all those folks using a version of any browser older than IE7 could just upgrade, get with the program and do their bit (it’s only a few moments to download and install and it doesn’t even insist on a legal copy of Windows these days!) then developers could concentrate on making great web applications using all the cool Ajax, Silverlight and Javascript features without having to worry about testing a load of different quirky behaviors.

It’s not just old versions of IE that are a problem – if you’re running anything older than the current version of a browser then you’re part of the problem – be it Firefox, Opera, IE, Safari, Maxthon or one of many others. The newer browsers still can’t quite agree on what standards they’re complying with and how they interpret some of the instructions in the standards (and I’ve read some of those documents… they’re not exactly unambiguous in places) but they’re better.

I’m not saying you should run business critical processes on bleeding edge beta versions of IE or the alternatives, but at least upgrade to the latest “released” version – you’ll save a lot of developers a lot of pain.

Please. Save the developers. It’s a great cause and supporting it won’t cost you much more than a few moments of your time.

savethedevelopers.gif



BrowserHawk and Silverlight

clock October 22, 2007 16:04 by author offbeatmammal

I really like BrowserHawk. During the heady days of the browser wars, and even now in the calmer waters of almost compatibility there it's sometimes really reassuring to know that there are some simple, reliable ways to know what the users browser is and what plug-ins it's got without having to write hundreds of lines of JavaScript with lots of try statements or go through complicated multi page refreshing detection routines to see what version of Flash or Quicktime you can target safely (or allow you to elegantly guide the user through getting exactly what your page needs to run)

Until now Silverlight was in the same boat. You needed to probe the results of the javascript loader to see if it had found the plug in, or if it was displaying the "click here to install Silverlight" graphic (which pretty as it is, sometimes isn't the best way to go)

I was pleased to discover reading the release notes for the new BrowserHawk detector that it supports detection of the Silverlight Plugin and returns the installed version number so you can make appropriate decisions while rendering the page.

One additional function that, while not Silverlight related, I wish I'd had back in the Big Brother days is the ability to detect and report back on JavaScript errors - until now it's always been difficult once you've released JavaScript laden pages into the wild to track what problems are occurring (and know exactly what the browser configuration is) in order to improve code quality. I hope my successors back in Australia take it on board...



Search

Calendar

<<  May 2013  >>
SuMoTuWeThFrSa
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

Sign in

Twitter


    follow OffBeatMammal at http://twitter.com


    Amazon Store


     
    Donate unused CPU cycles with BOINC Stats and Account Management from BOINCStats.com



    Blogroll

    Archive

    Tags

    Categories


    Disclaimer

    The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

    © Copyright 2013