NSIS trivia

Today I learned:

  • Modern UI dialogs are 140×300 pixels
  • nsDialogs::create 1018 creates a standard dialog according to the docs for NSDialogs, but most code uses 1044 instead (todo: investigate difference)
  • The Modern UI also has control 1040 for the welcome and the finish page.

NSIS Section flag tests

Today I learned:

[sourcecode language=”Python”]
SectionGetFlags ${SEC_AI}      $0
${If} $0 == ${SF_SELECTED}
[/sourcecode]

I was using the above code and getting inconsistent behavior. Turns out ${SF_SELECTED} is defined in sections.nsh bitmask style. The statement above ONLY works for a section that is selected and has no other attributes set. A read-only section that is selected, for example, will be set to “17” — 1 (selected) + 16 (readonly). Turns out that LogicLib has a way to make life easier:

[sourcecode language=”python”]
${If} ${SectionIsSelected} ${SEC_AI}
[/sourcecode]