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

Verwenden eigener Variablen als Destination?


5 replies to this topic

Healy

Healy
  • Full Members
  • 21 posts

Posted 24 November 2006 - 15:11

Hallo

Ich würde gerne mein Setup um eigene Variablen erweitern. Ist das denn möglich?

Ziel soll es sein, dass [INSTALLDIR] einen Order höher sein soll, als der in dem meine einzelnen Komponenten installiert werden.

Zum Beispiel

"Component1" Destination: [INSTALLDIR]Client10
"Component2" Destination: [INSTALLDIR]Client10
"Component3" Destination: [INSTALLDIR]Server10
"Component4" Destination: [INSTALLDIR]Server10

Ich will nun den String Client10 als Variable festlegen und dann als Destination angeben [INSTALLDIR][CLIENTPATH] können.

Wenn ich das bisher aber macht, so meint IS oder der Windows Installer, dass ich einen Ordern [CLIENTPATH] haben will und legt mir den an. Es wird aber leider nicht der Wert der Variable als Ordnername verwendet.

Gibt es da eine Möglichkeit?



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 26 November 2006 - 23:32

Das geht, aber nicht ganz so wie du es gemacht hast. Im Beispiel:
"Component1" Destination: [INSTALLDIR]Client10
legt InstallShield automatisch eine Verzeichnisvariable dafür an 8steht in geschweiften Klammern). Diese repäsentiert den vollständigen Pfad, und du kannst die setzen mit einer Custom Action vom Ttyp "set a directory" (nach CostFinalize). Als neuen Wert gibst du an:
[INSTALLDIR][CLIENTPATH]
Das sollte funktionieren.

Healy

Healy
  • Full Members
  • 21 posts

Posted 27 November 2006 - 17:33

Ich bin mir sicher, dass wenn man dem IS ein Geschlecht zuordnen könnte, dass es "weiblich" wäre. Das Teil zickt ohne Ende, wenn man mit STRG+C und STRG+V die Destination einer Komponente ändern will. Ich muss immer auf ... klicken und den Pfad auswählen, damit allen Komponenten die richtige Destination zugewiesen wird. mad.gif grrrr Scheint wohl ein Bug zu sein. Das kenn ich aber noch aus IS 6. Da war das auch schon so.

Ich habe nun eine CustomAction angelegt und alles so eingestellt, wie Stefan das gesagt hat. Das Setup wird auch ohne Fehler kompiliert. Aber anscheinend hat diese Variable keinen Wert. Denn installiert werden meine Komponenten nun alle direkt in den [INSTALLDIR]. Ohne Unterordner. Es wird also auch kein Ordner [CLIENTPATH] mehr erzeugt. Ich vermute nun, dass IS weis, was ich von ihm will und keinen Ordner mehr anlegt. Jedoch scheint die Variable leer zu sein. somit ergibt [INSTALLDIR][CLIENTPATH] immer nur [INSTALLDIR].

Es kommt auch keine Fehlermeldung oder sonst was, das mir sagen würde, warum [CLIENTPATH] nicht den von mir eingetragenen Wert beinhaltet.

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 27 November 2006 - 20:54

Eine Logdatei kann helfen Licht ins Dunkel zu bringen, denn dort stehen alle Property-Werte drin.

mvenker

mvenker
  • Full Members
  • 16 posts

Posted 21 January 2011 - 11:41

Hallo zusammen,

der Artikel ist zwar schon sehr alt, ich habe aber heute fast genau die selbe Anforderung.

Bei mir ist der Unterschied, das alle meine Componenten ein DestinationPath [CommonAppDataFolder]\EinVariablerOrdner, [CommonAppDataFolder]\EinVariablerOrdner2, [CommonAppDataFolder]\EinVariablerOrdner3 haben.

Somit bekomme ich x Verzeichnisvariablen ({EinVariablerOrdner}, {EinVariablerOrdner2}) von InstallShield angelegt. Die Erzeugung der Componenten passiert über das Automation Interface von InstallShield.

Mir geht es jetzt darum den Wert der Variablen [CommonAppData] anhand eines Schalters auf der Oberfläche zu setzen. Ist der Schalter an ist der Wert für [CommonAppData] ==> [CommonAppData]\Company ist der Schalter nicht gesetzt soll der Wert für [CommonAppData] ==> [INSTALLDIR]\Company sein.

Ich würde nun ungerne für jede Komponente mit einem neuen Ordner auch eine Custom Action anlegen.

Hat jemand dafür einen Lösungsansatz?

Danke

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 24 January 2011 - 18:32

Also wenn du den Wertz ändern willst ist CommonAppData ein schlechter Name, weil das ja ein vordefinierter Betriebssystemwert ist. Nimm besser etwas selbst definiertes, z.B. MYCOMMONFILES

Dann kannst du den Wert von MYCOMMONFILES je nach Bedarf entweder auf [CommonAppData]\Company oder auf [INSTALLDIR]\Company setzen. Damit das dann auch für die Unterverzeichnisse übernommen wird, musst du es entweder vor CostFinalize machen (was in deinem Fall nciht geht, weil du es per Dialog konfigurieren willst) oder per ControlEvent (auf dem "Next" Button des Dialogs) SetTargetPath.