Während der Installation von Setup.exe, wenn ein bestimmter Schlüssel in der Registrierung vorhanden ist, möchte ich die Installation abbrechen.Um dies zu erreichen, rufe ich install-script-Funktion mit benutzerdefinierten Aktion in Install Shield Projekt. Install Script-Code ist:Brechen Sie die Install Shield-Installation ab, wenn ein bestimmter Schlüssel in der Registrierung vorhanden ist
function MyFunction(hMSI)
// To Do: Declare local variables.
STRING szKey;
NUMBER nRootKey;
begin
// Set the root key to HKEY_LOCAL_MACHINE.
nRootKey = HKEY_LOCAL_MACHINE;
if (RegDBSetDefaultRoot (nRootKey) < 0) then
MessageBox ("First call to RegDBSetDefaultRoot failed.", SEVERE);
else
MessageBox ("Root key successfully set to HKEY_LOCAL_MACHINE.",
INFORMATION);
endif;
szKey = "SOFTWARE\\Test";
if (RegDBKeyExist (szKey)< 0) then
MessageBox ("Test is not present", SEVERE);
abort;
endif;
if (RegDBKeyExist (szKey)= 1) then
MessageBox ("Test is present", SEVERE);
abort;
endif;
// To Do: Write script that will be executed when MyFunction is called.
end;
Jedes Mal, wenn ich Nachricht bin immer "Test nicht vorhanden ist", obwohl Schlüssel "HKEY_LOCAL_MACHINE \ SOFTWARE \ Test" in der Registrierung vorhanden ist.
Ich glaube, ich habe etwas falsch gemacht im Skript oder etwas fehlt. Bitte helfen Sie dabei.
https://community.flexerasoftware.com/showthread.php?139026-Check-if-a-registry-key-exists
Ich weiß, dass jemand bereits eine Antwort geliefert hat, aber die Funktionalität, die Sie versuchen Dies kann nativ mit den Tabellen RegLocator und LaunchCondition erreicht werden. RegLocator kann eine Eigenschaft auffüllen, wenn der Schlüssel existiert. LaunchCondition kann die Installation fehlschlagen, wenn diese Eigenschaft vorhanden ist. –