如何在 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;
我有一个产品 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;