We will be doing a change that will probably affect most users of WiX v3, so I wanted to get this blog post out in the community to notify people of the upcoming change. Within the next few weeks we will be changing the file extension of WiX extensions from .dll to .wixext. There are several reasons why we think this is an important thing to do:
- Wix-specifc file extensions
- OS file handlers and icons
- Votive UI
WiX-specific File Extensions
Although a WiX extension is really just a .NET assembly with an embedded XSD and wixlib, it really should be differentiated as a separate file type. This gives us the flexibility to change the format of the file in the future without affecting the semantics of how you work with the file.
Also, we have WiX-specific file extensions for all of our other types of files. For example, .wxs, .wxi, and .wxl are all XML files, but giving a separate file extension provides ease of use.
OS File Handlers and Icons
Typically a file extension is handy when viewing and working with files in Windows Explorer. For example, when you double-click a .wxs file (assuming you have installed Votive), then Visual Studio will be opened and will display the contents of that file. Users are also free to associate other tools with a given file extension. The problem with using the .dll extension in our WiX extensions is that it limits our flexibility in regards to open behavior in Windows Explorer. First of all, a DLL is a special type of entity in Windows, so mapping editors/viewers to the .DLL extension is not always possible or advisable. In the future, we may want to open WiX extensions in Votive in a special type of viewer or editor. By having a separate .wixext file extension, it gives us this flexibility.
One other advantage to using .wixext is that we can associate an icon with the extension. We can't do that if we use the .DLL extension (well we can but not without writing some code to open up the file and detect whether it is truly a WiX extension).
In Votive, when you want to add a reference to an extension the "Add Reference" dialog will be shown. Currently it filters on WiX Extension Files (*.dll) which shows all of the standard extensions, but it also will show things like wix.dll, which aren't WiX extensions. That's a little confusing to a new user I think. Granted, we do name our extensions things like WixIIsExtension.dll, so it's at least somewhat evident, but still it's confusing. If we can instead filter on *.wixext then only valid WiX extensions are shown in the Add Reference dialog.
Although the file extension will change from .dll to .wixext the tools will still support the old .dll extension. In fact, they really won't impose any restriction on the file extension since the contents of the file are what matter.
How Does this Affect You?
If you use any of the standard WiX custom action extensions, then you'll have to change your build scripts to reference the new names.
If you use MSBuild or Votive, then you'll have to change any references you have in your .wixproj files (
<WixExtension> elements). You can do this manually by hand-editing the .wixproj file or you can do this by removing the old references (right mouse click and select "Remove") and then re-adding them.
<WixExtension Include="$(ProgramFiles)\Windows Installer XML v3\bin\WixIIsExtension.wixext" />
We will also try to put out a similar reference for NMake and NAnt when the feature gets checked in.
The bug tracking this feature is at http://sourceforge.net/tracker/?func=detail&atid=642714&aid=1868802&group_id=105970.
We expect to have the work done and checked in by the end of February. We will send out another notice to the email@example.com alias and I will also post another blog entry when this happens.