title: NSIS doesn't abort install when uninstall is in onInit
body: <p>I have an installer that makes it mandatory to uninstall the previous version before the new version can be installed.  </p>
  
  <p>However, when the initial question gets asked it does so.  But the uninstall dialogue doesn't.</p>
  
  <pre><code>MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \
    "${PRODUCT_NAME} is already installed. $\n$\nIf you have software older than 3.0,     please manually uninstall it with Windows before procedeing. $\n$\nClick `OK` to remove the \
    previous version or `Cancel` to cancel this upgrade." \
    IDOK uninst IDCANCEL giveup
  
  ; I am giving up
  giveup:
  Abort
  
  ;  Run the uninstaller
  uninst:
   ClearErrors
   ExecWait '$R0 _?=$INSTDIR' ;Do not copy the uninstaller to a temp file
   IfErrors no_remove_uninstaller
   no_remove_uninstaller:
   install:
   ; ..... snip
  </code></pre>
  
  <p>Then here</p>
  
  <pre><code>Function un.onInit
     MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to     completely remove $(^Name) and all of its components?" IDYES NoAbort
    Abort
    NoAbort:
  FunctionEnd
  </code></pre>
  
  <p>So, when it is a standalone uninstall it seems to be fine, but when it is uninstalling at the beginning, if a user says No/Cancel, the installer will still go on when they say no.  I can't think of a reason as to why.  As an ill side-effect, the program files icon on start menu is orphaned and the uninst.exe is orphaned.  But if you run the uninstaller "manually" it seems to be fine.  I had no changed any of that logic other than trying to get this thing to work.</p>
  
  <p>Thanks.</p>