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

Access mdb wird nicht ersetzt


7 replies to this topic

ali

ali
  • Full Members
  • 1,008 posts

Posted 24 November 2006 - 14:13

Hallo,
wir führen ein Major Upgrade auf eine Vorgängerversion durch.
Bei dem Zielsystem handelt es sich um einen Terminalserver.

Folgender Ablauf:
Der Installer ermittelt komischerweise während des CostFinalize, das die MDB die installiert ist eine neuere Version hat als die zu installierende mdb. Da eine Access mdb keine Version hat ist das schon recht merkwürdig. Eigentlich müsste der Installer feststellen, dass die installierte mdb ein älteres Datum hat als die zu installierende, das tut er aber nicht. Während des RemoveFiles Prozess wird erkannt das die mdb exlusiv im Zugriff ist, da die Anwendung auf einer anderen Terminalserver Session noch geöffnet ist. Die Anwendung wird geschlossen, die mdb liegt frei, ein klick auf wiederholen in bei der Installation und weiter geht’s. Am Ende der Installation ist die neue mdb aber nicht da, da die alte mdb als zu entfernen Installed(local) Action(absend) markiert war. Die neue mdb wird nicht hinkopiert, weil im CostFinalize ermittelt wurde, das eine neuere Version installiert ist.
Das alles passiert aber komischerweise nur wenn die mdb während der Installation im Zugriff liegt, ist die mdb von Installationsbeginn an freigelegt, dann läuft auch die Installation sauber ab, und die mdb wird ersetzt.

Hat einer dazu eine Idee? blink.gif

Edited by ali, 24 November 2006 - 14:15.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 26 November 2006 - 23:28

QUOTE
Der Installer ermittelt komischerweise während des CostFinalize, das die MDB die installiert ist eine neuere Version hat als die zu installierende mdb.
Steht das so im Log? Oder ist das deine Schlussfolgerung?

Ist am Ende des Major Upgrade die alte MDB da, oder gar keine?

ali

ali
  • Full Members
  • 1,008 posts

Posted 27 November 2006 - 10:19

im log steht das die Komponente mit dem KomponentenCode nicht installiert wird "since a nother Key File with a newer Version exists".

Nach der Installation ist keine mdb mehr da.

Edited by ali, 27 November 2006 - 10:19.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 27 November 2006 - 10:46

Das kann daran liegen, dass die MDB seit der Installation geändert wurde (weil die Software Daten reingeschrieben hat). Wenn du die .msi Datei mal im Direct Edito Modus öffnest und in die Tabelle File schaust, steht da bei der MDB Datei irgendwas in der Spalte "Version" drin?

ali

ali
  • Full Members
  • 1,008 posts

Posted 27 November 2006 - 11:08

weder die alte noch die neue mdb haben einen Versionseintrag. Die alte mdb hatte aber auch keinen neuen Timestamp, da diese nicht geändert werden kann (Schreibeschutz). Der Timestamp der neuen mdb war neuer als der der alten.
Wie schon beschrieben besteht das Problem nur wenn die mdb währen der installation im zugriff war, schließt man die Anwendung vor dem Update läuft es sauber durch.

Edited by ali, 27 November 2006 - 11:09.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 27 November 2006 - 11:27

Dann verstehe ich es auch nicht.

kth

kth
  • Full Members
  • 13 posts

Posted 23 January 2007 - 11:03

Bei .mdb-Dateien gibt es leider keine Versionsnummern, d.h. der Installer vergleicht lediglich das Datum des letzten Zugriffs. Das Datum der zu installierenden MDB wird mit dem Datum der zu überschreibenden MDB verglichen. Das Problem ist, das MDBs bei jedem Öffnen das Datum aktualisieren.

Hilfe bringt hier nur IS 12, bei dem man die Option "Immer überschreiben" hat, unabhängig vom Dateidatum.

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 23 January 2007 - 15:43

QUOTE
Das Datum der zu installierenden MDB wird mit dem Datum der zu überschreibenden MDB verglichen.
Das ist so nicht ganz richtig. Bei Versionslosen Dateien schaut Windows Installer nur auf die bereits vorhandene Datei und vergleicht dort Erstell- und Änderungsdatum. Wenn die Datei nach dem Erstellen geändert wurde (Änderungsdatum neuer als Erstelldatum) dann wird sie nicht überschrieben, denn sonst würde der Benutzer seine Änderungen verlieren.
Das Datum der Datei im Setup ist in diesem Fall überhaupt nicht relevant.

Die Option "Immer überschreiben" trägt einfach eine hohe (erfundene) Versionsnummer im Setup ein. Dann wird die vorhandene Datei überschrieben (Datei mit Version überschreibt Datei ohne Version). Weil die Versionsnummer gelogen ist, wird dann aber auch bei einer Reparaturinstallation die Datenbank wieder plattgemacht.