Tja, dann kann vermutlich auch nichts passieren:
Zitat:
Code:
[Setup]
AppID=Mobile-Telearbeit
[CustomMessages]
apid={80FFBE38-0040-4892-7532-F29F7DBECFF8}
Du legst in deinem Code als "AppId" den Wert
Mobile-Telearbeit fest. Wenn du mal in die Registry schaust, dann wirst du sehen, dass das auch dein Uninstallschlüssel ist (mit dem
_is1 dran). Im Code lässt du aber nach einer
GUID suchen. Das kann natürlich nicht funktionieren.
Versteh mich nicht falsch, aber du kopierst sogar die Kommentare mit in deinen Code, die eigentlich das Prinzip erklären, denkst aber nicht darüber nach. Was das Schlimmste ist: Du übernimmst die komplette
GUID {80FFBE38-0040-4892-7532-F29F7DBECFF8} aus dem Forenbeitrag.
Sollte der Anwender zufälligerweise das Programm von demjenigen aus dem Inno-Forum installiert haben und nun dein Setup starten, dann entfernst du das fremde Programm.
Ich gebe dir noch einen Link aus dem besagten Forum:
klick. Das zeigt dir die Grundlagen einer Versionskontrolle. Das bedeutet, du kannst immer nur die jeweils aktuelle bzw. eine noch aktuellere Version installieren. Bei älteren Versionen wird das Setup mit einer Fehlermeldung abgebrochen. Außerdem steckt in der Funktion "IsSetupNewer" die Grundlage drin, die du brauchst! Wenn das Setup nämlich die Versionsnummer nicht auslesen kann, dann zeigt es dir immerhin an, dass es eine "unbekannte" (im Sinn von: nicht eindeutig) Version gefunden hat, und ob du trotzdem weiter installieren willst
Zitat:
Delphi-Quellcode:
if(RegQueryStringValue(
HKLM,'
{#UNINSTKEY}','
UninstallString',tmp))
and
(tmp <> '
')
and
(fileexists(tmp))
then
begin
Result := (MsgBox(ExpandConstant('
{cm:NotVerifiedVersionFound}'),
mbConfirmation,MB_YESNO
or MB_DEFBUTTON2) = IDYES);
exit;
end;
Anstelle der MessageBox könntest du auch die Deinstallation einleiten, denn in der tmp-Variablen steckt der Name des Uninstallers. Du musst eben nur be
denken, dass in diesem Beispiel der Unsinstallschlüssel auch aus einer
GUID am Anfang des Skriptes gebildet wird:
Zitat:
Code:
#define APPID "3C1AFEA1-5284-4987-AF37-EAE41F2EDBCA"
#define UNINSTKEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\" \
+ APPID + "_is1"
[Setup]
...
AppId={#APPID}
Das musst du
selbstverständlich an dein eigenes Skript anpassen, sonst funktioniert es wieder nicht! Aber vielleicht solltest du auch erst einmal mit einem
Grundlagentutorial anfangen und dich mit Inno Setup vertraut machen, denn ganz so trivial ist die Sache mit den Setups dann doch nicht.