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

Übergabe von Pfaden an anderes UI-Fenster


31 replies to this topic

cheese-2402

cheese-2402
  • Full Members
  • 45 posts

Posted 15 January 2009 - 14:24

Hallo,

inzwischen habe ich meine Installation mit den ganzen Tipps soweit fertig, jetzt fehlt mir nur noch die Oberfläche.

Hier springe ich vom InstallWelcome-Dialog zum LicenceAgreement und von da weiter auf einen eigens gebastelten Dialog, auf dem ich auswählen kann, wo ich die Software installieren möchte, also Programm und Daten. Hierzu habe ich wie im Dialog "DestinationFolder" jeweils für Programmpfad und Datenpfad ein Label gemacht und dahinter einen Button. Aufgerufen wird der Dialog "InstallChangeFolder" wenn ich auf einen der Buttons drücke.

Jetzt habe ich aber das Problem, dass der Pfad, den ich im Auswahldialog gewählt habe, nicht in dem Textfeld erscheint.

Was ich bisher alles eingetragen habe:
  • Beim Textfeld -> Eigenschaft: _BrowseProperty
  • Verhalten beim Button(Ereignis;Argument;Bedingung): 1. Zeile: SpawnDialog;InstallChangeFolder;1
    2. Zeile: [_BrowseProperty];INSTALLDIR;1

Kann mir jemand sagen, was ich noch umstellen muss, damit es funktioniert, im Dialog DestinationFolder funktionierts ja auch und ich hab nichts weiteres gefunden.

Vielen Dank
Gruß Christoph


mkkk

mkkk
  • Full Members
  • 63 posts

Posted 15 January 2009 - 15:19

Siehe Anhang: Es wird alles über ein zusätzliches Property (definiert in Tabelle Directory) geregelt (hier MYDATADIR)

Attached Files


Edited by mkkk, 15 January 2009 - 15:46.


cheese-2402

cheese-2402
  • Full Members
  • 45 posts

Posted 15 January 2009 - 16:04

Vielen Dank, jetz gehts, getreu dem Motto: Kaum macht man es richtig, gehts schon :-)

Ich hatte vergessen, beim Text der Felder die Propertys einzutragen...

cheese-2402

cheese-2402
  • Full Members
  • 45 posts

Posted 16 January 2009 - 08:42

Kurze Frage noch:

Gibts vielleicht irgendwo eine Anleitung, wie man Aktionen in den Masken steuern kann, also wenn man etwas drückt, dass andere Felder readonly gesetzt werden etc?

Außerdem, kann ich irgendwie steuern, welche Features installiert werden, ohne den Dialog dafür zu zeigen? Hintergrund ist der, dass ich nur eine Auswahl auf einer eigenen Maske anbieten möchte, ob ein Client oder der Server installiert werden soll (RadioButtons). Abhängig von diesen Radiobuttons muss ich eben auch die Felder auf der Maske steuern und von der getroffenen Auswahl würde ich gerne die Features steuern. (Je ein Feature für Server und Client)

Vielen Dank.
Gruß Christoph

mkkk

mkkk
  • Full Members
  • 63 posts

Posted 16 January 2009 - 10:33

Ich habe ebenfalls den Client- und Server-Setup-Fall.
Ich habe ebenfalls Programm- und Datenpfad getrennt abgefragt und zwar
ebenfalls über eine RadioButton-Group (siehe Anhang).
Es kommt hier auf den Wert an, den der Radiobutton bei Anwahl mitbekommt.
Danach kann man dann die Installation ausrichten.

Bei mir: wenn Server-Inst, dann hat die RadioButton-Group "RadioGroupSetupType" den Wert "local" für lokale Installation, ansonsten halt "remote".

Nach Drücken des Next-Buttons rufe ich dann 2 verschiedene Dialogmasken auf, die entsprechend andere Pfade abfragen.
Der eine Dialog für die Server-Inst heißt demnach "DestinationFolderPrgData" und der andere "DestinationFolderPrgDataRemote".

So habe ich das gelöst und es klappt.

Attached Files


Edited by mkkk, 16 January 2009 - 10:34.


cheese-2402

cheese-2402
  • Full Members
  • 45 posts

Posted 16 January 2009 - 10:54

Ok, soweit hab ich es auch, aber ich habe den Unterschied, dass ich Alles auf einer Maske habe.

Wenn ich den Radiobutton Server auswähle, möchte ich quasi bei der "On-Click"-Reaktion, dass er mir ein Textfeld sowie eine Checkbox auf read-only setzt. Bisher habe ich dazu leider nichts gefunden, wie ich es lösen könnte.

Deine Lösung finde ich nicht schlecht, ist aber hier leider nicht praktikabel, da ich eine alte Installation mit WixEdit schon habe und die neue genauso aussehen soll (Kunde soll nichts vom Technologiewechsel merken).

Was mich noch interessieren würde, wie wurde die Auswahl der Features per Festlegung aus der Maske dann gelöst? (Ohne die Featurewahl-Maske)

Gruß Christoph

Edited by cheese-2402, 16 January 2009 - 10:56.


mkkk

mkkk
  • Full Members
  • 63 posts

Posted 16 January 2009 - 11:10

QUOTE
Was mich noch interessieren würde, wie wurde die Auswahl der Features per Festlegung aus der Maske dann gelöst? (Ohne die Featurewahl-Maske)


Man kann Features mit dem Ereignis "AddLocal" und dem Featurenamen als Argument hinzufügen (siehe Bild).

Attached Images

  • AddLocal.jpg


ali

ali
  • Full Members
  • 1,008 posts

Posted 16 January 2009 - 14:09

QUOTE
Wenn ich den Radiobutton Server auswähle, möchte ich quasi bei der "On-Click"-Reaktion, dass er mir ein Textfeld sowie eine Checkbox auf read-only setzt. Bisher habe ich dazu leider nichts gefunden, wie ich es lösen könnte.


schau mal bei dem Verhalten des Buttons, im Feld Details gibt es unten eine Auswahlmöglichkeit "Bedingungen". Hier kannst du Abhängig von einem Zustand, also die Prop des RadioButtons einen Button zb. Ausblenden oder inaktiv schalten.



cheese-2402

cheese-2402
  • Full Members
  • 45 posts

Posted 16 January 2009 - 16:06

Vielen Dank, in der Zwischenzeit hatte ich es auch gefunden.

Aber irgendwie kommen mir inzwischen Zweifel, ob ich nicht zu dusselig bin für InstallShield. Schulung bekomme ich leider nicht, muss mich irgendwie so durchschleifen :-(

Die Checkbox habe ich hinbekommen, dass sie ausgegraut wird. Leider klappts mit dem Wert in der Checkbox nicht. Ich lese diesen aus der Registry per Systemsuche aus (für spätere Updates) und speichere diesen in der eigens angelegten Property (im Eigenschaften-Manager)"HEIMAPS". Bei der Checkbox gebe ich als Wert [HEIMAPS] an und schreibe den Wert später in die Registry.

Ich habe jetzt das Problem, dass in der Registry nichts ankommt bzw es egal ist, ob ich die Checkbox angehakt habe oder nicht. Außerdem greift der Defaultwert nicht.

Kann mir jemand sagen, wo mein Fehler liegt bzw welche Werte in der Checkbox zählen (0/1 denke ich) und ob ich diese auf Yes/No umstellen kann?

Und noch eine Frage, kann ich auch Eigenschaften/Propertys setzen, welche nicht mit einem Textfeld verknüpft sind, also wenn ich "Weiter" drücke, sollte z.B. der Wert aus den Feld "Pfad" auch in ein weiteres Property geschrieben werden mit dem Wert von Pfad und dahinter möchte ich dann z.B. noch "\log" hängen.

Fragen über Fragen, mir ist es schon peinlich hier nachzufragen, aber ich komm leider nicht weiter :-(

Gruß Christoph

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 17 January 2009 - 17:38

Wenn die Checkbox nicht angehakt ist, ist das zugehörige Property leer - und umgekehrt. D.h. mit der Ceckbox kannst du nicht zwischen zwei Werten umschalten sondern nur zwischen (irgendein) Wert oder kein Wert.

cheese-2402

cheese-2402
  • Full Members
  • 45 posts

Posted 19 January 2009 - 09:03

Ok, hilft mir schon mal ein wenig weiter...

gibts vielleicht eine Möglichkeit, mir einen Registrywert zu setzen? Sprich ich würd mir eine Property für die Checkbox machen. In der Maske vorher les ich den Wert aus einer anderen Property aus und prüfe ab und schreib dann nix hinein oder irgendwas, je machdem ob gesetzt oder nicht. danach les ich es wieder aus und setzte die Werte beim verlassen der Maske.

Kann mir das mal jemand erklären, wie ich Propertys per Aktion setze, also so von der Maske heraus, wegen meiner beim Click auf einen Button?

Danke und Gruß
Christoph

ali

ali
  • Full Members
  • 1,008 posts

Posted 19 January 2009 - 09:46

QUOTE
Kann mir das mal jemand erklären, wie ich Propertys per Aktion setze, also so von der Maske heraus, wegen meiner beim Click auf einen Button?

schau dir doch mal den Dialog "ReadyToInstall" an, hier die "ProgressType" Propertys. Dort hast du ein Beispiel beim Button "InstallNow". Du gibst in eckigen Klammern bei "Ereignis" dein Property an, dann den Wert und eine Bedingung.

QUOTE
gibts vielleicht eine Möglichkeit, mir einen Registrywert zu setzen?

Du kannst über die "Systemsuche" einen Registrywert auslesen und direkt in ein Property speichern. Wenn der Wert nicht existiert, wird das Property mit Wert nicht angelegt wenn es noch nicht existiert. Du musst also um eine Fehlermeldung im Dialog zu vermeiden, beim verwenden dieses Porperty dieses evtl. in der Property Tabelle anlegen damit es "immer" existiert.

Edited by ali, 19 January 2009 - 09:50.


cheese-2402

cheese-2402
  • Full Members
  • 45 posts

Posted 19 January 2009 - 14:11

QUOTE (Stefan Krueger @ 2009-01-17 17:38)
Wenn die Checkbox nicht angehakt ist, ist das zugehörige Property leer - und umgekehrt. D.h. mit der Ceckbox kannst du nicht zwischen zwei Werten umschalten sondern nur zwischen (irgendein) Wert oder kein Wert.

Ich habs jetzt ausprobiert und mir den Wert in ein extra Property schreiben lassen, jedoch weiß ich jetzt nicht, was ich unter "kein Wert" verstehen soll bzw wie prüfe ich auf den Wert in einer Bedingung?

Ich habe es jetzt mit "" mit " " und mit NULL probiert, jedoch mit keiner Lösung :-(

mkkk

mkkk
  • Full Members
  • 63 posts

Posted 19 January 2009 - 15:29

Das Property ist dann nicht definiert.

Wenn das Property "MyProp" heißt,
dann ist es

definiert mit Bedingung: MyProp
nicht def. mit Bed.: Not MyProp

cheese-2402

cheese-2402
  • Full Members
  • 45 posts

Posted 21 January 2009 - 10:58

ok, habe ich jetzt so umgesetzt.

Ich prüfe in der Maske vorher beim drücken auf "Weiter" die eigentliche Property und setzte nur im "True"-Fall das Property für die Checkbox.

Jetzt kann ich das Phänomen beobachten, dass ich die Checkbox nicht mehr aktivieren kann, sie bleibt immer auf False... Muss ich bei den Einstellungen dazu noch irgendwas ändern?

Wenn ich das Property auf der Maske vorher setzte, ist die Checkbox auch angehakt, kann ich auch dann anklicken und auf nicht angehakt setzen, aber dann ist Ende... Ich kann sie nicht mehr anhaken...

Weiß hier vielleicht noch jemand Bescheid?

Danke und Gruß
Christoph

cheese-2402

cheese-2402
  • Full Members
  • 45 posts

Posted 21 January 2009 - 11:39

Ich muss mich nochmal melden, es gibt neue Erkenntnisse:

Die Checkbox kann nicht angehakt werden, weil es die angegebene Property nicht im Eigenschaften-Manager gibt bzw der Wert leer ist. Wenn ich sie anlege, hab ich aber das Problem, dass die Checkbox angehakt ist beim Maskeneinstieg. Dies sollte aber nicht der Fall sein, Default steht auch auf Falsch.

Ich dreh mich irgendwie im Kreis...

Gruß Christoph

Edited by cheese-2402, 21 January 2009 - 11:40.


ali

ali
  • Full Members
  • 1,008 posts

Posted 21 January 2009 - 12:27

Hallo,
wenn du für die ChkBox das Property in der Eigenschaftstabelle angelegt hast, darfts du dieser dort keinen Wert zuweisen, sonst ist sie im Dialog angehakt.

cheese-2402

cheese-2402
  • Full Members
  • 45 posts

Posted 21 January 2009 - 13:05

Und genau hier ist der springende Punkt.

Sobald ich ihr keinen Wert zuweise, kann ich die Checkbox auf dem Dialogfeld nicht mehr anhaken...

Vielleicht liegts ja auch an den Einstellungen für die Checkbox, muss ich hier noch was verstellen?

mkkk

mkkk
  • Full Members
  • 63 posts

Posted 21 January 2009 - 13:39

Bei mir ist der Wert des Checkbox-Properties "0" für nicht angehakt und "1" für angehakt.
Und ich habe da ein public property genommen - also Propertynamen groß geschrieben.

Vielleicht hilft das.

Siehe InstallShield-Hilfe unter "CheckBox Control".

Edited by mkkk, 21 January 2009 - 13:43.


cheese-2402

cheese-2402
  • Full Members
  • 45 posts

Posted 21 January 2009 - 14:06

Hab ich auch schon probiert, mit einem öffentlichen Property hat nix geholfen.

Wo kann man die Werte einstellen, welche die Checkbox hat, also 0 und 1? Das würde mir denk ich auch helfen.

Kann ich vielleicht mal nen Screenshot von den Einstellungen der Checkbox sehen?

mkkk

mkkk
  • Full Members
  • 63 posts

Posted 21 January 2009 - 14:40

Im Bild ist das Property bzw. die Checkbox mit dem Wert "1" belegt und damit angehakt. Wenn der benutzer den Haken wegklickt, so bekommt das Property den Wert "0" -> siehe Hilfetext

Auszug Windows Installer Hilfe:
"This CheckBox_control is a two-state check box. To associate an integer or string property with this control, enter the property name into the Property column of the Control table. The selected state of the box sets the property either to the value specified in the Value column of the CheckBox table or to the initial value of the property specified in the Property table. If the property has no initial value, the checked state sets it to 1. The unselected state sets the property to null."

Attached Images

  • Checkbox.jpg


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 22 January 2009 - 16:41

Kann es sein, dass der "Default" Wert für das Checkbox Control leer ist? Das it der Wert, auf den das Checkbox-Proprty gesetzt wird, wenn man die Box anhakt.

cheese-2402

cheese-2402
  • Full Members
  • 45 posts

Posted 23 January 2009 - 10:29

Ich denke ich hab den Fehler gefunden...

Ich hatte bei Wert auch noch das Property drinnenstehen, quasi ein Bezug auf sich selbst... und darum gings nicht.


Vielen Dank für die Hilfe
Gruß Christoph

cheese-2402

cheese-2402
  • Full Members
  • 45 posts

Posted 26 January 2009 - 11:03

QUOTE (mkkk @ 2009-01-16 11:10)
Man kann Features mit dem Ereignis "AddLocal" und dem Featurenamen als Argument hinzufügen (siehe Bild).

Ich habe mir hierzu nochmal gedanken gemacht, weil ich bisher über den InstallLevel gesteuert habe.

Ich habe 2 Hauptfeatures, die ich über die eigene Maske steuere. Bedingungsabhängig führt der Installer entweder für das Eine oder das Andere Feature AddLocal aus, jedoch werden immer beide Features installiert.

Jetzt habe ich ein wenig gesucht im Forum und gefunden, dass man auch für ein Feature Remove machen kann.

Ich möchte mich nur nochmal versichern, dass, wenn ich dann für das andere, nicht zu installierende Feature Remove mache, keine Dateien gelöscht werden, die in einer Komponente sind, die beide Features verwenden. Oder gibts hier ne Lösung, dass ich generell mal alle Feature auf "nicht installieren" setze und dann erst mit der Maske per AddLocal hinzufüge?

Gruß Christoph

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 27 January 2009 - 15:08

Remove bedeutet nur, dass das Feature abgewählt wird. Wenn eine Komponente in zwei Features ist und mindestens eines der beiden zur Installation ausgewäjlt ist, dann wird die Komponente installiert.

cheese-2402

cheese-2402
  • Full Members
  • 45 posts

Posted 27 January 2009 - 16:54

Aber die Features von Anfang an abwählen geht nicht?

Also dass, wenn ich nichts per AddLocal hinzufüge, auch nichts installiert wird? Ich müsste quasi zuerst einmal alle Features abwählen und dann kann ich erst anwählen, find ich irgendwie umständlich.

Gruß Christoph

mkkk

mkkk
  • Full Members
  • 63 posts

Posted 28 January 2009 - 08:48

Das was Du meinst regelt das Property INSTALLLEVEL.
Jedem Feature kannst Du eine Installationsstufe als Wert mitgeben.
Den Wert von INSTALLLEVEL setzt Du zunächst auf einen initialen Wert.

Wenn dann der Wert der Installationsstufe eines Features größer ist als der INSTALLLEVEL, so wird das Feature vom Installer nicht berücksichtigt.
Alle anderen schon.

Die nicht berücksichtigten Features könntest Du dann nachträglich mit AddLocal aber hinzufügen.

cheese-2402

cheese-2402
  • Full Members
  • 45 posts

Posted 28 January 2009 - 09:54

Vielen Dank, ich hab jetzt mal den INSTALLLEVEL auf 0 gestellt, damit ich alles über Features steuern kann, funktioniert soweit auch ganz gut.

Jedoch ist mir noch eine Sache aufgefallen, die ich nicht ganz erklären kann. Ich habe für die Umgebungsvariablen sowie die Registry-Einträge eine eigene Komponente. Wenn ich jetzt meine Software deinstalliere, wird alles gelöscht, bis auf die Umgebungsvariablen (obwohl dort bei jeder einzelnen bei Deinstallation = Entfernen eingetragen ist) und die Registry-Einträge.

Kann mir vielleicht wer sagen, was ich da noch falsch mache oder geht das gar nicht, wenn ich die Installation rein über die Features mit AddLocal steuere?

Gruß Christoph

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 28 January 2009 - 22:22

Wenn die Umgebungsvariablen Propertiesd verwenden, dann müssen diese auch bei der Deinstalaltion auf den gleichen Wert gesetzt sein.

franky99

franky99
  • Full Members
  • 5 posts

Posted 25 March 2009 - 14:15

hallo,

habe nach o.g. Vorbild (Beitrag 1 und 2) ebenfalls zwei Datenpfade abgefragt - nun kommt beim Testen eine Meldung "Der Auswahl-Manager wurde nicht initialisiert".

Was bedeutet das und wie krieg ich die Meldung weg?

Gruß
franky99

Edited by franky99, 25 March 2009 - 14:16.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 27 March 2009 - 09:30

Vermutlich ist deine ABfrage zu weit vorne in der Sequenz. Verschiebe sie mal versuchsweise hinter CostFinalize.

franky99

franky99
  • Full Members
  • 5 posts

Posted 28 March 2009 - 15:43

Stefan,

Danke - DAS war der Tipp, den ich gebraucht hatte.

Gruß
franky99