So you have to write a section named "Uninstall" inside your .nsi script file.
section "Uninstall" SetShellVarContext all Delete "$DESKTOP\Your Application.lnk" RMDir /r "$SMPROGRAMS\YourApp" RMDir /r "$INSTDIR" Delete $INSTDIR\uninstall.exe DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\YourApp" sectionEnd
In line 2 it sets ShellVarContext to all (all user's shell folder will be used). If not the default is current user's shell folder. Next line deletes the desktop shortcut. Next 3 lines delete the installation folders. If you entered any registry keys during the installation then you can delete them here (line 7).
While having this "Uninstall" section in your nsis script, you have to invoke it from your "Install" section. Then only the installation will write the uninstaller. Here is a possible association of a installer section to the above uninstaller section.
Section "GENERAL" SetShellVarContext all #Installer body---------(creating desktop/start menu short cuts, granting permissions, etc) #Writing registry keys WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\YourApp" "DisplayName" "Your Application" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\YourApp" "UninstallString" "$INSTDIR\uninstall.exe" # create the uninstaller writeUninstaller "$INSTDIR\uninstall.exe" SectionEnd