When there are tabs in the custom table data a compilation error occurs, as if the compiler 开发者_C百科thinks the tab is attempting to create another column.
I have tried an actual tab, xml escaped tab (	), and msi escaping a tab ([{tab}], where {tab} is an actual tab)
Example: <Data Column="">Testing 1,2,3</Data>
In between 'Testing' and '1,2,3' is a tab.
The error is: The custom table column '1,2,3' is unknown.
You can't -- data is imported into the .msi package via a tab-delimited file. See "Archive File Format" in the MSI SDK. If the field can be binary, you can import a file's content, which can be anything.
I experimented some more with orca after looking at the "Archive File Format" in the MSI SDK, and saw the translation of tabs to char 16(DLE).
From digging into the source, it appears the compiler uses a tab delimited intermediate format to pass custom table rows to the linker, however it does not escape actual tabs in the data in any way.
This is why the data after tabs look like column names.
Wix already properly translates the carriage return, 17(DC1), and line feed, 25(EM), control characters mentioned with the tab in the SDK.
From the source it is coded to also translate tabs correctly, but a tab will never appear in the data because of the previously mentioned intermediate format.
Wix should be able to use a character that will never appear in xml instead of tab.
I downloaded the source and changed the compiler and linker to use null, \x0, instead of tab, \t, and it resolved the problem confirming my earlier suspician. I will open it as a bug.
精彩评论