我想安装/卸载,以检查是否有任何可能的组件的安装,并只显示relevan组件(安装程序将只显示部件尚未安装和卸载程序应该只显示已安装的组件)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”作为一个可能的成分!
我在做什么错,我该如何去实现我的目标?
在此先感谢!
谢谢,这真是棒极了:) –