I have been unsuccessfully trying to find an article or post listing functional limitations of WiX (Windows Installer XML)/WiX Toolset. After using WiX for a couple of weeks, I can think of at least two limitations in the most recent RTM version (v3.0):
- WiX Toolset cannot make a bootstrapper (setup.exe).
- WiX Toolset cannot retrieve COM registration info from a COM executable.
Can you think of other limitations? Something you ran into while working on a deployment project? I think this info could be handy for people who learn WiX.
What is WiX toolset used for?
Windows Installer XML Toolset (WiX, pronounced "wicks"), is a free software toolset that builds Windows Installer packages from XML. It consists of a command-line environment that developers may integrate into their build processes to build MSI and MSM packages.
Does WiX support .NET 6?
NET 6 runtime is installed. WiX provides pre-defined properties to check this for . NET framework but nothing for .
It's easiest for me to answer this question in terms of what is WiX missing that InstallShield has ( feature gap ).
-
Bootstrapper/Chainer - WiX has a bootstrapper called Burn which is now included in WiX v3.6.
- XML Read - WiX only has CA's for
writing not reading ( AppSearch ) XML
files
- Text Search / Replace - InstallShield
has patterns for reading/writing non
INI/XML files
- MSSQL Only - No support for Oracle
and MySQL
- Automation Interface - No DOM for
programatically updating/generating
projects. Have to do it all with raw
XML.
-
No Native IIS 7 support - Native IIS7 support is present from WiX v3.5
- Mostly Text Only toolset. No GUI
Designers for heavy lifting ( see
IsWiX ). XML is concise and has it's
place but it's like comparing Notepad
to Blend.
I've used heat to extract COM fairly successfully so that's no longer a concern to me.
I would add several more points, but these can hardly be called serious limitations since they all can be worked around:
- There's no ready-made tool to embed transforms (MST) into the MSI package; this is where msidb.exe comes to the rescue
- You have to do extra work to create a single package with a number of localizations, like creating N packages, generate N language transforms against a neutral package, embed those transforms into the package, instruct your bootstrapper to call correct language transform
- WiX 3.0 has rather limited IIS extension - it supports IIS 7 only in IIS 6 compatibility mode; but fortunately this is no longer true for WiX 3.5
- Heat can't generate "1 component - N files" by default. Yeah, I know, it's not recommended, but sometimes you need it; fortunately, you can transform the heat output the way you like with XSL
- PermissionEx of UtilExtension doesn't have a switch to set ACLs on folders only. If you need to set ACLs to your installed files only, this is quite minor. But I had to patch WiX with a quick fix to be able to say "apply these permissions to folders only" on existing file system tree
Again, let me repeat that I don't consider those serious limitations. I'm very happy with what Rob and the team have done so far, and they are on a right track! :)