インストーラー/アンインストーラーに、可能なコンポーネントのいずれかがインストールされているかどうかを確認し、関連するコンポーネントのみを表示するようにします(インストーラーは、まだインストールされていないコンポーネントのみを表示し、アンインストーラーは、インストール済みのコンポーネントのみを表示する必要があります)
私は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」が可能なコンポーネントとして表示されました。
私は何を間違っているのですか、そしてどうすれば私の目標を達成することができますか?
前もって感謝します!