NSIS:使用通配符查找注册表项

时间:2019-11-12 21:42:08

标签: nsis

问题的背景是我正试图从Windows Installer系统移至NSIS。 在安装过程中,向用户显示了我的软件的已安装版本列表,其中应包括以前使用Windows Installer系统进行的安装(然后可以决定并行安装还是替换版本)。

基于Windows Installer的安装的注册表项现在处于形状状态

HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\MySoftware12.18.12345

尤其是最后一部分18.12345取决于安装了我的软件的先前版本。 因此,我正在尝试查找以MySoftware12.开头的所有键 这有可能还是我要解决这个错误?

欢呼 马库斯

1 个答案:

答案 0 :(得分:0)

EnumRegKey可用于枚举键:

StrCpy $0 0 ; Registry key index
enumunkey:
    EnumRegKey $1 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall" $0
    IntOp $0 $0 + 1
    StrCmp $1 "" done
    StrCpy $2 $1 10 ; 10 is length of "MySoftware"
    StrCmp $2 "MySoftware" 0 enumunkey
    MessageBox MB_OK "Found:$1"
    Goto enumunkey
done:

如果您还具有要检测的64位版本,则还必须在调用SetRegView 64之后使用另一个循环(并且请记住在循环之后将其还原)。