Я хочу, чтобы установщик/деинсталлятор проверял, установлен ли какой-либо из возможных компонентов, и отображать только релевантные компоненты (установщик должен отображать только компоненты, которые еще не установлены, а деинсталлятор должен отображать только уже установленные компоненты)NSIS - Условные компоненты дисплея
Я использую MUI.
компонент раздел моего .nsi выглядит примерно так:
; Section descriptions
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${Component1} "Component1 Description"
!insertmacro MUI_DESCRIPTION_TEXT ${Component2} "Component2 Description."
!insertmacro MUI_DESCRIPTION_TEXT ${Component3} "Component3 Description."
!insertmacro MUI_FUNCTION_DESCRIPTION_END
Я попробовал несколько различных способов:
Во-первых, я попытался с помощью this macro для проверки, если существует реестр:
!insertmacro IfKeyExists HKEY_LOCAL_MACHINE SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall "Component1"
Pop $R0
${If} $R0 == 0 #Not installed yet. Display.
!insertmacro MUI_DESCRIPTION_TEXT ${Component1} "Component1"
${EndIf}
Это не помогло.
Затем я попытался с помощью Registry Plug-In:
${registry::KeyExists} "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Component1" $R0
${If} $R0 == 0 #Not installed yet. Display.
!insertmacro MUI_DESCRIPTION_TEXT ${Component1} "Component1"
${EndIf}
Это не сработало.
Итак, я, возможно, думал, что какая-то другая более основная проблема, и я попытался это:
StrCpy $0 "0"
${If} $0 == "1"
!insertmacro MUI_DESCRIPTION_TEXT ${Component1} "Component1 Description."
${EndIf}
Но даже тогда я все еще видел «Component1» в качестве возможного компонента во время установки!
Что я делаю неправильно и как я могу достичь своей цели?
Заранее благодарен!
Спасибо, это работало большое :) –