Archiv für April, 2010

Change of plans for WiX v3.5.

Thursday, 29. April 2010 at 6:27 am

About a year ago we started WiX v3.5. At that time we decided on a new plan for WiX v3.0 that moved the Votive for Visual Studio 2010 and Burn features out of WiX v3.0 into WiX v3.5. The goal was for v3.0 to ship earlier. That worked out well because WiX v3.0 released last July.

Through the summer, the plan to deliver WiX v3.5 right around the time Visual Studio 2010 shipped seemed sound. Votive for Visual Studio 2010 in WiX v3.5 stabilized basically on schedule. However, in September, we moved Burn development to a new foundation and Burn still needs a lot of work.

Of course, two weeks ago Visual Studio 2010 shipped which means we should be finishing WiX v3.5 soon. Lots of people want a stable drop of the WiX toolset that supports Visual Studio 2010. Unfortunately, with the current plan we’re a year out.

So we need a new plan.

WiX v3.5

This release is now all about Votive for Visual Studio 2010. The goal will be to finish as quickly as possible. If the IIS7 custom action stabilize quickly they’ll stay in this release. Burn is out though.

  • Votive for Visual Studio 2010
  • IIS7 custom action (if it stabilizes quickly)
  • [cut] Burn

It would be great to have this release out in July, basically a year after WiX v3.0. That is aggressive so my confidence is low. As the bugs drop, I’ll start tracking the progress here just like I did for our last release.

WiX v3.6

This release is all about Burn. Burn will not get cut from a release again. WiX v3.6 is where Burn will ship with all the features I described before. If the IIS7 custom action doesn’t stabilize in time for WiX v3.5 we’ll also finish it here. Finally, to reduce our build and test matrix I plan to drop support for Visual Studio 2005.

  • Burn
  • IIS7 custom action (if it doesn’t ship in v3.5)
  • [cut] Votive for Visual Studio 2005

At this point Burn is something like four years late. Unfortunately, Burn probably won’t be completely done for another year. Our first goal is to get Burn installing the WiX v3.6 toolset and hopefully be mostly stable by end of September.

WiX v4.0

This release will be all about simplification. Over the last decade, the WiX toolset grew into an extremely powerful tool for your Windows installation needs. In that push we’ve added more and more functionality but sometimes the features came at a cost of complexity. In WiX v4.0 I want to take time to make the toolset easier to build and easier to use. My hope is that some of us can start WiX v4.0 at the end of the year.

Conclusion

Burn is cut from its WiX release for a second time. I know a lot of people will be disappointed by that (I know that I am extremely disappointed by it). However, I believe there are more people that will be happy to know that a stable WiX toolset release that supports Visual Studio 2010 is just around the corner.

As always, please feel free to send me feedback.

 

tags: , , , , , ,

Original post by Rob Mensching

Abgelegt von WiX
von

WiX Working Group video of the night, hypnotizing hydrophobic water.

Sunday, 25. April 2010 at 5:56 pm

The video for the night was supposed to be the Sounders FC game against FC Dallas. Unfortunately, ActiveX controls and time zone confusion conspired against me and we missed the game. Probably a good thing too, the extra time goal by the bad guys (for a second time!) would have been mighty frustrating.

Instead, since it is late I picked something chill. I don’t remember where I found this but it was pretty interesting. It’s short so watch it a couple times. Hypnotizing hydrophobic water.

 

tags: , , , , ,

Original post by Rob Mensching

Abgelegt von culture
von

WiX Working Group video of the night, ok goes the machine.

Friday, 16. April 2010 at 5:57 am

I first heard of OK Go when their fun treadmill video came out. Their music is kinda’ catchy but probably not something I’d listen to regularly. Anyway, they dropped out of my mind until a month ago when I tripped across their most recent video. Since it’s Tax Day and Garrett was joining us to talk about CoApp tonight I thought I’d break this one out. It’s great fun.

By the way, NPR has a great story about the band, this video and the split with their label. It’s a great listen. I recommend it. Oh, and did you know that NPR uses the WiX toolset? Yeah, how cool is that?

 

tags: ,,,,,,,

Original post by Rob Mensching

Abgelegt von culture
von

The .NET Framework 4 Installer Improvements

Thursday, 15. April 2010 at 7:33 pm

Much of this is a repost of my Beta 2 post with updated content and data.

Thanks to everyone that gave feedback both on my blog and through other forums about .NET Framework installs. .NET 4 just released so I thought I’d take this opportunity to talk a little about the stuff we have done to improve the installation. My team and I have been focused over the past year on incorporating feedback and striving to make the installer better for the .NET Framework 4. There has been a particular focus on making it better for client applications to install it with their apps.

The key focus areas for the .NET 4 installer have been Size, Robustness, and Performance. I’ll speak to some of the major things we did and give a brief description below.

Size

You can see from the chart below that we have reduced the size of the .Net redist significantly. It went from client applications needing to carry 237MB to 41MB for the client profile. This is a game changer for a lot of client applications.

Size Comparison of the redist size since 3.5 SP1

  3.5 SP1 4 Beta1 4 Beta2 4 RTM
32bit Client Profile X 34.5 MB 31.5 MB 28.8 MB
32bit Full X 77.5 MB 38.5 MB 35.3 MB
32+64bit Client Profile X 72.5 MB 48.2 MB 41 MB
32+64bit Full 237 MB 162.6 MB 55.9 MB 48.1 MB
 
Better Compression Across Packages

We implemented the use of a better compression technology into our packages which reduced the size of our packages by around 15%.

Separate packages for AMD64 and IA64

We found that there was little to no need to ever install the same package on both amd64 and ia64. Because of this, we decided to produce amd64 packages that excluded ia64 binaries as well as ia64 packages that didn’t contain amd64 binaries.

Client Profile

We determined the subset of framework functionality that was used by 95+% of client applications and produced a first class package for this scenario. The result of this is that, unless you are taking advantage of features such as ASP.NET, you can now take a dependency on a smaller framework. More details of what is in the client profile can be found here.

Remove Duplicate MSIL

We identified many assemblies that were functionally identical but differed by the architecture they were built under. These assemblies were all managed CPU neutral assemblies which meant that it didn’t matter whether they were built for x86 or amd64. Their strong names and functionality are the same. We solved this by only carrying one of them.

Robustness

The numbers are already starting to come in from the RTM release and we are very happy with the success rates of the install. At this point we are seeing greater than a 99% success rate which is much better than previous .NET redist releases right out of the gate. Here are some of the larger things we did to increase robustness.

Remove Prerequisites

In a chain of installs, the chain is only as strong as its weakest link. In addition, small weaknesses in each part of the chain compound to lead to higher failure rates for the whole chain. By removing numerous prerequisites and combining the whole client install into a single MSI, we were able to get rid of the compounding effect of failures as well as focus our efforts on making the single MSI as solid as possible.

Simplify the MSI

Custom actions are very common places for installs to fail. The more you have, the more complex the installer gets and the number of points of failure goes up. Removing the need for customactions in many cases and in the cases where we needed them, simplifying them has increased our success rates.

Remove slipstreamed feature MSP’s

In Beta1, we slipstreamed features into the installer’s msi using patches. This proved to be a point of complexity and the root cause of many unsolvable bugs. Due to that, we simplified our install to be completely contained in a single msi per platform.

Fix and Retry

    Through thorough investigation of our past installers, looking through KB articles, feedback from customers, and through our past Beta’s, we found numerous install failure conditions that were fixable after the error. We implemented the KB articles and other workarounds so, in failure cases, we can fix the users machine and try again. We’ve seen quite an increase in our success rates due to this work. My hope is that this will also make the windows installer ecosystem cleaner and that msi’s installed after .NET 4 will have a better chance to succeed because our installer put the machine in a better state.

    Triple fallback on Download failures

    Through analysis of our download failures in the past, we determined that using a single implementation for downloads left you only as successful as that technology allows. We found that between Winhttp, URLMon, and BITS, their failures were in different scenarios and where one would fail, the others would succeed. In order to take advantage of this, our chainer falls back and retries on different download stacks to do everything we can to get a successful download.

    Separated out Server configuration from Client Profile

    The Client Profile installer should be more robust for applications now because some of the most common failing custom actions in .NET 3.5 were in configuring things like ASP.NET and WCF which are mainly server scenarios and not used by client applications. By moving these to the full install, we are seeing higher success rates for the client install.

    Performance

    The key metric here is overall install time for the redist. In 3.5 SP1 the average install time was 12-15 minutes. With v4, the average times are closer to 3-5 minutes for the client profile and 5-7 minutes for Full.

    Smart Cabbing

    Smart cabbing is a technique used to allow you to install the same file to multiple locations but only carry the file once in the msi’s cabs. This technique has been used for years but during our perf investigations, we found that, depending on how many duplicate files there were and where they were in the cab, performance degraded significantly. We made some bug fixes in the tools we use to smart cab (WiX) to reduce the impact of duplicated items while still gaining the benefits of smart cabbing.

    Remove Prerequisites

    This one is fairly self explanatory. We need to install less packages so we are faster. This is mostly the result of changing the .NET Framework itself to not have certain dependencies or carry subsets of the dependencies within the framework. In a few cases, this was possible because the base functionality was either built into all the supported OS’s or had enough ubiquity in the ecosystem to not warrant us carrying it.

    Remove Slipstreamed Msp’s

    We found that when applying large slipstreams to a product, there was a significant perf hit towards the end of the install when Windows Installer is caching the packages for source resiliency. By adding all the features into the MSI, we got rid of this performance hit.

    Parallel Ngen and removal of synchronous 64bit assemblies

    The CLR implemented the ability to ngen on multiple cores in parallel. We made changes in our installer to take advantage of this so now on a multicore machine, ngen times should be significantly reduced. Also, on 64bit machines, most .NET applications run as 32bit. This means that paying the price of creating 64bit native images is not something most apps need to do.

    Client Profile

    By producing a subset of the .NET install that contains the features most client applications need, most client applications can take advantage of shorter install times by installing less.

    Parallel Download and Install

    If you are using the web bootstrapper which we made available for the first time in Beta2, you can use the web bootstrapper to install .NET Framework 4. This has the advantage of downloading and installing the payload in parallel. For example, as it is installing the Client Profile, it will be downloading the rest of the framework. In cases where you have enough bandwidth to download the rest before the Client Profile install finishes, you essentially save the time it took to download the rest.

    Original post by Petermarcu

    Abgelegt von Uncategorized
    von

    WiX Working Group video of the night, rerun of wingsuits with decent drum and bass.

    Sunday, 11. April 2010 at 5:37 am

    Most people were out tonight so I decided to do a rerun. This video was actually one of our first videos at the WiX Working Group back before I started posting them here. Joe sent it in a couple weeks ago so I thought I’d show it for you all.

    The drum and bass track is pretty good. We don’t let Mike Holcomb pick the music anymore because all he ever chooses in drum and base. Drum and bass is just too repetitive for me (and that says a lot considering how much old school techno I listened to as a kid). Anyway, about the video. These guys are nuts.

     

    tags: , , , ,

    Original post by Rob Mensching

    Abgelegt von culture
    von

    WiX Working Group video of the night, April Fools from Bungie.

    Monday, 5. April 2010 at 4:23 pm

    I tried really hard to find a good video of an April Fool’s Day video but came up short. Fortunately, Heath came through again with something far better than anything I found. It reminds me of the early days of the WiX toolset when Halo was a huge part of the culture.

    It was the early days of Derek, K, Reid and Robert. Back then we would all get together at my house. We would work on WiX code until some time around 11 PM then someone would wander downstairs to boot the XBox. As people finished up they would wander down and the carnage would ensue. Usually it was Derek or Robert (whoever was playing at the moment) getting regularly fragged.

    There was even a little bit of homage to Halo in the WiX toolset itself. Derek added a "-pedantic" switch to the compiler to check for pedantic things. Derek could often be pedantic and wanted all of the Office source code to follow suit. <smile/> Anyway, he was thinking there should be a couple different levels of pedanticness and asked if they should be named ("normal", "verbose", etc) or numbered ("1", "2", "3", etc). I think it was K who suggested "normal", "heroic" and "legendary". Reid seconded the motion and thus it was. The options were eventually "cleaned up" when the WiX toolset was going to be shipped with Visual Studio.

    Anyway, let me stop talking and let the guys from Bungie take over.

     

    tags: , , , , , , ,

    Original post by Rob Mensching

    Abgelegt von culture
    von