title: Show finish page if user click cancel on license page NSIS
body: <p>I have two license page and in the second license page, if user choose not to install the 3rd party app, it will show finish page. So far I use <code>MUI_CUSTOMFUNCTION_ABORT onUserAbort</code> to move into finish page. </p>
  
  <p>But the problem is when user click Skip button (it's actually Cancel button and I rename it into Skip), it will stay on license page and the Install button change to Next button (image 1 -> image 2 -> image 3). I know this is happen because I call <code>Abort</code> in <code>onUserAbort</code>. If I don't call <code>Abort</code>, then the window will automatically close when user click Skip.</p>
  
  <p>Do you have any idea how to directly move to finish page? (image 1 -> image 3, without image 2)</p>
  
  <pre><code>!insertmacro MUI_PAGE_WELCOME
  page custom CheckHWSpecs ShowNotMeetRequirementDialog
  !insertmacro MUI_PAGE_LICENSE "${SOURCEFOLDER}\license1.txt"
  !define MUI_DIRECTORYPAGE_VERIFYONLEAVE
  !insertmacro MUI_PAGE_DIRECTORY
  !insertmacro MUI_PAGE_STARTMENU Application $StartMenuGroup
  !insertmacro MUI_PAGE_INSTFILES
  !define MUI_LICENSEPAGE_CHECKBOX
  !define MUI_PAGE_CUSTOMFUNCTION_PRE Lic2Pre
  !define MUI_PAGE_CUSTOMFUNCTION_SHOW Lic2Show
  !insertmacro MUI_PAGE_LICENSE "${SOURCEFOLDER}\license2.txt"
  !insertmacro MUI_PAGE_INSTFILES
  !insertmacro MUI_PAGE_FINISH
  !insertmacro MUI_UNPAGE_CONFIRM
  !insertmacro MUI_UNPAGE_INSTFILES
  
  !define MUI_CUSTOMFUNCTION_ABORT onUserAbort
  !insertmacro MUI_LANGUAGE English
  </code></pre>
  
  <p>The code on Lic2Pre:</p>
  
  <pre><code>Function Lic2Pre
      StrCpy $R8 2
  FunctionEnd
  </code></pre>
  
  <p>The code on Lic2Show:</p>
  
  <pre><code>Function Lic2Show
      GetDlgItem $0 $hwndparent 2
      SendMessage $0 ${WM_SETTEXT} 0 "STR:Skip"
  
      !insertmacro SelectSection ${SEC0013}
      !insertmacro UnselectSection ${SEC0000}
      !insertmacro UnselectSection ${SEC0002}
      !insertmacro UnselectSection ${SEC0003}
      !insertmacro UnselectSection ${SEC0004}
      !insertmacro UnselectSection ${SEC0005}
      !insertmacro UnselectSection ${SEC0007}
      !insertmacro UnselectSection ${SEC0010}
      !insertmacro UnselectSection ${SEC0011}
      !insertmacro UnselectSection ${SEC0012}
  FunctionEnd
  </code></pre>
  
  <p>The code to go into specific page:</p>
  
  <pre><code>Function RelGotoPage
    IntCmp $R9 0 0 Move Move
      StrCmp $R9 "X" 0 Move
        StrCpy $R9 "120"
  
    Move:
    SendMessage $HWNDPARENT "0x408" "$R9" ""
  FunctionEnd
  </code></pre>
  
  <p>The custom function on user abort:</p>
  
  <pre><code>Function onUserAbort
    StrCmp $R8 2 0 End
      StrCpy $R9 2
      Call RelGotoPage
      Abort
    End:
  FunctionEnd
  </code></pre>
  
  <p><img src="https://i.stack.imgur.com/ZxXIa.png" alt="Image 1: The second license page"></p>
  
  <p><img src="https://i.stack.imgur.com/iZJsd.png" alt="Image 2: If user click Skip"></p>
  
  <p><img src="https://i.stack.imgur.com/CyErZ.png" alt="Image 3: Finish Page"></p>