我希望安装程序/卸载程序检查是否安装了任何可能的组件,并仅显示相关组件(安装程序应仅显示尚未安装的组件,卸载程序应仅显示已安装的组件)
我正在使用 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
我尝试了几种不同的方法:
首先,我尝试使用这个宏来检查注册表是否存在:
!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::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”视为可能的组件!
我做错了什么,我该如何实现我的目标?
提前致谢!