A .bat is the worst case but does NSIS prevent a badly written script? I don’t think so, it’s still up to the developer to care. Adding an UI on top of a badly written script will do as much harm as a .bat. (I might be wrong I’m not familiar with NSIS on the dev side while I confess I used it a lot)