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

Popullate ListBox bei Laufzeit


6 replies to this topic

Tschaen

Tschaen
  • Full Members
  • 27 posts

Posted 10 October 2012 - 09:37

Hallo

Ich habe in einem Custom Dialog eine ListBox, ein Textfeld und ein Button.

Ich möchte nun im Textfeld irgendein Wert eintragen und diesen dann mit drücken des Buttons in die ListBox einfügen.

Wie kann ich das machen? Muss ich wie in der Flexerea Knowledge Base beschrieben die MSI Datenbank erweitern? oder gibt es doch einen einfacheren Weg?

Populating List Boxes at Run Time

Vielen Dank für die Hinweise

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 10 October 2012 - 14:59

Der zitierte Artikel beziht sich auf InstallScript Dialoge, nicht auf MSI. Dort musst du temporäre Einträge zur ListBox Tabelle hinzufügen und außerdem den Dialog neu laden, damit die Listbox aktualisiert wird. Wie das geht, habe ich in diesem Artikel beschrieben:
Verwenden einer doppelten ListBox als Ersatz für eine ListBox mit Mehrfachauswahl
http://www.installsi...stBox/index.htm
Da du nur eine Listebox befüllen willst, kannst du das Verfahren entsprechend anpassen.

Tschaen

Tschaen
  • Full Members
  • 27 posts

Posted 10 October 2012 - 15:11

Vielen Dank, genau so etwas habe ich gesucht.

Werde mir das mal anschauen.

Tschaen

Tschaen
  • Full Members
  • 27 posts

Posted 23 October 2012 - 10:12

Wie lange kann ich eigentlich auf die ListBox in der MSI Datenbank während der Install Exec Sequence zugreifen?

Ich habe bemerkt das ich nach Install Finalize keine Werte mehr finde in der ListBox.

Im Script überprüfe ich ob das Element beim Index ungleich null.

CODE
Function CopyLayoutFile ()
Dim configDir, TestArray, record, fso, source, target, count

Set fso = CreateObject("Scripting.FileSystemObject")

source = "C:\Temp\Config_X_A1.cfg"'

query = "SELECT * FROM `ListBox`"
Set view  = database.OpenView(query)
view.Execute

Do
 Set record = view.Fetch
 If record Is Nothing Then Exit Do
 
 TestArray = Split(record.StringData(3),";")
 target="C:\Temp\Cofnig_"&TestArray(1)&"_"&TestArray(0)&".cfg"

 fso.CopyFile source, target
loop

Set fso = nothing

End Function


Tschaen

Tschaen
  • Full Members
  • 27 posts

Posted 24 October 2012 - 14:37

Sorry für den vorherigen Post..

Ich weiss nun das man temporäre Änderungen in der Datenbank währen der User Interface Sequentes nicht mehr in der Install Exec Sequence finden wird.
Da die MSI Datenbank zwischen den zwei Sequence neu geladen wird und dabei alle temporäre Einträge verloren gehen.

Ich habe mein Problem mit einem File im TempFolder gelöst, aus der ich dann die Informationen rausschreibe.

Edited by Tschaen, 24 October 2012 - 14:38.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 28 October 2012 - 15:48

Wenn's von der Größe und Struktur her passt, wäre auch ein Property ausreichend (der Name darf keine Kleinbuchstaben enthalten, damit es "public" ist und es muss im SecureCustomProperties Property aufgeführt sein).

Temporäre Datei geht natürlich auch. Du musst nur aufpassen, dass du sie auch noch wiederfindest, falls die Exec-Sequenz in einem anderen Benutzerkontext läuft, z.B. weil das Setup von einem regulären Benutzer gestartet wird und dann von Admin durch Eingabe seines Passworts erhöhte Rechte bekommt.

Tschaen

Tschaen
  • Full Members
  • 27 posts

Posted 30 October 2012 - 13:48

Vielen Dank für den Tipp mit dem Property

Da ich mein Setup sowieso nur mit erhöhten Rechte ausführe, muss ich mir bezüglich wiederfinden der temporären Datei keine Sorgen machen.