AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Inno Setup: Bereits installierte Komponenten disablen
Thema durchsuchen
Ansicht
Themen-Optionen

Inno Setup: Bereits installierte Komponenten disablen

Ein Thema von SoD · begonnen am 25. Nov 2009 · letzter Beitrag vom 25. Nov 2009
Antwort Antwort
Benutzerbild von SoD
SoD

Registriert seit: 9. Dez 2008
Ort: Oberasbach
33 Beiträge
 
Delphi 2007 Professional
 
#1

Inno Setup: Bereits installierte Komponenten disablen

  Alt 25. Nov 2009, 15:22
Hallo liebe DP'ler,

ich habe in meinem Inno Setup die Idee gehabt, dass man bei der Auswahl der Komponenten bereits vorhandene Zusatz-Tools die Checkboxen ausgrauen könnte.

Konkret bestehen die Zusatztools aus: Ghostscript, FreePDF, BDE. Ich hab gelesen es wäre nicht empfehlenswert einfach drüber zu installieren, deswegen sollen die Checkboxen deaktiviert werden, wenn mein Setup feststellt, dass diese Programme bereits vorhanden sind. Dazu gibt's ne Hinweismeldung.

So weit, so gut. Nun steh ich vor dem Problem der Erkennung dieser Tools. Ich lese dafür aus der Registry, das ist nicht das Problem; das Problem steckt in einer Schleife und ich weiß nicht mehr weiter, mit welchen Daten ich meine Funktionen füttern soll. Ich steh total auf'm Schlauch. Anbei der Code:

Delphi-Quellcode:
function CheckForComponents(): Boolean;
var i: Integer;
begin
  for i := 0 to WizardForm.ComponentsList.ItemIndex - 1 do
  begin
    if ComponentInstalled then Result := true;
  end;
end;

function gsInstalled(): Boolean;
begin
  if RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\GPL Ghostscript') then //Check auf installiertes Ghostscript
  Result := true;
end;

function FreePDFinstalled(): Boolean;
begin
  if RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\shbox\FreePdfXP') then //Check auf installiertes FreePDF
    Result := true
end;

function BDEinstalled(): Boolean;
begin
  if RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Borland\Database Engine') then //Check auf installierte BDE
    Result := true;
end;

function AlreadyInstalledComponents(): String;
var
  List: TStrings;
  i: Integer;
  ComponentInstalled: Boolean;
begin
  for i := 0 to WizardForm.ComponentsList.ItemIndex - 1 do
  begin
    if ComponentInstalled then
    List.Add(WizardForm.ComponentsList.ItemCaption[i] + #13 + #10);
  end;
  Result := List.Text;
end;

procedure CurPageChanged(CurPageID: Integer);
var
  i: Integer;
begin
  if CurPageID = wpSelectComponents then
  begin
    for i := 0 to WizardForm.ComponentsList.ItemIndex - 1 do
    begin
      if CheckForComponents() then
        MsgBox('Es wurden folgende bereits installierte Komponenten gefunden:' + #13 + #10 + #13 + #10 + AlreadyInstalledComponents() + #13 + #10 + #13 + #10 + 'Wenn Sie diese aktualisieren möchten, brechen Sie die Installation jetzt ab, deinstallieren Sie die aufgeführten Programme und starten Sie Setup erneut.', mbError, MB_OK);
    end;
  end;
end;
Ich bin mir im Klaren, dass ComponentInstalled nirgends deklariert wurde. Es ist auch nur als Platzhalter gedacht. Gleich noch ne Frage aus Interesse: Macht an diesen Stelle der Aufruf einer weiteren Funktion Sinn?

Sinn und Unsinn der Vorgehensweise mit der ich an den User herantrete sei mal dahingestellt. Es geht primär darum: Einen Warnhinweis mit einer Liste der Komponenten auszugeben, die mein Setup auf dem Zielsystem entdeckt hat und die entprechenden Komponenten von der Auswahl und Installation durch den User auszuschließen (Sprich: CheckBox.Enabled := False).

Vielen Dank schon mal im Vorraus für eure Hilfe,
SoD
Keinen Bock anständig zu debuggen?
try stuff;
except ShowMessage('Bug, bug, bug!!! Dont do this shit!');
end;
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#2

Re: Inno Setup: Bereits installierte Komponenten disablen

  Alt 25. Nov 2009, 16:50
Hallo,
vielleicht hilft dir dies weiter
InnoForum-Komponenten disablen

oder, natürlich angepasst (ungetestet)

Delphi-Quellcode:
procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpSelectComponents then
    WizardForm.ComponentsList.ItemEnabled[0] :=FreePDFinstalled() ;
end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz