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

Custom Action wird nicht ausgeführt


6 replies to this topic

Sir Charles

Sir Charles
  • Full Members
  • 40 posts

Posted 16 March 2006 - 16:46

Wodurch wird sichergestellt, dass eine Custom Action nicht nur bei Neuinstallation, sondern auch bei Maintenance und Repair ausgeführt wird?
Ich habe das Problem, dass die Action bei Neuinstallation der Applikation wunderbar funktioniert, jedoch im Maintenance und Repair Mode definitiv nicht ausgeführt wird. Muss dazu eine spezielle Condition gesetzt werden? Meine Definition der Action:
In-Script Execution=Immediate Execution
Execution Scheduling=Always execute
Install Exec Sequence=After AppSearch
Der Rest steht auf Absent.

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 16 March 2006 - 19:50

Wenn du für die Aktion keine Bedingung angibst wird sie immer ausgeführt. Schreib mal ein Log um zu sehen was los ist.

Sir Charles

Sir Charles
  • Full Members
  • 40 posts

Posted 17 March 2006 - 11:24

Nun, Du hast schon recht. Die Action wird auch im Maintenance ausgeführt. Der Unterschied besteht darin, dass die Auswertung nicht funktioniert. Im Prinzip geschieht folgendes in der Action:

svServer = SRCDIR;
StrRemoveLastSlash(svServer);
ParsePath(svServer, svServer, PATH);
FeatureSetTarget(MEDIA, "<SERVERDIR>", svServer);

Hier wird ein Serververzeichnis aus SRCDIR abgeleitet und mit FeatureSetTarget veröffentlicht. Wie ist nun der Unterschied zwischen neuinstallation und update:
neuinstallation:
PROPERTY CHANGE: Adding SERVERDIR property. Its value is 'C:\myproduct\'
update:
PROPERTY CHANGE: Adding SERVERDIR property. Its value is 'C:\DOCUME~1\itsme\LOCALS~1\Temp\'
Der zweite Pfad ist einfach Schrott und ich weiss nicht warum? Liegts am SRCDIR oder liegts an FeatureSetTarget?

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 20 March 2006 - 08:04

Das sollte sich durch eine MessageBox leicht klären lassen, oder?

Windows Installer löst das Source Dir normalerweise nur bei der Erstinstalaltion auf, oder beim repair wenn tatsächlich Zugriff auf das Instalaltionsmedium benötigt wird. Du kannst aber die Aktion ResolveSource in die Sequenz aufnehmen (bzw. die Bedingung dafür ändern) so dass das Verzeichnis immer aufgelöst wird. Normalerweise will man das nicht, weil sonst jedesmal die Instalaltions-CD eingelegt werden muss (Windows Installer löst dann nicht nur den Pfad auf sondern stellt auch sicher, dass er Zugriff darauf hat). Mindestens beim Uninstall ist das meist unerwünscht.

Wenn es dir nur um das Verzeichnis geht könntest du es auch bei der Erstinstallation in einen registry-Eintrag schrieben und im Maintenance Mode von dort zurücklesen.

Sir Charles

Sir Charles
  • Full Members
  • 40 posts

Posted 20 March 2006 - 14:57

Das mit dem nicht aufgelösten SRCDIR bestätigt das Verhalten. Da ich grundsätzlich diesen Eintrag bei Neuinstallation in die Registry schreibe, habe ich versucht diesen im Maintenance Mode auszulesen. Dabei fällt auf, dass MAINTENANCE immer false ist und anscheinend nicht ausgewertet wird. Sind solche Konstruktionen

if (MAINTENANCE) then ... oder
if (MAINTENANCE || REPAIR)

nicht mehr zulässig? Wir wird der Maintenance Modus im Script dann ermittelt? Ich laufe nie in diesen Zweig hinein und das so scheint es ist das Hauptproblem.

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 22 March 2006 - 10:28

Ich glaube das es die Systemvariable MAINTENANCE nur bei InstallScript und InstallScript MSI Projekten gibt, aber nicht in Basic MSI Projekten.

Sir Charles

Sir Charles
  • Full Members
  • 40 posts

Posted 22 March 2006 - 14:35

Stimmt wohl. Auch meine Recherchen haben dazu nichts mehr ergeben. Trotzdem, die Abfrage auf den Registryeintrag funktioniert und das ist für meine Zwecke absolut ausreichend. Danke nochmal für Deine Tipps.