Регистрация деинсталляции хранится в реестре, где в реестре вы должны сохранить его, это зависит от того, устанавливает ли ваш установщик программу для всех пользователей или для одного пользователя (например, ваш параметр RequestExecutionLevel):
- пользователь = HKCU
- admin = HKLM
- наивысший = SHCTX (это означает, что вы должны правильно использовать SetShellVarContext, а также правильно восстановить его в деинсталляторе)
Требуются только два значения: DisplayName и UninstallString.
!define REGUNINSTKEY "MyApplication" ;Using a GUID here is not a bad idea
!define REGHKEY HKLM ;Assuming RequestExecutionLevel admin AKA all user/machine install
!define REGPATH_WINUNINST "Software\Microsoft\Windows\CurrentVersion\Uninstall"
Section
WriteRegStr ${REGHKEY} "${REGPATH_WINUNINST}\${REGUNINSTKEY}" "DisplayName" "My application"
WriteRegStr ${REGHKEY} "${REGPATH_WINUNINST}\${REGUNINSTKEY}" "UninstallString" '"$INSTDIR\uninstaller.exe"'
SectionEnd
Есть несколько необязательных значений, которые вы можете установить, MSDN на самом деле не предоставляет список документированных значений, но NSIS Wiki имеет приличный список и эта страница имеет еще более полный список ...