The WiX Tutorial has a new home, just around the corner here at FireGiant.

Gábor DEÁK JAHN created, maintained, and hosted the WiX Tutorial for many years. I was always glad to have a freely available learning resource for WiX: It reduced my guilt for not doing it myself. (When I first expressed an interest in contributing to WiX, Rob seemed briefly excited about me being a writer—until I said I wanted to mostly write code instead.) So thanks, Gábor, for a valuable resource!

Transmogrification

The original WiX Tutorial used Drupal as a content-management system. The FireGiant Web site is built with tinySite, a static site generator built by this guy Rob Mensching. One of the things tinySite lets us do is write Web site content using Markdown, a popular plain-text format. So we had to convert the HTML we got out of Drupal into Markdown. One of the interesting rules about Markdown is that valid HTML is also valid Markdown. But one of the benefits of Markdown is that it's a very clean and simple format, which makes it a lot easier to read when you're editing—especially with code. For example, authoring a code fragment in Markdown just requires a four-space indent:

    <Feature Id='Complete' Title='Foobar 1.0' Description='The complete package.' ...>
        <Feature Id='Documentation' Title='Description' Description='The instruction manual.' Level='1'>
            <ComponentRef Id='Manual' />
        </Feature>
    </Feature>

whereas the HTML looks like this:

<pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-title">Feature</span> <span class="hljs-attribute">Id</span>=<span class="hljs-value">'Complete'</span> <span class="hljs-attribute">Title</span>=<span class="hljs-value">'Foobar 1.0'</span> <span class="hljs-attribute">Description</span>=<span class="hljs-value">'The complete package.'</span> <span class="hljs-attribute">...</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-title">Feature</span> <span class="hljs-attribute">Id</span>=<span class="hljs-value">'Documentation'</span> <span class="hljs-attribute">Title</span>=<span class="hljs-value">'Description'</span> <span class="hljs-attribute">Description</span>=<span class="hljs-value">'The instruction manual.'</span> <span class="hljs-attribute">Level</span>=<span class="hljs-value">'1'</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-title">ComponentRef</span> <span class="hljs-attribute">Id</span>=<span class="hljs-value">'Manual'</span> /&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-title">Feature</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-title">Feature</span>&gt;</span>
</code></pre>

I know which I prefer.

So the basic approach we used is the classic Unix tool sed followed by a fair bit of hand editing.

Futures

The first changes we'll make in the Tutorial are to correct any bugs introduced in the conversion process.

After that, the biggest change we plan on making in the Tutorial is to bring it up to the features available in the latest versions of the WiX Toolset. We've made WiX language simplifications (like this and that) over the years that could make the Tutorial more accessible for those new to WiX.

What changes would you like to see in the Tutorial? Please let us know!

Start reading the WiX Tutorial »