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

OnInstallingFile


6 replies to this topic

par

par
  • Members
  • 6 posts

Posted 06 December 2002 - 12:04

Ich verwende den Event OnInstallingFile um ein log-File zu schreiben, das alle installierten Dateien enthalten soll.

Bei genauerer Untersuchung habe ich nun festgestellt, dass der Event OnInstallingFile auch kommt, wenn die Datei nicht kopiert wird. Dies kann z.B. sein, wenn bereits eine neuere Datei am Installationsort vorhanden ist.

Wie kann ich nun herausfinden, wann eine Datei wirklich kopiert wird?

Danke
par

probsar

probsar
  • Members
  • 31 posts

Posted 06 December 2002 - 13:24

Benutzt du das setup.ilg fiel zum loggen oder ein anderes.
In "setup.ILG" sind alle Dateioperationen gelogged inclusive STATI ;)

par

par
  • Members
  • 6 posts

Posted 06 December 2002 - 14:28

Mein log-File das ich erzeugen will, sollte im Klartext ausweisen welche Dateien kopiert wurden. Ich füge zum Dateinamen auch noch die Grösse, das Datum und ev. die Version dazu.
Mit meinem log-File kann ein Benutzer überprüfen welche Änderungen an seinem System vorgenommen wurde.

Kann ich das Setup.ilg selbst zurücklesen und die Daten so aufbereiten? Ich verwende zur Deinstallationsvorbereitung die Standardmechanismen von InstallShield.

par

probsar

probsar
  • Members
  • 31 posts

Posted 06 December 2002 - 16:55

Normalerweise deinstalliert IS keine Dateien die es nicht selbst angelegt hat. (Wird glaub innerhalb der log datei mitprotokolliert) Auslesen der log datei ist eher schwierig, da sie binär vorligt. Wie hast du deine Installationsoptionen gesetzt? Hast du die relevanten dateien al "SHARED" und "Maybee Locked" gesetzt???
Uber diese optionen kannst du noch mal verfeinert steuern wie sich IS beim copy verhalten soll.
Du kannst auch zusätlich über die Versions und Datums- Prüffunktion ein gezielteres überschreiben der dateien herbeiführen.

Falls alles nichts hilft, mußt du all diese dateien VOR DEM MOVE DATA nachprüfen ob sie schon vorhanden sind und dementsprechend VON HAND behandeln:
- Datei falls notwendig umbenennen (z.b. "xxx.old")
- Dann erst den Copy anstoßen
- beim uninstall auf Vorhandensein von "xxx.old" prüfen VOR der DeInstallation
- Die alten Dateien VOR DEM NEUSTART recovern...

Na dann viel Spaß

par

par
  • Members
  • 6 posts

Posted 06 December 2002 - 17:34

Ich möchte noch folgendes anfügen:

Das Installieren und Deinstallieren funktioniert so wie es muss. Das einzige was mir noch fehlt, ist eine zusätzliche Log-Datei, die auch vom Menschen normal gelesen werden kann. Diese Log-Datei soll nur Dateien auflisten die auch wirklich auf den Rechner kopiert wurden. Der Event OnInstallingFile kommt bei allen Dateien, die die Installation vorgibt kopieren zu müssen, aber ohne ein Hinweis ob die Datei auch wirklich kopiert wird.

Beispiel:
Die Datei mein.dtd soll ins Verzeichnis <TARGETDIR>\data kopiert werden, wenn dort keine Datei diesen Namens liegt. Ist eine Datei mein.dtd bereits vorhanden während der Installation, kommt trotzdem der Event OnInstallingFile. Und damit weiss ich jetzt nicht ob die Datei während der Installation noch kopiert werden musste oder nicht.
Dies könnte sogar ein Bug sein.

Danke für die bis jetzt angebotene Hilfe !

Sir Charles

Sir Charles
  • Full Members
  • 40 posts

Posted 30 January 2003 - 14:18

Dein Problem ist mir bekannt.
Ich protokolliere sämtliche Setup-Aktionen in eine eigene Protokolldatei.
Für die Dateioperationen verwende ich ebenso OnInstallingFile. Es ist richtig, dass dieser Event-Handler alle Dateien aus dem Medium zum Dateitransfer einreiht. Zu diesem Zeitpunkt ist jedoch noch nicht bekannt, ob die Datei aufgrund ihres Attributes installiert wird oder nicht. Eigentlich benötigt man dafür einen OnInstalledFile-Handler. Den gibt es jedoch nicht. Somit kannst Du keine Aussage treffen, ob installiert wurde oder nicht.
Leider konnte ich dieses Problem bisher auch noch nicht lösen. Vielleicht gibt es eine Möglichkeit, ich jedenfalls kenne keine.

par

par
  • Members
  • 6 posts

Posted 31 January 2003 - 14:27

Ich habe es unterdessen geschafft das Problem in den Griff zu kriegen.
Bei jedem Aufruf von OnInstallingFile merke ich mir die Daten zu diesem File, indem ich Version, Datum etc. in eine Liste eintrage (ich schaue damit auf das Zielsystem bevor die kopiert werden könnte). Ist das File auf dem Zielsystem noch nicht vorhanden, kriege ich auch keine Version und Datum zurück. Am Ende des Installationsvorgangs vergleiche ich die Liste mit den vorhandenen Dateien auf dem System (mit derselben Funktion zum Auslesen von Version, Datum etc.). Ist die Datei nicht kopiert worden bleibt der Eintrag aus der Liste derselbe wie beim OnInstallingFile Event.

par