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

Installationsverzeichnis durch Suche ermitteln


3 replies to this topic

Frank H

Frank H
  • Full Members
  • 9 posts

Posted 08 August 2007 - 10:56

Hallo,

nachdem sich mein letztes Problem tatsächlich als Bug erwiesen hat (das wurde mir nach langem Hin und Her vom Macrovision-Support bestätigt), habe ich nun das nächste unerklärliche Phänomen:

Ich möchte ein Upgrade für mein Produkt installieren. Dafür möchte ich das Verzeichnis suchen, in dem sich eine bestimmte Datei befindet und dieses Verzeichnis an die Property [INSTALLDIR] zuweisen. Dies geschieht in einer benutzerdefinierten Aktion, bei der eine dll aufgerufen wird. Dort kann ich durch die Funktion MsiSetProperty den Wert der Property [INSTALLDIR] zuweisen. Dieser erscheint nun auch korrekt in den folgenden Dialogen.
Starte ich nun die Installation, so werden alle Dateien, die dirket in dieses Verzeichnis installiert werden sollen, auch dorthin installiert. Alle Unterverzeichnisse und deren Dateien befinden sich jedoch im Standardverzeichnis, so als ob INSTALLDIR nicht gesetzt worden wäre.

Lasse ich die benutzerdefinierte Aktion weg und lege bei der Installation das Verzeichnis durch den Dialog "Zielordner" fest, so befinden sich natürlich auch die Unterverzeichnisse am richtigen Platz.


Gruß,
Frank

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 08 August 2007 - 16:45

Mit MsiSetProperty geht das nur vor CostFinalize, denn dort werden die Properties und die Directory Tabelle aufgelöst. Nach InstallFinalize musst du stattdessen MsiSetTargetPath verwenden. Übrigens kann Wndows Installer mittels Systemsuche nach Verzeichnissen suchen und hat auch Custom Actions zum Setzen eines Verzeichnisses (Typ 35). Es ist generell keine gute Idee, Windows Installer Funktionalität als Custom Action nachzubauen.

Frank H

Frank H
  • Full Members
  • 9 posts

Posted 09 August 2007 - 09:32

Vielen Dank, mit SetTargetPath funktioniert es korrekt.

Ich brauche jedoch weiterhin die benutzerdefinierte Aktion, da ich durch die Systemsuche nur festlegen kann, ob die Installation fortgesetzt werden soll oder nicht, jedoch keinen Wert zuweisen kann.
Auch gibt es im Express kaum vordefinierte CAs, so dass ich diese Möglichkeit leider auch nicht nutzen kann.


Gruß,
Frank

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 09 August 2007 - 19:23

Über die Systemsuche wird erst mal was gefunden (oder auch nicht) und das Ergebnis in einem Proeprty gespeichert. Dieses Proeprty kann man in einer LaunchCodition verwenden, man muss aber nicht. Allerdings bin ich mir nicht sicher, was da alles in Express möglich ist.