I’ve been working to deploy a Silverlight 1.0 project using the Silverlight Streaming beta service and I wanted to call attention to a few things I learned that weren’t explicitly mentioned in the Silverlight Streaming SDK.
- Do no include an encoding type in your manifest.xml file. example: I can’t confirm this 100% but I kept getting an error message on upload that says “The archive does not meet the criteria for valid applications. Refer to the SDK for detials.” Once I removed the declaration I didn’t receive the error again.
- Do not include any HTML files in your zip file. While html is not included in the list of allowed file types most templates create one just make sure you don’t include it in your zip archive
- Make sure to remove any Thumbs.db files that may be hiding in your folders. These hidden files are created when you browse through your application with Mac OSX. You may have to enable hidden files to show before you can see that they are there, or look through your zip archive before you upload it. If you don’t remove these you’ll get the same “The archive does not meet the criteria for valid applications. Refer to the SDK for detials.” error message. This one took me a while to figure out.
- Adapting the app for Silverlight Streaming was a learning process. I started the project based on a default Silverlight Web Template from Blend. Because of this I had to alter a lot of my code so my app would work in an iframe on the Silverlight Streaming beta service. Documentation to adapt my code was scarce so I had to piece together a lot of different information from working Silverlight Streaming examples into a solution. The two biggest pieces of information I wanted to share can be found in this code:
Inside the shellOnLoad function is where the handleLoad function is called. The handleLoad function is called when the Silverlight Object is created and the XAML is ready. This is very important and if you use a default template from Blend or Visual Studio you will use this function. Also you’ll see the var obj line. This gives you the instance of the Silverlight OBJECT tag. Without it, you’re handleLoad function will fail. The tricky part is figuring out what the OBJECT tag ID is. I had to use IE7 Developer Toolbar to explore the DOM of my iframe to find it. I think the default is “appId” so hopefully this bit of information will save other the headache of figuring out why their custom app won’t run in an iframe.
Just wanted to share these tidbits of information so hopefully it will save others from having trouble using the Silverlight Streaming service.