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

Update eines Files geht nicht


1 reply to this topic

lingold

lingold
  • Members
  • 42 posts

Posted 28 November 2005 - 14:15

Ich habe ein InstallShield 10.5 Basic MSI Projekt. Ich machte dann ein Setup für eine neuere Version unserer Software (entspricht einem Small Update), wobei einige Files änderten, insbesondere unser Accessprojekt: das alte A.mdb soll durch ein neueres A.mdb ersetzt werden. Ich änderte im InstallShield Projekt den Package Code, nicht aber den Product Code. Nach dem Installieren des Updates ist immer noch das alte A.mdb da. Ich konnte dieses Programm noch immer starten. Danach machte ich ein "Reparieren", und jetzt ist plötzlich das neue A.mdb da! Ich verstehe nicht, warum er nicht schon beim Update das neue A.mdb installiert. Bezüglich diverser Eigenschaften machte ich ein Versuchsprojekt. Im Spiel stehen folgende Eigenschaften:

A. (Component) Never Overwrite: Nein (immer)
B. (Component) Permanent: Nein (immer)
C. (Component) Shared: Ja oder Nein
D. (File) Always Overwrite: Ja oder Nein
E. (File) Keyfile: Ja oder Nein

Ich spielte alle Kombinationsmöglichkeiten, die sich mit C, D und E ergeben, durch, indem ich 8 Components machte mit separaten Files (es sind kleine Textfiles), je in 2 Versionen. Resultat: In ALLEN Fällen wurde upgedatet!
Mein Hauptprojekt hatte für A.mdb in der ersten Version C=ja, D=nein, E=ja. Die zweite Version (zum Updaten) hatte zuerst auch das, und dann änderte ich es auf C=nein, D=ja, E=nein. Im letzteren Fall haben also Eigenschaften geändert, verglichen mit der Vorversion, was vielleicht auch eine Ursache für Fehlfunktionen sein könnte. Aber die andere Variante hat ja auch nicht geklappt! Dies ist entgegen den Resultaten des Versuchsprojekts.
Ich sollte jetzt wissen, welche sonstigen Faktoren hierbei noch mitspielen und wie sie zu setzen sind, damit ein Setup wirklich die frühere Version updaten kann. Vielen Dank.

Edited by lingold, 28 November 2005 - 14:17.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 30 November 2005 - 09:35

C sollte keine Rolle spielen.
E darfst du nicht ändern (sollte auf Ja stehen), sonst funktioniert es sowieso nicht.

Das Problem ist: wenn eine versionslose Datei (die .mdb) geändert wurde seit sie installiert wurde, dann wird sie nicht überschrieben (damit Benutzereinstellungen nicht verloren gehen). Wenn du den Test mit deinem ursprünglichen Setup machst, ohne vor dem Update die Applikation zu starten, so dass die .mdb unverändert bleibt, dann sollte sie auch überschrieben werden. In der Logdatei sollte übrigens drinstehen, warum die Datei nicht überschrieben wurde.

D auf Ja ist ein Workaround für diese Einschränkung. Dabei wird Windows Installer eine höhere Version der .mdb Datei vorgespiegelt, so dass sie in jedem Fall überschrieben wird. Aber Achtung: "In jedem Fall" heisst auch bei jedem (Auto-)Repair, Modify etc.

Die offizeille Lösung wäre, bei Bedarf die alte .mdb zu löschen damit die enue kopiert wird.