Anders - 2022-12-13
  • NSIS does not officially support threads
  • The code in a Section already runs in a background thread, I don't see the need to call CreateShortcut in yet another thread.

The reason CreateShortcut fail is because it needs System::Call OLE32::OleInitialize(p0) for COM to work on that thread.

That being said, neither StrCpy, SetOutPath nor System:: is safe to do in another thread.