Thoughts about setup and deployment issues, WiX, XNA, the .NET Framework and Visual Studio
All postings are provided AS IS
with no warranties, and confer no rights. Additionally, views expressed
herein are my own and not those of my employer, Microsoft.
Now that the final versions of Visual Studio 2010 and the .NET Framework 4 have shipped, Peter Marcu has posted an updated version of an article he wrote back in the beta 2 timeframe that describes improvements made to the .NET Framework 4 installer to improve the robustness, size and performance.
You can find the updated article at http://blogs.msdn.com/pmarcu/archive/2010/04/15/the-net-framework-4-installer-improvements.aspx, and I encourage you to take a look at it to learn more behind-the-scenes details about .NET Framework 4 setup.
My colleague Michael Klucher posted some screenshots and details on his blog about the new version of XNA Game Studio Connect that will be released along with the final release of XNA Game Studio 3.0. You can find Michael's blog post at http://klucher.com/blog/the-new-xna-game-studio-connect/.
There is some important information in his post for current XNA Creators Club members who are using XNA Game Studio 2.0 to deploy games to their Xbox 360s. The upcoming updated version of XNA Game Studio Connect will replace the 2.0 version of XNA Game Studio Connect, and you will use it to deploy games created with both XNA Game Studio 2.0 and XNA Game Studio 3.0.
Unfortunately, there are some manual steps you will have to take if you already have the 2.0 version of XNA Game Studio Connect in order to download and use the new 3.0 version. At a high level, you will need to do the following (note - there is a more detailed set of steps to accomplish these tasks in Michael's blog post):
Once the 3.0 version of XNA Game Studio Connect is released, the 2.0 version will be updated to display a single screen that contains a set of instructions similar to the ones on Michael's blog so that you will know that you need to update it in order to continue deploying games to your Xbox 360. In addition, the 2.0 version will no longer be available on the Xbox LIVE Marketplace once the 3.0 version is released, so there will hopefully not be any confusion about what you need to download.
The XNA Game Studio components that are installed as a part of the Windows Phone SDK 8.0 have a setup bug that causes the uninstall process for the Windows Phone SDK 8.0 to break XNA Game Studio 4.0 and vice versa.
How to fix XNA Game Studio 4.0 if you uninstall the Windows Phone SDK 8.0
If you have both the Windows Phone SDK 8.0 and XNA Game Studio 4.0 installed and then uninstall the Windows Phone SDK 8.0, you will need to do the following to restore XNA Game Studio 4.0 functionality:
How to fix the Windows Phone SDK 8.0 if you uninstall XNA Game Studio 4.0
If you have both the Windows Phone SDK 8.0 and XNA Game Studio 4.0 installed and then uninstall the XNA Framework Redistributable 4.0 component that is installed as a part of XNA Game Studio 4.0, you will need to repair the Windows Phone SDK 8.0 to restore XNA Game Studio functionality in the Windows Phone SDK 8.0.
Last week, we released XNA Game Studio 4.0 and the Windows Phone Developer Tools. However, there was a slight delay in the release of the new XNA Game Studio Connect beta that allows you to deploy, run and debug 4.0 games on your Xbox 360. As announced on the XNA team blog this morning, the XNA Game Studio Connect beta is now available for download on the Xbox LIVE Marketplace.
You will need to delete the version of XNA Game Studio Connect that you have installed on your Xbox 360 console, then download the new one. You can find more detailed steps in this blog post and this news item.
If you are planning to use XNA Game Studio 4.0 for Xbox 360 game development, I encourage you to download and try out the XNA Game Studio Connect beta. If you run into any issues, please report them at the following locations:
A couple of weeks ago, I got the opportunity to meet and chat with several XNA and DirectX MVPs at the 2011 MVP Summit on the main Microsoft campus in Redmond, Washington. At the summit, a couple of the MVPs, Chris Williams and George Clingerman, were autographing copies of their new book, Professional Windows Phone 7 Game Development – Creating Games Using XNA Game Studio 4.
The book was released in February 2011, and it provides in-depth information about developing and publishing Windows Phone 7 games using XNA Game Studio 4.0, including 3 complete games. If you are looking into developing games using XNA Game Studio and the Windows Phone 7 platform, I encourage you to check out this book. You can find it on Amazon.com and at other retailers.
Starting with the Zune 3.0 firmware, you can install and play a set of games on your Zune device. Texas Hold Em, Hexic, Checkers, Sudoku and Space Battle are available in the Zune firmware and software that is available at the time that I am writing this blog post.
These in-box games are created with the XNA Framework, but they behave a bit differently than Zune games that you can create yourselves with XNA Game Studio 3.0. Specifically, many developers have asked on the forums why these games do not require a reboot of the Zune device when you exit them, whereas games created by other developers and deployed to the Zune device using XNA Game Studio 3.0 or via a .ccgame package do require a device reboot.
My colleague Michael Klucher has posted an item on his blog explaining more details about what is going on behind the scenes in these scenarios and why one set of games requires a device reboot and another set does not. If you are interested in learning more, I encourage you to read the blog post at http://klucher.com/blog/zune-games-and-rebooting-devices/.
Also, this scenario has been reported several times via the Connect bug reporting site. If this scenario is important to you, I encourage you to vote on this existing Connect bug (please vote on the existing bug instead of opening a new bug) so that the XNA will be aware of your feedback as we plan for future versions of XNA Game Studio and the XNA Framework.
XNA Game Studio 4.0 supports the following editions of Visual Studio 2010: Visual Studio 2010 Professional and better, Visual C# 2010 Express, and Visual Studio 2010 Express for Windows Phone. However, as described in more detail in this blog post, XNA Game Studio 2010 does not support developing games for all platforms in all of these Visual Studio 2010 editions. There is a specific unsupported scenario that gives a pretty poor error message if you try it, and I want to describe it in a little more detail here in case anyone runs into it while using XNA Game Studio 4.0.
Description of the issue
You can create XNA Game Studio 4.0 Windows Phone game projects in Visual Studio 2010 Professional and better or Visual Studio 2010 Express for Windows Phone, but not in Visual C# 2010 Express. However, because the overall XNA Game Studio 4.0 project system supports Visual C# 2010 Express, you can open XNA Game Studio 4.0 Windows Phone game projects that were created elsewhere in Visual C# 2010 Express. If you do this, you can edit the phone game projects and build them with no errors. If you attempt to press F5 to deploy and debug a phone game, you will see an error like the following:
Unable to start debugging. An error occurred that usually indicates a corrupt installation (code 0x80040154). If the problem persists, repair your Visual Studio installation via 'Add or Remove Programs' in Control Panel.
Unable to start debugging.
An error occurred that usually indicates a corrupt installation (code 0x80040154). If the problem persists, repair your Visual Studio installation via 'Add or Remove Programs' in Control Panel.
Repairing Visual C# 2010 Express will not help in this scenario. There are certain components that are required for Windows Phone development that are only available in Visual Studio 2010 Professional and better or Visual Studio 2010 Express for Windows Phone, and as a result, you cannot deploy or debug Windows Phone game projects in Visual C# 2010 Express.
How to work around this issue
If you run into the above error, you will need to open your Windows Phone game project (.csproj) file in one of the supported Visual Studio 2010 editions and deploy and debug it from there instead.
A note about Silverlight Windows Phone projects
One other note about this scenario – if you attempt to open a Silverlight Windows Phone application project that was created elsewhere in Visual C# 2010 Express, you will see an error like the following and will not even be allowed to open it:
error : The project file 'C:\Users\myuser\Documents\Visual Studio 2010\Projects\WindowsPhoneApplication1\WindowsPhoneApplication1\WindowsPhoneApplication1.csproj' cannot be opened. The project type is not supported by this installation.
error : The project file 'C:\Users\myuser\Documents\Visual Studio 2010\Projects\WindowsPhoneApplication1\WindowsPhoneApplication1\WindowsPhoneApplication1.csproj' cannot be opened.
The project type is not supported by this installation.
This message error is more clear, and it prevents you from being able to edit or build the project as well, which helps reinforce the lack of support for Visual C# 2010 Express in a way that XNA Game Studio 4.0 does not. The reason that Silverlight projects are able to present more clear errors in this type of scenario is that the Silverlight Windows Phone project system does not support Visual C# 2010 Express at all, whereas the XNA Game Studio 4.0 project system supports Visual C# 2010 Express, but not for all types of game projects.
A couple of weeks ago, a Best Practices for Community Games guide was published on the Creators Club web site that provides a list of suggestions to consider when creating Xbox LIVE Community Games using XNA Game Studio 3.0. You can find this guide at http://creators.xna.com/en-us/education/bestpractices. You are not required to follow these guidelines when creating your game, but following these guidelines will add polish to your game that will hopefully make it appeal to more users, increase your sales via Xbox LIVE Community Games, etc.
This best practices guide currently includes information about the topics listed below. It describes things to consider when designing and building your game, and also has links to relevant samples and documentation topics to provide more details and code snippets to help you get started:
In addition, Mitch Walker has posted an item on his blog that provides more details about one of the bullet points in the Seamless loading and saving section of the best practices guide. In his blog post at http://blogs.msdn.com/mitchw/archive/2008/10/15/the-one-about-storage.aspx, he demonstrates how to implement the Guide.BeginShowStorageDeviceSelector API in an asynchronous manner so that your game will not deadlock on systems that have multiple storage devices attached (such as a hard drive and a memory unit).
The .NET Framework setup team has released an updated version of the .NET Framework Repair Tool that adds support for diagnosing and repairing issues with .NET Framework 4.5 and 4.5.1. This repair tool can identify and fix issues with the installation of MSI-based versions of the .NET Framework, but it cannot fix issues related to versions of the .NET Framework that are installed as a part of Windows.
If you run into installation issues with the MSI-based versions of the .NET Framework 2.0 SP2, 3.0 SP2, 3.5 SP1, 4, 4.5 or 4.5.1, I strongly encourage you to download the .NET Framework Repair Tool and run it to see if it resolves your issue before resorting to trying the .NET Framework cleanup tool. Here are links that you can use to find additional information about the .NET Framework Repair Tool:
Someone recently asked me a question about the unversioned file replacement scenarios that I wrote about a while ago in this blog post. The scenario that they described to me is similar to one that we faced when building the installer for the XNA Game Studio components that ship in the Windows Phone SDK 8.0, so I wanted to provide an overview of our problem and the solution we implemented in case it is useful to anyone else.
The problem we faced was that version B of our product (the XNA components in the Windows Phone SDK 8.0) upgrades several components that are shared by version A (the XNA Game Studio 4.0 Refresh). One of the components is an MSBuild .targets file, which is an unversioned file. Version B ships a version of the .targets file that is backwards compatible with Version A, so we wanted the installer for version B to overwrite the .targets file if a user installs version A and then version B. However, we did not want the installer for version A to overwrite (and downgrade) the .targets file if a user installs version B and then version A.
In order to prevent Windows Installer from overwriting this unversioned file, the last modified time had to be different than the creation time (as documented here). This feels a bit dirty, but we ended up solving this problem by implementing a custom action in version B of our product to call the SetFileTime function to update the last modified time of the .targets file after installing it. This causes version A of our product to not overwrite the file if a user installs version B and then version A. The .targets file is in its own Windows Installer component, which is reference counted by Windows Installer so that the .targets file is left behind after uninstalling either version of the product. Since we designed version B of the .targets file to be backwards compatible, it would continue to work even if a user installs version B, installs version A, and then uninstalls version B (which leaves them with version A of the product installed but version B of the .targets file installed).
Last week, I posted an item about the release of the XNA Game Studio 3.0 Japanese documentation installer. This package allows you to install a local collection of Japanese help topics for XNA Game Studio 3.0. This documentation is stored on the local file system and can be accessed in the Visual Studio help viewer even if the computer does not have an active Internet connection.
Today, the XNA Game Studio 3.0 Japanese help documentation was also published to the online MSDN library at http://msdn.microsoft.com/ja-jp/library/bb200104.aspx. This enables users to search online for Japanese help topics for XNA Game Studio 3.0. In addition, you can configure Visual Studio 2008 and Visual C# 2008 Express Edition to automatically load the online Japanese help documentation first if it is able to access the Internet. To change the Visual Studio online help language preferences, you can do the following:
These steps will allow you to view Japanese help documentation for XNA Game Studio 3.0 even if you do not download and install the Japanese documentation package, but it does require your computer to have Internet access at the time you try to view help topics. You can also click the check box on the Help item in the Visual Studio options page to cause it to display the English versions of the help topics as well if you choose to.
I’m a little late posting this information since the book was released at the end of December, 2010, but my co-workers Tom Miller and Dean Johnson wrote a book titled XNA Game Studio 4.0 Programming: Developing for Windows Phone 7 and Xbox 360, and one of my other co-workers, Shawn Hargreaves, wrote the foreword for the book.
You can find more information about the book at the following locations:
I got a copy of this book last week, and now I need to remember to go find Tom, Dean and Shawn and get them to autograph it.
I was talking with Michael Klucher and a few other folks on the XNA team last week about things to do while we’re in San Francisco for GDC 2009 this week. Most of us like to take advantage of the opportunity to visit In-N-Out Burger while we’re in California since we don’t have those in the Seattle area, so we decided to try to work that into the schedule and meet with folks using XNA and/or playing Xbox LIVE Community Games at the same time.
A few of us are going to head out to the In-N-Out by Fisherman’s Wharf for dinner on Wednesday night, March 25. If you’re going to be in the San Francisco area for GDC 2009 or otherwise next week, and you’d like to grab dinner and talk about XNA development technologies (XNA Game Studio, etc) or Xbox LIVE Community Games, we’d love to see you there.
Here’s the details about when and where we’re going to be eating:
We hope to see you there!
As announced earlier today on the XNA Game Studio team blog and on the App Hub forums, there have been a few changes to the Xbox LIVE Indie Game submission policies to give developers more flexibility when submitting their games. Here is a brief summary of the changes:
Please visit this forum thread for more detailed information and answers to any questions you might have about these changes.
Rob Mensching posted an item on his blog announcing the release of the WiX v3.6 beta. The key feature in WiX v3.6 is the Burn bootstrapper/chainer. To summarize Rob’s post, Burn includes the following features:
In addition, all known WiX core toolset bugs that were opened against WiX v3.5 or earlier have been fixed in the WiX v3.6 beta.
I encourage you to download the WiX v3.6 beta and give it a try if you get a chance.
My colleague Michael Klucher posted some information on his blog today about an upcoming update that will be available soon for the XNA Game Studio Connect application. XNA Game Studio Connect is the component that you run on an Xbox 360 in order to deploy, debug, test and peer review Xbox 360 games created with XNA Game Studio.
After the release of Xbox LIVE Community Games last fall, we ran into a few issues where the behavior of the game when running in XNA Game Studio Connect didn't match the behavior after it is published and is run as a community game. As a result, there were a few scenarios that were not possible for the developer or peer reviewer to test before the game was published, and in some cases a game that appeared to run fine during peer review would crash after it was published.
The upcoming update to XNA Game Studio Connect is intended to make the experience of running the game during development and peer review more closely match the experience of running it after it is published. The update will be available in the next few weeks, and Michael includes more details about the changes that were made behind the scenes in his blog post so I encourage you to check that out as well.
As noted on the XNA Game Studio team blog today, the Xbox LIVE Indie Games publishing pipeline is now accepting XNA Game Studio 4.0 games in addition to XNA Game Studio 3.1 games. This was originally scheduled to be enabled last Friday, but it slipped out a few days due to a couple of last minute issues that we ran into at the end of last week. As a result, the 90 day window when you will still be able to submit XNA Game Studio 3.1 games has been moved out accordingly. The last day you will be able to submit an XNA Game Studio 3.1 game for Xbox LIVE Indie Games is Monday, February 7, 2011.
Please see the following locations for more information about supported versions of XNA Game Studio for Xbox LIVE Indie Games and Xbox 360:
The Windows Phone SDK 8.0 supports XNA Windows Phone game projects that target Windows Phone OS 7.1. It does not support XNA Windows Phone game projects that target Windows Phone OS 7.0. However, it does not block you from trying to open XNA projects that target Windows Phone OS 7.0. Instead, it will allow you to open the projects and try to build them, and then you will see error messages about missing reference assemblies.
In order to open and use your XNA projects that target Windows Phone OS 7.0 in the Windows Phone SDK 8.0, you must first upgrade them to target Windows Phone OS 7.1. You can perform this upgrade in one of the following ways:
Last week, I posted some high-level details about a couple of new Visual Studio features that are available in XNA Game Studio 3.0 - cross-platform synchronization and multiple content projects. Over this past weekend, Stephen Styrchak posted an entry on his blog with much more detailed information about how cross-platform development works in XNA Game Studio 3.0, as well as some tips and tricks to more effectively use Visual Studio 2008 and XNA Game Studio 3.0 for cross-platform game development.
His blog post is at http://badcorporatelogo.spaces.live.com/Blog/cns!43EB71B104A2D711!343.entry, and it contains the following types of information:
I encourage you to check out Stephen's blog post for more details about all of the above - this post is a great reference if you are planning to use the cross-platform development features in XNA Game Studio 3.0.
A colleague wrote a blog post today that describes the process of converting a game created from the XNA Game Studio 3.1 version of the platformer starter kit to the XNA Game Studio 4.0 CTP and getting it to run on the Windows Phone 7 Series emulator. The blog post walks through the process of creating a 3.1 version of the game, creating a new 4.0 project for it, importing the code and content, updating the code to handle differences between the XNA Framework 3.1 and 4.0, and making some Windows Phone-specific changes.
Here are links with additional information:
Last Friday (February 13, 2009), an update for XNA Game Studio Connect was released via Xbox LIVE Marketplace. This update is described in more detail in this post on Michael Klucher's blog. To quickly summarize, some changes were made to allow developers to debug and peer review scenarios that previously were only available after a game had been published to Xbox LIVE Community Games (specifically, the Community Games splash screen and the trial mode expiration screen).
If you are using XNA Game Studio 3.0 for Xbox 360 development and already have XNA Game Studio Connect, you don't need to do anything special to get this update. It will be automatically offered to you the next time you launch XNA Game Studio Connect.
As always, if you have any questions or comments about XNA Game Studio development, please check out the following resources:
As announced earlier today on the XNA Game Studio team blog, registration is now open for the Dream.Build.Play 2011 Challenge. Here is a quick summary of the key information about the Dream.Build.Play 2011 Challenge:
I encourage you to check out the Dream.Build.Play 2011 web site for more detailed information and to register for the contest.
As announced earlier today on Soma’s blog and Jason Zander’s blog, the Visual Studio 2010 and .NET Framework 4 release candidate builds are available for download (today if you are an MSDN subscriber and this Wednesday, February 10, 2010 for the general public). Here are links where you can find additional information and provide feedback to the product teams:
As I noted in my previous blog post, the final versions of Visual Studio 2010 and the .NET Framework 4 have shipped. I wanted to also briefly note that the Windows Phone Developer Tools CTP that was released a month ago at the MIX10 conference is not compatible with the final version of VS 2010. You must continue using the VS 2010 release candidate build in order to use the Windows Phone Developer Tools CTP.
Charlie Kindel posted some information on the Windows Phone Developer Blog with options you can pursue in the meantime, and he also discusses the timing for an upcoming refresh of the Windows Phone Developer Tools that will work with the final release of VS 2010.
Last fall, I wrote a blog post linking to some information about using Guide.IsTrialMode in an XNA Game Studio 4.0 game for Windows Phone. Since then, the XNA Game Studio team has updated the behavior of the Guide.IsTrialMode API to simulate the same performance characteristics during development that a game will experience when a game is downloaded from the Windows Phone Marketplace. This change is available in the Windows Phone update that was released this spring:
As a result of this behavior change, the following point in my previous blog post no longer applies:
The following points from my previous blog post still apply, and should be taken into account when implementing trial mode functionality in your game:
<update date="5/5/2011"> Added a clarifying note to recommend that the trial check be done in the Activated event handler. </update>