Fragments, references and several WiX sources #8

Closed
opened 2026-10-14 01:26:54 -05:00 by jeff · 1 comment
Owner

Parent

Part of #1

What to build

Fragment, DirectoryRef, ComponentRef, ComponentGroup, ComponentGroupRef and FeatureRef, with several WiX sources given on one command line and compiled into one WiX document. Referencing a fragment pulls it in. An Id used twice for the same kind of element is an error naming both locations; a reference to an Id that does not exist is an error naming it.

Acceptance criteria

  • Seam 1 tests: a product split across three WiX sources builds the same installer database as the same product in one.
  • Seam 1 tests: a duplicate Id gives a diagnostic naming both locations; an unresolved reference gives one naming the missing Id and where it was referenced.
  • Seam 1 test: a fragment nothing references contributes nothing.
  • VM test: the multi-source fixture's tables match the reference implementation's with generated columns masked, and it installs under Wine.
## Parent Part of #1 ## What to build `Fragment`, `DirectoryRef`, `ComponentRef`, `ComponentGroup`, `ComponentGroupRef` and `FeatureRef`, with several WiX sources given on one command line and compiled into one WiX document. Referencing a fragment pulls it in. An `Id` used twice for the same kind of element is an error naming both locations; a reference to an `Id` that does not exist is an error naming it. ## Acceptance criteria - [ ] Seam 1 tests: a product split across three WiX sources builds the same installer database as the same product in one. - [ ] Seam 1 tests: a duplicate `Id` gives a diagnostic naming both locations; an unresolved reference gives one naming the missing `Id` and where it was referenced. - [ ] Seam 1 test: a fragment nothing references contributes nothing. - [ ] VM test: the multi-source fixture's tables match the reference implementation's with generated columns masked, and it installs under Wine.
jeff self-assigned this 2026-10-14 03:54:11 -05:00
Author
Owner

Done in 30c8a57; CI run 8 is green.

  • The model: each <Product> and <Fragment> is a section. Linking starts from the one product and pulls in every section reachable through DirectoryRef, ComponentRef, ComponentGroupRef, FeatureRef, PropertyRef, Component/@Directory and ComponentGroup/@Directory. Component groups, including groups within groups, expand into the features that name them.
  • Seam 1:
    • three sources build the same tables as one source holding the same sections;
    • an unreferenced fragment contributes nothing;
    • a duplicate Id across sources names both places;
    • an unresolved reference names the Id and where it was referred to;
    • there must be exactly one <Product>.
  • End to end: the three-source split fixture matches wixl's tables and installs under Wine on x86 and x64.

Where the reference implementation departs from WiX:

  • It has no <FeatureRef> under <Product>.
  • It links every fragment, whether or not anything refers to it.

The comparison fixture stays off both.

Done in 30c8a57; CI run 8 is green. - **The model:** each `<Product>` and `<Fragment>` is a section. Linking starts from the one product and pulls in every section reachable through `DirectoryRef`, `ComponentRef`, `ComponentGroupRef`, `FeatureRef`, `PropertyRef`, `Component/@Directory` and `ComponentGroup/@Directory`. Component groups, including groups within groups, expand into the features that name them. - **Seam 1:** - three sources build the same tables as one source holding the same sections; - an unreferenced fragment contributes nothing; - a duplicate Id across sources names both places; - an unresolved reference names the Id and where it was referred to; - there must be exactly one `<Product>`. - **End to end:** the three-source `split` fixture matches wixl's tables and installs under Wine on x86 and x64. Where the reference implementation departs from WiX: - It has no `<FeatureRef>` under `<Product>`. - It links every fragment, whether or not anything refers to it. The comparison fixture stays off both.
jeff closed this issue 2026-10-14 04:44:44 -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#8
No description provided.