Как удалить предыдущую версию установщика, если она уже существует, используя NSIS с настроенными экранами, похожими на показанные ниже, предоставляя опции Изменить, Восстановить и Удалить:
Я использую приведенный ниже фрагмент кода и использую его, чтобы он высветил окно сообщения и беззвучно удалил его, если присутствует предыдущая версия.
ReadRegStr $R0 HKLM "SOFTWARE\EMR\Medical Record\3.01.00" "InstallPath"
${If} $R0 != ""
MessageBox MB_OKCANCEL "EMR is already installed in $R0 Remove the pervious version?" IDOK uninst
Abort
uninst:
ExecWait '"MsiExec.exe" /X{8ED262EE-FC73-47A9-BB86-D92223246881} /qn'
${EndIf}
Но как отобразить экран, чтобы дать пользователю опции Изменить, Восстановить и Удалить?
Ниже приведен мой обновленный код, с помощью которого я могу удалить текущую сборку, используя опцию Удалить. Пожалуйста, помогите мне, как это сделать для вариантов изменения и ремонта
Page custom nsDialogsPage nsDialogsPageLeave
!insertmacro MUI_PAGE_INSTFILES
Function nsDialogsPage
nsDialogs::Create 1044
Pop $Dialog
${If} $Dialog == error
Abort
${EndIf}
!define MUI_REMOVEPAGE_TITLE_HEIGHT 30
${NSD_CreateLabel} 120u 10u 195u ${MUI_REMOVEPAGE_TITLE_HEIGHT}u "Remove Installation"
Pop $RemovePageTitle
CreateFont $RemovePageFont "$(^Font)" "12" "700"
SendMessage $RemovePageTitle ${WM_SETFONT} $RemovePageFont 0
${NSD_CreateButton} 12% 20% 25% 10% "Change"
Pop $buttonRepair
${NSD_CreateLabel} 18% 35% 100% 12u "Change independently selectable features"
Pop $Label
${NSD_CreateButton} 12% 50% 25% 10% "Repair"
Pop $buttonRepair
${NSD_CreateButton} 12% 80% 25% 10% "Remove"
Pop $buttonUninstall
EnableWindow $button 1 # start out disabled
EnableWindow $button2 1
${NSD_OnClick} $buttonRepair ManageRepair
${NSD_OnClick} $buttonUninstall ManageUninstall
nsDialogs::Show
FunctionEnd
Function ManageRepair
MessageBox MB_OK "Repair"
FunctionEnd
Function ManageUninstall
MessageBox MB_OK "Uninstallation"
ExecWait "$INSTDIR\uninstall.exe"
FunctionEnd
Function nsDialogsPageLeave
${NSD_GetText} $Text $0
MessageBox MB_OK "You typed:$\n$\n$0"
FunctionEnd