Reutilizo las claves de registro UninstallString
o QuietUninstallString
que se escriben durante la instalación para determinar posteriormente el comando del desinstalador.
Un par define en la parte superior:
!define PROJECT_REG_UNINSTALL_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROJECT_NAME}"
!define PROJECT_UNINSTALL_EXE "uninstall.exe"
En el instalador Section
:
WriteRegStr HKLM "${PROJECT_REG_UNINSTALL_KEY}" "UninstallString" '"$INSTDIR\${PROJECT_UNINSTALL_EXE}" _?=$INSTDIR'
WriteRegStr HKLM "${PROJECT_REG_UNINSTALL_KEY}" "QuietUninstallString" '"$INSTDIR\${PROJECT_UNINSTALL_EXE}" /S _?=$INSTDIR'
Y luego, en su .onInit
agarrar el valor clave de registro (existiría si su aplicación ya que se instaló la forma) y ejecutarlo:
${If} ${Silent}
ReadRegStr $R0 HKLM "${PROJECT_REG_UNINSTALL_KEY}" "QuietUninstallString"
${Else}
ReadRegStr $R0 HKLM "${PROJECT_REG_UNINSTALL_KEY}" "UninstallString"
${EndIf}
ExecWait "$R0"
+1 para el enlace –
No use $ INSTDIR. Use el valor que lee del registro para asegurarse de que sea el correcto. – utapyngo