Повторное использование UninstallString
или QuietUninstallString
ключей реестра, которые записываются во время установки, чтобы позже определить команду удаления.
Пара определяет на вершине:
!define PROJECT_REG_UNINSTALL_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROJECT_NAME}"
!define PROJECT_UNINSTALL_EXE "uninstall.exe"
В инсталлер 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'
, а затем в вашем .onInit
захватить значение ключа реестра (существовало бы, если ваше приложение уже установлено это) и запустите его:
${If} ${Silent}
ReadRegStr $R0 HKLM "${PROJECT_REG_UNINSTALL_KEY}" "QuietUninstallString"
${Else}
ReadRegStr $R0 HKLM "${PROJECT_REG_UNINSTALL_KEY}" "UninstallString"
${EndIf}
ExecWait "$R0"
+1 для ссылки –
Не используйте $ INSTDIR. Используйте значение, которое вы читаете в реестре, чтобы убедиться, что оно правильно. – utapyngo