Commands
Every NSIS command, grouped by what you are trying to do, each with a
description, a signature and something you can paste. For a count of which
commands are supported, run installua coverage.
Reading an entry. The heading is the NSIS or MUI2 name, because that is what
you already know and what search engines have indexed. Everything under it is
Installua. Square brackets are optional positions, … a repeated one, { … }
the trailing options table. → names what comes back; → nothing means the
call is a statement.
Coverage. Every one of the 276 commands makensis -CMDHELP prints is
accounted for: either in a group below, or in Not available.
The 255 MUI2 names are in the MUI2 reference. Nothing is
pending — the todo bucket of both censuses is empty.
The groups
Section titled “The groups”| Group | Covers |
|---|---|
| Program structure | the blocks a file is made of, and the declarations inside them |
| Script attributes | the attributes {} block: name, output, compression, manifest, version info |
| Sections and install types | what the components page offers and what each part costs |
| Pages and MUI | page.welcome, page.license, … and everything drawn on them — its own file |
| Windows and controls | page.custom: controls, colours, fonts, events |
| Languages and locales | languages { locales = { … } } and the language dialog |
| Files and directories | packing files in, and what happens to them on the target disk |
| Files on the target at runtime | fileOpen and the handle methods |
| Registry and INI | reading and writing HKLM, HKCU, and .ini files |
| Processes and the shell | exec, shortcuts, DLLs, reboot |
| Strings and numbers | string.*, arithmetic, comparison |
| Flow, errors and messages | aborting, testing, telling the user |
| Windows facts | what the machine is: version, shell folders, registry view |
| Plugins and headers | plugin, import, raw, declaring a third-party one |
| Constants | INSTDIR, PROGRAMFILES64, HKLM, … |
| Not available | what has no Installua equivalent, and what to write instead |
Generating this file
Section titled “Generating this file”This document is hand-written, which is exactly what a correspondence document must not stay. Most of it is already in the tables:
| Part of an entry | Where it comes from today |
|---|---|
| Heading (NSIS name) | Row::nsis |
| Signature | a call renderer over Instruction, the shape src/table/doc.rs used to print before it was retired with LANGUAGE.md |
| Return type | Instruction::outputs() and the Ty of each |
| Options list | Row::options, the Offer names |
| Example | Row::example — already written, already compiled |
| Attribute usage line | Class::Attribute(Setting) |
| “Written by the compiler” | Class::Lowering(spelling) |
| “Rejected” reason | Class::Rejected(why) |
| MUI spelling | mui::rows::Row’s second field |
| Group | new: Row::group |
| Description | new: Row::blurb, one or two sentences |
So the generator is src/table/reference.rs, a
cargo run -q -- generate reference > docs/reference-map.md arm beside generate table, and two
new fields the census can require exactly the way it requires a class today — a
command with no group is a census failure, which is what stops a new NSIS
version quietly adding an undocumented command.
Open questions for the group axis:
- One group per command, or several?
CreateShortcutis both “files and directories” and “processes and the shell”. One group keeps the document a partition and the census a count; several needs an index instead. - Where do the non-command surfaces go?
page.*,import,glob, the control types andstring.*have no-CMDHELPline and so no row, but a user reference without them has holes exactly where beginners look. This draft writes them by hand; a generator needs rows of their own. - The MUI half is a second table.
src/mui/rows.rscarries one spelling per name and no group, so the same two fields have to land there too.