WiX

Let's Code - WiX: tables.xml and a typo

Last week I fixed my oldest bug in WiX v3.11, the bad filenames bug. This week I'm going to continue to start with my oldest bug and grab a couple others that are related.

So I’m fixing #4812, #4813, #5270 and because I expect those to be easy, I’ll also fix #5438. To be honest, I expect it will take me longer to write this blog entry about my work than it will to do the actual work. Let’s see if I’m right. Let’s code!

Checkout

The first three issue are all bugs in tables.xml. It’s just a matter of figuring out which tables.xml.

Quick refresher about tables.xml. The tables.xml contains the table definitions for the tables that end up in your MSI. So wix.dll has a very large tables.xml file that defines all the table defintions defined by the MSI SDK. Most of the WiX Extensions do as well.

So the first two issues are clearly in the IIS WiX Extension and the third is part of the core thus found in wix.dll.

The last issue, #5438, is a typo in candle.exe.

Time to start coding.

    git fetch upstream
    git merge --ff --ff-only upstream/develop
    git checkout -b 4812-4813-5270-5438-tables-typo

Commit

The first step was to look in the IIS Extension’s tables.xml at \src\ext\IIsExtension\wixext\data\. Search for “AppPool” and see:

<tableDefinition name="IIsAppPool" createSymbols="yes">
  <columnDefinition name="AppPool" type="string" length="72"
        primaryKey="yes" modularize="column"
        category="identifier" description="Primary key, non-localized token for apppool"/>
  <columnDefinition name="Name" type="string" length="72"
        category="formatted" description="Name to be used for the IIs AppPool."/>

The bug is right. We have a formatted column called Name that is not set to to be modularized.

It makes me wonder why we don’t modularize formatted columns by default. Maybe something to solve in the future. For now the fix is easy. Add modularize="property" attribute.

The next bug, #4813, should have been trivial but the title of the bug sent me looking at the IIsWebDirProperties table. Which has no Name column. Eventually, I looked closer at the text of the bug and realized the issue was in the IIsWebApplication table.

To all you opening bugs. Help a developer out. Please take care and put accurate information in your bug reports.

Hopefully the guy in the next issue, #5270, had his act together. A couple nullable="yes" attributes in src\tools\wix\Data\tables.xml and we’re done with that one.

So, let’s take a look at candle.cs for too much “sfdvital” and not enough “ss”. That is also an easy and obvious fix.

And we’re done for tonight. 4 bugs lighter. If only the rest of my bugs would all be this easy.

git add src\ext\IIsExtension\wixext\data\tables.xml
git commit

    > Properly modularize IIsAppPool Name column
    >
    > Fixes wixtoolset/issues#4812


git add src\ext\IIsExtension\wixext\data\tables.xml
git commit

    > Properly modularize IIsAppPool Name column
    >
    > Fixes wixtoolset/issues#4813


git add src\tools\wix\data\tables.xml
git commit

    > Properly set WixMerge columns nullable
    >
    > FileCompression and ConfigurationData should both be nullable.
    >
    > Fixes wixtoolset/issues#5270


git add src\tools\candle\candle.cs
git commit

    > Properly set WixMerge columns nullable
    >
    > FileCompression and ConfigurationData should both be nullable.
    >
    > Fixes wixtoolset/issues#5270

Pull request

Until next time! Keep coding. You know I am.