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

Installations-Downgrade verhindern...wie??? HILFE!


5 replies to this topic

herrbecht

herrbecht
  • Full Members
  • 59 posts

Posted 21 October 2004 - 19:46

Hi

Ich habe folgendes Problem:

Ich möchte verhindern, daß ein altes Paket über eine neuere Version meiner Installation installiert werden kann. Zu diesem Thema gibt es einen Hilfe-Eintrag "How do I prevent an old package from installing over a newer version". Ich habe versucht das bei meinem Projekt umzusetzen.... VERSUCHT... . So wie ich das verstanden habe, müssen die MSI-Tabelleneinträge auch im allererste Paket, das man vorhanden sein (das geht für mich zwar aus dem kryptischen Hilfeeintrag nicht hervor, habe ich anderswo gelesen und wenn man die Einträge in der ursprünglichen Installation weglässt, ist ein Downgrade mit dieser Version [an den nachfolgenden Versionen meines Erachtens möglich]) Ist diese Annahme korrekt?.
Die Version 1.0 meiner Installation hatte folgende Einträge:

Upgrade Table:
CODE
UpgradeCode       VersionMin VersionMax [...] Attributes [...] ActionProperty
{MyUpgradeCode}   1.0                         2                NEWPRODUCTFOUND


CustomAction Table:
CODE
Action     Type Source Target
CA1        19          A higher upgrade is already installed.


InstallExecuteSequence Table :
CODE
Action                  Condition          Sequence
FindRelatedProducts                         200
CA1                     NEWPRODUCTFOUND     201


Property Table:
CODE
Property                    Value
SecureCustomProperties      NEWPRODUCTFOUND



In der Hilfe sind noch andere MSI-Tabelleneinträge aufgelistet, die im beschreibenden Text allerdings nicht erwähnt werden. Diese Einträge habe ich weggelassen (Die 2.Zeile der dargestellten Upgrade-Tabelle und den Eintrag in der Property-Tabelle). Ist das so korrekt?

Die Einträge in den MSI-Tabellen bewirkten, daß in der Installshield-IDE unter dem Punkt "Upgrade" ein Major-Upgrade angelegt wurde mit der Einstellung: "Produltversion/Innerhalb einer bestimmten Versionsauswahl: 1.0 - . Wenn ich das Major-Upgrade lösche, verschwinden auch meine Einträge in den MSI-Tabellen. Also habe ich die Einstellungen gelassen. Anschließend habe ich einige Dateien meines Projektes verändert und wollte dann ein Minor-Upgrade erstellen (Version 1.1). Als "Setup to Upgrade" gab ich meine Version 1.0 an. Beim Erstellen des Mediums brach InstallShield ab und meldete, daß die Version 1.0 nicht als Basis für ein Minor Upgrade taugen würde.... auch ein Major-Upgrade funktioniert irgendwie nicht.... Was mache ich falsch??? Arrrggg Bitte helft mir... Ich will einfach nur verhindern, daß mit meiner ersten Version ein zukünftiges Major-Upgrade ge-downgraded werden kann ... und man aber Minor Upgrades erzeugen kann, die auf dieser Version aufbauen.????

Bin für jede Hilfe dankbar....

Edited by herrbecht, 25 October 2004 - 09:32.


ali

ali
  • Full Members
  • 1,008 posts

Posted 22 October 2004 - 09:03

also die Einträge scheinen richtig zu sein bis auf eins. Ich weiß nicht wie streng die richtlinie ist, aber eigentlich sollten die Versionen soweit mir bekannt dreistellig eingegeben werden also 1.0.0 anstatt 1.0. Ist aber nur eine Vermutung. In deinem ausschnitt zum Tabelleneintrag ist nicht so gut ersichtlich wo du die VErsion eingetragen hast Version Min oder Version Max. Richtig wäre VErsion Min.

herrbecht

herrbecht
  • Full Members
  • 59 posts

Posted 26 October 2004 - 13:01

Hab das mal versucht mit der 3stelligen Versionsnummer und es hat funktioniert! Danke!!

Das einzige Problem was bestehen bleibt ist, daß in der IDE immer noch das große-Update-Element steht mit dem Eintrag: "Produltversion/Innerhalb einer bestimmten Versionsauswahl: 1.0 - . Was passiert damit???? Das große-Upgrade-Element muß ich doch weglöschen, wenn sich an meinem Projekt was geändert hat und ich ein kleines Upgrade erzeugen will??

Meines Erachtens macht es doch nur Sinn da entweder ein Major-Upgrade anzulegen oder ein oder mehrere Minor Upgrades anzulegen (bei Minor Upgrades muß man ja alle Versionen angeben [wenn ich das richtig verstanden habe])..

Wenn man diesen Downgradeschutz in die MSI-Tabellen eingetragen hat und dadurch ein Eintrag für ein Major-Upgrade erzeugt wird, und man will irgendwann mal ein Minor-Upgrade anlegen....-> macht das Überhaupt Sinn..-> weiß dann InstallShield überhaupt noch was ich will???????? Bitte helft mir!!!!


ali

ali
  • Full Members
  • 1,008 posts

Posted 26 October 2004 - 15:10

Für den Downgradeschutz wird kein eintrag für ein Major Upgrade in die MSI Tabelle eingetragen.
Du hast für deinen Downgradeschutz in der Upgradetabelle bestimmt werte angegeben. Unter anderem die VErsionsnummer die Attribute und ein Property. Nun läuft das so ab, das das Attribut 2 sagt, das nur nach einem Produkt gesucht werden soll (sonst nix). Wenn diese Produkt gefunden wird, wird das Property mit dem Produkt Code gefüllt. Damit ist deine bedingung erfüllt. Deshalb hast Du auch einen extra eintrag in der Upgrade Tabelle, weil sich die Attribute usw. unterscheiden. Dumm ist nur das dieser Eintrag unter Upgrades angezeigt wird, es wird hier ja nur nach einer neueren Productversion gesucht. Das kommt aber daher, da in dem Menü Upgrades einfach alle Tabelleneinträge aus der Upgrade Tabelle angezeigt werden ohne auswertung welchen zweck sie erfüllen.

Hoffe ich habe dir geholfen.

herrbecht

herrbecht
  • Full Members
  • 59 posts

Posted 28 October 2004 - 13:20

OK, vielen Dank für die Infos... das ist wirklich etwas verwirrend, daß InstallShield ein Major_Upgrade-Element anleght... naja hoffe das funktioniert jetzt so...

Hab da nochmal ne dumme Frage: Es ist aber schon so, daß ich die Einträge manuell machen muß und bei jedem Major_Upgrade die aktuelle Versionsnummer da eintragen muß (als VersionMin), oder gibt es eine Möglichkeit daß das InstallShiield automatisch macht...(ist ja eigentlich nich so schwer)???

Ich benutze InstallShield X - meine Unterlagen sind halt noch von InstallShield 9 und da ist auf diesen MSI-Hilfeeintrag verwiesen...("How do I prevent an old package..."), wollte halt nur mal fragen vllt kann das ja "X" schon...

Wie verfahre ich eigentlich wenn ich ein Minor_upgrade erzeuge (z.Bsp.: 1.1), muß ich da auch die Versionsnummer hochzählen??? Hab nämlich gelesen, daß dieser Downgradeschutz nur bei Major_upgrades wirkt...????

Vielen Dank schonmal....



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 29 October 2004 - 14:25

Du musst den Eintrag leider immer manuell nachführen.