如何在 Install-shield 脚本中使用其 GUID 查找产品是否已安装

How to find whether the product is installed or not by using their GUID in Install-shield Script

我有一个产品 GUID。我想知道它是否安装在 windows 机器上,如果安装了,那么位置是什么。到目前为止,我已经尝试过这个

szKey= "\Software\Microsoft\Windows\CurrentVersion\Uninstall\{2D444666-5875-4B28-9ED8-15F750802BF5}";

 if (RegDBKeyExist (szKey) < 0) then

            MessageBox ("First call to RegDBKeyExist failed.", SEVERE);

        else

            SprintfBox (INFORMATION, TITLE_TEXT, "%s exists.", szKey);

        endif;

注:

我有 GUID

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall
{2D444666-5875-4B28-9ED8-15F750802BF5}

我是否为 szKey 提供了错误的值?

如果该产品安装到 'All Users',它将出现在 HKEY_LOCAL_MACHINE 下。如果安装到 'current user only',它将出现在 HKEY_CURRENT_USER.
下 因此,在 InstallShield 中,您需要重复此测试两次,就像这样。另外,请注意我从键名中删除了前导反斜杠。

RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
szKey= "Software\Microsoft\Windows\CurrentVersion\Uninstall\{2D444666-5875-4B28-9ED8-15F750802BF5}";
if (RegDBKeyExist (szKey) < 0) then
    RegDBSetDefaultRoot(HKEY_CURRENT_USER);
    if (RegDBKeyExist (szKey) < 0) then
        MessageBox ("call to RegDBKeyExist failed.", SEVERE);
    else
        SprintfBox (INFORMATION, TITLE_TEXT, "%s exists for current user.", szKey);
    endif;
else
    SprintfBox (INFORMATION, TITLE_TEXT, "%s exists for all users.", szKey);
endif;