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

Pfad-Abfrage funktioniert nicht wie gewünscht


2 replies to this topic

Mõbius

Mõbius
  • Full Members
  • 26 posts

Posted 16 June 2011 - 07:40

Hallo zusammen,

ich versuche neben dem Installationspfad zusätzlich noch einen weiteren Pfad abzufragen. Leider funktioniert das nicht so, wie ich mir das vorstelle.

Dieser Pfad soll neben dem Installationspfad intern in einer Property gehalten und während der Installation und während einem Maintenance/Change-Durchlauf änderbar sein und anschließend in der Registry gespeichert werden. Wenn jemand die Vorgehensweise dazu kennt, bin ich sehr daran interessiert.

Und nein, ich möchte kein InstallScript MSI - dort wüsste ich, wie ich es hinbekomme - ich will am Ende ausschließlich ein MSI-Paket haben und keine Setup.exe dazu. Es muss auch nicht in einem Dialog beides erfragt werden, es würden auch zwei Dialoge nacheinander ausreichen. Das Problem ist in meinen Augen aber das gleiche.

Nachfolgend fasse ich mal zusammen, was ich bisher versucht habe, und an welcher Stelle ich gescheitert bin.

Ich habe zunächst den Dialog DestinationFolder angepasst. Neben den dortigen Steuerelementen (Label zur Anzeige des Pfades und Button zur Pfadauswahl) habe ich diese in Kopie nochmals eingefügt. Geändert wurden Name (bei Label und Button) und Property und Text (nur bei dem Label).

Im Behavior des Dialogs habe ich die Events des zweiten Buttons modifiziert. SpawnDialog öffnet nicht mehr InstallChangeFolder sondern eine geklonte Version von InstallChangeFolder namens InstallChangeFolder2. Im zweiten Event habe ich analog zum Original in der Spalte Event die Property eingetragen, die ebenfalls in dem neuen Label Verwendung findet. Als Argument habe ich einen von mir gewählten Property-Namen angegeben: bspw. InstallFolder2.

Leider arbeitet dieser Dialog jedoch nicht so, wie ich mir das vorstelle. Und da ich nun schon sehr viel herumprobiert habe, kann es passieren, dass die folgenden Schilderungen etwas durcheinander sind.

Die Property InstallFolder2 muss definiert und vorbelegt sein, damit sie voreingestellt im Dialog angezeigt wird, wenn dieser zum ersten Mal erscheint. Hierfür habe ich diese im Property Manager angelegt und mit [INSTALLDIR] vorbelegt. Dies reicht leider nicht aus. Ich musste noch eine Custom Action erstellen, die mir unmittelbar vor der Anzeige der Dialoge (in der User Interface Sequenz zwischen PatchWelcome und InstallWelcome) meine Property mit dem Wert [INSTALLDIR] füllt. Das klappt soweit. Umständlich in meinen Augen, aber OK.

Wenn ich nun den Dialog öffne, kann ich nach wie vor den Installationspfad ändern ohne dass mein zweiter Pfad angepasst wird. Will ich allerdings den zweiten Pfad ändern, so erscheint die Meldung, dass der Angegebene Pfad leer sei und das Setup wird beendet (MSI-Logfile: Fehler 2343. Der angegebene Pfad ist leer.).

Weiß jemand einen Rat, wie ich das bewerkstelligen kann? Kann mir jemand erklären, wann eine Property in MSI-Projekten mit dem Property-Namen, wann mit [] oder mit {} umschlossen wird, worin die Kennzeichnung mit führendem Unterstrich liegt und was der Unterschied zwischen den groß-geschriebenen Properties und den "normal"-geschriebenen Properties ist?

Vielen Dank an jeden, der bis hierhin gelesen hat und mir weiterhilft.

Mõbius

Edited by Mõbius, 16 June 2011 - 07:53.


Majue

Majue
  • Full Members
  • 185 posts

Posted 16 June 2011 - 13:41

Hallo,

das ist gar nicht so kompliziert:

- erstelle eine Kopie des Dialogfelds "DestinationFolder"
- ändere die Textzeile im Feld "Location (Text)" und trage eine neue Property "[MY_PATH]" ein
- ändere das Verhalten vom PushButton "ChangeFolder" (Ereignis: [_BrowseProperty]; Argument: [MY_PATH])
- ändere die Einstellungen von "Back" und "Next"
- trage bei "Direct Editor" in die Tabelle "Directory" den Standardpfad für "[MY_PATH]" ein (Directory: MY_PATH; Directory_Parent: {Directory}; DefaultDir: {Ordnername})

Das sollte schon reichen. Das zusätzliche Dialogfeld "InstallFolder2" kannst Du löschen, da Dein neues Dialogfeld ebenfalls über die Property "[_BrowseProperty]" Deine Property "[MY_PATH]" ändert.

Gruß
Jürgen Markert

(Anwender von InstallShield 2016 - Professional Edition)


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 21 June 2011 - 11:43

Der DatabaseFolder Dialog zeigt, wie's geht. Evtl. kannst du den auch gleich verwenden.