Shortcuts, icons and folders #12

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

Parent

Part of #1

What to build

Shortcut puts the program in the Start menu, Icon gives the product and its shortcuts an icon (stored in the installer package's binary streams), and CreateFolder and RemoveFolder create and clean up directories that hold no files.

Acceptance criteria

  • Seam 1 tests assert the Shortcut, Icon, CreateFolder and RemoveFile rows, and the icon's stream.
  • VM test: after a Wine install the .lnk file exists in the Start menu folder and the empty folder exists; after uninstall both are gone.
  • VM test: the tables match the reference implementation's with generated columns masked.
## Parent Part of #1 ## What to build `Shortcut` puts the program in the Start menu, `Icon` gives the product and its shortcuts an icon (stored in the installer package's binary streams), and `CreateFolder` and `RemoveFolder` create and clean up directories that hold no files. ## Acceptance criteria - [ ] Seam 1 tests assert the `Shortcut`, `Icon`, `CreateFolder` and `RemoveFile` rows, and the icon's stream. - [ ] VM test: after a Wine install the `.lnk` file exists in the Start menu folder and the empty folder exists; after uninstall both are gone. - [ ] VM test: the tables match the reference implementation's with generated columns masked.
jeff self-assigned this 2026-10-14 04:49:13 -05:00
Author
Owner

Done in 9eda91c; CI run 10 is green.

  • Icons: Icon puts its data in the Icon table as a stream.
  • Shortcuts: Shortcut, in a File (opening [#File]) or a Component (with a Target), fills every Shortcut column, its name as short|long.
  • Folders:
    • CreateFolder makes a CreateFolder row;
    • RemoveFolder and RemoveFile make RemoveFile rows, on install, uninstall or both, wildcards allowed in a file's name;
    • Component/@KeyPath="yes" makes the directory the key path.
  • Sequences: the shortcut and folder actions join them when there are rows, each action once.
  • Not supported yet: advertised shortcuts, which are refused by name.
  • Seam 1: a test for each of the above.
  • End to end: the shortcuts fixture's tables match wixl's, after one correction in .wixl-errata. Under Wine on x86 and x64, the .lnk lands in the Start menu, the data folder is created, and after uninstall both are gone, the menu folder included. .installed lines may now be globs and may ask only for a file or a directory.

wixl writes a non-advertised shortcut's Target as its feature, which is the advertised form.

Done in 9eda91c; CI run 10 is green. - **Icons:** `Icon` puts its data in the Icon table as a stream. - **Shortcuts:** `Shortcut`, in a `File` (opening `[#File]`) or a `Component` (with a `Target`), fills every Shortcut column, its name as `short|long`. - **Folders:** - `CreateFolder` makes a CreateFolder row; - `RemoveFolder` and `RemoveFile` make RemoveFile rows, on install, uninstall or both, wildcards allowed in a file's name; - `Component/@KeyPath="yes"` makes the directory the key path. - **Sequences:** the shortcut and folder actions join them when there are rows, each action once. - **Not supported yet:** advertised shortcuts, which are refused by name. - **Seam 1:** a test for each of the above. - **End to end:** the `shortcuts` fixture's tables match wixl's, after one correction in `.wixl-errata`. Under Wine on x86 and x64, the `.lnk` lands in the Start menu, the data folder is created, and after uninstall both are gone, the menu folder included. `.installed` lines may now be globs and may ask only for a file or a directory. wixl writes a non-advertised shortcut's Target as its feature, which is the advertised form.
jeff closed this issue 2026-10-14 05:36:12 -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#12
No description provided.