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.
Yesterday I was working with one of our developers on an issue related to the Enhanced Write Filter in XP Embedded (also known as EWF). I installed the EWF driver on one of my test machines - it is an upper filter driver that has to be loaded at boot time and is flagged to cause a blue screen of death with error code 0x7B if it fails to initialize correctly. I had gotten my machine into a state where I got a BSOD 0x7B every time I tried to boot to my XP Embedded OS, so I wanted to boot into my XP Professional partition and try to fix it. I learned a couple interesting tricks that made this much easier, and I think some of you probably know this but I wanted to share it for those who don't.
There are a set of registry keys that describe the drivers and services installed on a Windows NT-based OS (such as Windows NT4, Windows 2000, Windows XP, Windows Server 2003, etc). If you are booted into an OS, the keys under HKLM\System\CurrentControlSet describe the currently running OS. This hive is a mirrored copy of one of the hives under HKLM\System\ControlSet### (where # is a numerical value, normally something like 001, 002).
So the next question is - what if I see multiple ControlSet### registry hives on my machine? How do I figure out what each one of those is? If you look at HKLM\System\Select, you will see some DWORD values there:
Until I talked to our dev, I didn't know what the difference was between any of the ControlSet### hives, so I booted to my XP Pro OS, loaded the system registry hive from my broken XP Embedded OS using the strategy I described here (except I loaded system instead of system.sav since my image had already gone through first-boot agent), went to ControlSet001 and removed all of the information about the EWF driver that was somehow causing the BSOD 0x7B. Then I found that when I booted back to the XP Embedded partition I still got the same BSOD.
Once I figured out how to map ControlSet### to the currently active hive, I was able to remove the driver information from the correct hive and then my XP Embedded image booted normally again.
Note that my example above involved troubleshooting an XP Embedded OS image, but the principles about keeping track of the drivers and services using HKLM\System\CurrentControlSet and ControlSet### applies the same way to all NT-based OS's and not just embedded.
I wanted to highlight some of the updated features and known issues in the C# Express Edition community tech preview that was released earlier this week. All of this information is in the online readme (along with some additional information about all of the other express edition October 2004 tech preview versions), but that kind of information tends to get buried so I wanted to bring it to everyone's attention as an FYI.
Updated and new features:
Project Templates for Visual C# Express Edition Community Tech Preview October 2004 are now available at http://download.microsoft.com/download/6/e/9/6e9a1e2e-417b-494e-89d3-2bc03b751bd1/OctCTPTemplates.msi for download.
"Edit and Continue" is now available in C#
However, there are currently the following known issues:
If you are working with code built from the Windows Forms Template (and a few others), you may not be able to do EnC at all. To work around this, remove the "= null" initializer of the components field in the .designer.cs file as follows:
private System.ComponentModel.IContainer components = null;
private System.ComponentModel.IContainer components;
New Start Page
There is a new Start Page, but it is not enabled by default in this tech preview release. To see the new start page choose Tools -> Options, then "Show All Settings", then Environment -> Startup. From there, set "At startup: " to "Show Start Page".
The Visual Studio team has released a set of web-downloadable community tech previews for the VS 2005 express editions. If you go to the individual express edition pages and click the big Download link, it will still download the beta1 versions. However, if you scroll down to the Express Headlines section, there is a link to download the October 2004 community tech preview. For your convenience, here are the direct links:
One important note here - if you have any Visual Studio 2005 beta1 products installed, you will need to uninstall them before you install this community tech preview. Setup will not block you, but it will fail if you don't uninstall VS 2005 beta1 first (including all pieces of VS - the .NET Framework, MSDN, SQL Express, etc).
I know that a lot of you tried out the beta1 version using the automatic downloader and there has been a lot of frustration and failed installs resulting from that. The VS setup team has done a lot of work to make the downloader more bulletproof and provide better progress indications, etc. I encourage you all to give it a try and send any feedback you have back to Microsoft. If you send it to me I'll be happy to route it on to the setup team (my former team). You can also log bugs and suggestions on the MSDN feedback site at http://lab.msdn.microsoft.com/productfeedback/default.aspx.
Also, since this is a community tech preview and not a full-fledged beta, there are some known issues that were not fixed in time for this release. You can find that list at http://lab.msdn.microsoft.com/express/readme/cptreadme1004/default.aspx
I received some feedback from a couple of customer who are using the XPEFFI tool to download the XP Embedded SP2 tech preview and are using dial-up connections. They indicated that they discovered the size of the download and cancelled it because of the large size, but that the items remained in the queue and continued to be downloaded by the Background Intelligent Transfer Service (BITS) and killing their connection throughput. This is an issue that I have fixed for the RTM version of XPEFFI, but I wanted to provide a set of steps that you can use to remove these download jobs from the queue on your machine in the meantime:
I apologize for the inconvenience that this has caused. Please contact me if you have any issues getting this to work for you.
Hey all, the XP Embedded SP2 technology preview is now live and ready to download. You can get the downloader tool and more information about XPE SP2 by clicking on the image below....
I'm really excited to hear what everyone thinks about the new and updated features (I'll be posting more about some of the interesting new features in the near future). Please send me an email at aaronste (at) microsoft (dot) com with any comments, questions, bug reports, positive or negative feedback. Also, I worked with Mike Hall to write the downloader tool so I'd also be interested in any comments you have about that.
Hey all, I made it back from my trip to Tokyo for Embedded DevCon Japan 2004 and some customer visits. I fully intended to write blog entries after each day of the trip but underestimated the exhaustion I was going to feel - between the jet lag, a little bit of culture shock (this was my first trip to a country where I didn't understand the lanugage or at least be able to sort of read the text), and the fatigue from the conference and volume of customer visits themselves I wasn't able to come up with the energy before I went to bed each night to post something.
The talks at DevCon went better than I was expecting. I knew the technologies, but the talks were inherited from content presented earlier this summer so that made me a little nervous. I created an updated demo to show how to use the SDI file format to boot from RAM (because the original presenter was out of the office in training the week before my trip), and that really helped me learn how things work as well as where some of our documentation and examples are a little lacking (I'm hoping to do some kind of write up of an end-to-end example for a future white paper or something like that). The night before the conference I met with 2 interpreters for about an hour to go over the content, and it was then that I realized that nearly all of the attendees for my talks would be using headsets to listen to the Japanese translations of what I would be saying rather than focusing on my words. That helped to relax me a little bit also. Then I got to the conference center the next day and found out that my 2 talks would be nearly full - I'm estimating there were somewhere between 100-150 people at each of them (as opposed to about 20 people at each of my talks at DevCon USA in San Diego). So I started out a little shaky but once I settled in things went well. My first talk about EWF lasted 50 of the 60 minutes, and I talked with the interpreters afterwards about ideas for slowing things down and taking better pauses. For the 2nd talk about SDI and RAM boot, I focused on taking breaks after every sentence or so, and I started realizing that I could hear the interpreters speaking in those pauses - so this helped me pace things better, and I used about 59 of the 60 minutes.
The next 2 days, myself and the other 4 team members that came with me from Redmond, along with a few members of our Japanese subsidiary team visited 5 different companies that are using XP Embedded or evaluating it for future use. The team is meeting back in Redmond on Monday to discuss takeaways, and I'm not sure how much of the specific content I am able talk about due to non-disclosure and things like that so I'm going to give a high-level summary of the biggest issues I heard that were common across all of the customers we met, along with the highlight of the trip for me.
Three big common themes I heard (in no particular order) are the following:
Aside from the above, the highlight from the customer visits for me me personally was hearing one of the customers tell us that they were having a problem with Enhanced Write Filter (EWF) and needed an urgent resolution in the next couple of weeks for a project they were working on, but they attended my talk about EWF at DevCon and were able to solve their problem. Unfortunately, due to the meeting running long and the customers speaking only Japanese, I wasn't able to dig in deeper to figure out what the problem was and what in the talk helped them solve it, but nonetheless it was very rewarding to hear that something I said made a difference to their work, however small it might have been.
That's about all I've got for now, I'm still a little jet lagged so it is time for a nap for me. If anyone out there has any comments about their experiences, especially with the 3 areas of concern listed above, please drop me a comment on the blog or send me an email. As always, thanks for reading!
I got the opportunity to present a few slides about Device Update Agent (DUA) for some training my team presented yesterday, and during that presentation I gave a demo of DUAScriptGen, and several people who hadn't seen it before were interested in trying it out. I wanted to consolidate links from some of Mike Hall's old blog posts and some of my old blog posts in one location for your convenience:
I also wanted to request any bug reports or feature suggestions you might have for a future release of the tool. Here is a list of what I have heard so far that I've got on my list to implement/investigate:
If you have any additional items that I haven't listed above, please post a comment on this thread or send me a direct email at aaronste (at) microsoft (dot) com and I will add it to the list. Stay tuned for updates soon....