Tôi sử dụng lại các khóa đăng ký UninstallString
hoặc QuietUninstallString
được viết trong quá trình cài đặt để sau đó xác định lệnh trình gỡ cài đặt.
Một vài định nghĩa ở đầu trang:
!define PROJECT_REG_UNINSTALL_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PROJECT_NAME}"
!define PROJECT_UNINSTALL_EXE "uninstall.exe"
Trong bộ cài đặt 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'
Và sau đó trong .onInit
lấy bạn đăng ký giá trị quan trọng (sẽ tồn tại nếu ứng dụng của bạn đã được cài đặt này cách) và chạy nó:
${If} ${Silent}
ReadRegStr $R0 HKLM "${PROJECT_REG_UNINSTALL_KEY}" "QuietUninstallString"
${Else}
ReadRegStr $R0 HKLM "${PROJECT_REG_UNINSTALL_KEY}" "UninstallString"
${EndIf}
ExecWait "$R0"
Nguồn
2013-10-17 20:22:37
+1 cho liên kết –
Không sử dụng $ INSTDIR. Sử dụng giá trị bạn đọc từ sổ đăng ký để đảm bảo rằng giá trị đó là đúng. – utapyngo