NSIS:如何检查应用程序是否已安装

NSIS: How check that application is installed

我需要检查是否安装了 Microsoft filter pack 2.0 应用程序。我找到了 this 答案,但在我的例子中,我没有应用程序名称,而是名称目录,注册表中的程序名为 {95140000-2000-0409-1000-0000000FF1CE} 这是我检测已安装应用程序的代码:

ReadRegStr [=10=] HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall${FILTER_PACK_KEY}" "UninstallString"
IfErrors FilterPackNotFound FilterPackFound

64 位 Windows 上的注册表有 two "views",32 位应用程序默认访问 32 位视图。

NSIS 可以使用 SetRegView 指令访问 64 位视图:

Section
SetRegView 64
RegReadStr [=10=] HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\{95140000-2000-0409-1000-0000000FF1CE}" "UninstallString"
SetRegView 32
MessageBox mb_ok [=10=]
SectionEnd