zixl-info exports tables, and lists and extracts streams #20

Closed
opened 2026-10-14 09:50:53 -05:00 by jeff · 1 comment
Owner

Part of #18

What to build

zixl-info export [-s] FILE TABLE, zixl-info streams FILE and zixl-info extract FILE STREAM, as msiinfo has them. A table is exported in Windows Installer's text archive format, or with -s as SQL.

Acceptance criteria

  • export writes the column names, column definitions, table name and keys, and the rows, with tab, carriage return and line feed escaped as the text archive format documents. _Tables, _Columns, _SummaryInformation and _ForceCodepage can be exported too.
  • export -s writes CREATE TABLE and INSERT statements.
  • streams lists every stream that is not a table. extract writes one stream's bytes to standard output.
  • nix flake check compares each with msiinfo's output for zixl's and wixl's package of every fixture, normalizing only the documented differences.

Blocked by

Part of #18 ## What to build `zixl-info export [-s] FILE TABLE`, `zixl-info streams FILE` and `zixl-info extract FILE STREAM`, as `msiinfo` has them. A table is exported in Windows Installer's text archive format, or with `-s` as SQL. ## Acceptance criteria - [ ] `export` writes the column names, column definitions, table name and keys, and the rows, with tab, carriage return and line feed escaped as the text archive format documents. `_Tables`, `_Columns`, `_SummaryInformation` and `_ForceCodepage` can be exported too. - [ ] `export -s` writes `CREATE TABLE` and `INSERT` statements. - [ ] `streams` lists every stream that is not a table. `extract` writes one stream's bytes to standard output. - [ ] `nix flake check` compares each with `msiinfo`'s output for zixl's and wixl's package of every fixture, normalizing only the documented differences. ## Blocked by - #19
Author
Owner

Done in f549911, green in CI run 18.

  • zixl-info export writes a table in Microsoft's text archive format, and export -s writes SQL as msiinfo does.
  • streams and extract match msiinfo.
  • _Tables, _Columns, _SummaryInformation and _ForceCodepage export too.
  • ADR-0006 records where the format departs from msitools': text in the database's code page, named on row 3; control characters translated; KEY.ibd binary files; _ForceCodepage's line ended.
  • Every table, both ways, every stream list and every stream's bytes are compared with msiinfo for zixl's and wixl's package of every fixture.
  • Reading a neutral-code-page database now takes non-ASCII text as UTF-8 when valid, and as Windows-1252 otherwise, as msitools does with wixl's packages.
Done in f549911, green in CI run 18. - `zixl-info export` writes a table in Microsoft's text archive format, and `export -s` writes SQL as `msiinfo` does. - `streams` and `extract` match `msiinfo`. - `_Tables`, `_Columns`, `_SummaryInformation` and `_ForceCodepage` export too. - ADR-0006 records where the format departs from msitools': text in the database's code page, named on row 3; control characters translated; `KEY.ibd` binary files; `_ForceCodepage`'s line ended. - Every table, both ways, every stream list and every stream's bytes are compared with `msiinfo` for zixl's and wixl's package of every fixture. - Reading a neutral-code-page database now takes non-ASCII text as UTF-8 when valid, and as Windows-1252 otherwise, as msitools does with wixl's packages.
jeff closed this issue 2026-10-14 11:24:50 -05:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
jeff/zixl#20
No description provided.