Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Feststellen im Maintenace Modus welche ..


2 replies to this topic

sebastian

sebastian
  • Members
  • 43 posts

Posted 30 September 2002 - 10:09

Hallo allerseits!

Gibt es eine Möglichkeit im Wartungsmodus (Betrifft: "Programm ändern") festzustellen, welche Komponenten bereits installiert sind und welche nicht?

Dankschön!

lg Sebastian
Alle menschlichen Fehler sind Ungeduld,
ein vorzeitiges Abbrechen des Methodischen,
ein scheinbares Einpfählen der scheinbaren Sache.
Kafka

MarkoK

MarkoK
  • Full Members
  • 48 posts

Posted 30 September 2002 - 12:21

Ja, mit ComponentIsItemSelected kannst du gucken, ob was selektiert ist.

Wenn du es ganz genau haben willst, müßtest du schon mehr Aufwand treiben mit internen Listen und ner Statusverwaltung.

Marko

sebastian

sebastian
  • Members
  • 43 posts

Posted 01 October 2002 - 07:55

danke marko!

ich hab es aber anders gelöst. Mir ging es darum, daß wir in unseren Setup Zusätzliche Komponenten mitliefern, die jeweils nur durch Eingabe eines Passwortes freigeschaltet werden.

Wenn ich aber nun aber Komponenten 1 schon installiert habe und die Komponente 2  hinzufügen will, muss ich für diese die Form mit der Eingabe der Serialnummer aufscheinen lassen.

Ohne eine Validierung, welche Komponente schon installiert wurde, wäre dementsprechend für jede einzelne Komponente der Serialnummerdialog gekommen. Kurz: Der Validierungsdialog soll nur auftauchen, wenn ich etwas NEU ausgewählt habe (im Wartungsmodus von Installshield)

Ich habs also so gelöst (NUR Maintenacemodus!;):



Code Sample


Dlg_SdComponentTree:
if (nType = MODIFY) then  
if (ComponentIsItemSelected(MEDIA, "Test") = TRUE) then
    MessageBox ("Komponente test ist bereits gewählt", INFORMATION);  
    blnK1 = TRUE;
else
MessageBox ("Komponente test ist noch nicht gewählt", INFORMATION);    
blnK1 = FALSE;
endif;  

if (ComponentIsItemSelected(MEDIA, "Example") = TRUE) then
    MessageBox ("Komponente Example ist bereits gewählt", INFORMATION);  
    blnK2 = TRUE;
else
MessageBox ("Komponente Example ist noch nicht gewählt", INFORMATION);    
blnK2 = FALSE;
endif;  

szTitle = "";
szMsg = "";
nResult = SdComponentTree(szTitle, szMsg, TARGETDIR, "", 2);
if (nResult = BACK) goto Dlg_Start;



Dlg_Test:                
if blnK1 = FALSE && ComponentIsItemSelected(MEDIA, "Test") = TRUE then  
intVal = GetPassword ("Test"); // Funktion die den Dialog aufruft und das Passwort zurückliefert

switch (intVal)
 case 0:                                    
  MessageBox ("Passwort falsch", INFORMATION);
  ComponentSelectItem( MEDIA, "Test", FALSE);  
 case 1:
   MessageBox ("Passwort passt", INFORMATION);        
   ComponentSelectItem( MEDIA, "Test", TRUE );          
 case 2:
   goto Dlg_Start;                                
   endswitch;
endif;

.....




anschliessend führe ich die abfrage durch OB die Komponenten VOR der Initialisierung des Dialoges SdComponentTree bereits ausgewählt waren. Wenn NICHT dann schaue ich, ob der Benutzer etwas NEUES ausgewählt hat und lade dann den Validierungsdialog.

Alles klar?  ;)
Alle menschlichen Fehler sind Ungeduld,
ein vorzeitiges Abbrechen des Methodischen,
ein scheinbares Einpfählen der scheinbaren Sache.
Kafka