2014-04-30 29 views
5

Ich habe ein kleines Problem damit zu verstehen, wie InstallShield Upgrades behandelt.Führen Sie die Deinstallation/Neuinstallation während des Upgrades durch.

Ich möchte in der Lage sein, die Versionsnummer im Installer zu inkrementieren, kompilieren und mein Installationsprogramm zu verteilen. Dies sollte automatisch jede vorherige Version der Anwendung entfernen und die neueste Version installieren (und sie sollte dem Benutzer als "Upgrade" präsentiert werden).

Dies ist ein sehr einfaches Installationsprogramm, es nimmt nur die Ausgabe von einigen Visual Studio-Projekten (eine Anwendung EXE, einige DLLs und so weiter) und installiert sie alle in Programme. Es gibt nur ein Feature und es wird immer installiert.

Ich möchte nicht den Upgrade-Code des Produkts ändern, weil ich dann neue Upgrade-Pfade erstellen müsste (eins für jede vorherige Version), was chaotisch ist.

Ich habe dies schon einmal versucht (die Versionsnummer erhöht, aber weder den Produktcode noch den Upgrade-Code geändert), aber jedes Mal, wenn ich das Installationsprogramm zum "Upgrade" des Produkts ausführe, heißt es " Fortsetzen des Assistenten für [ProductName] ", und manchmal werden einige der Dateien nicht durch ihre neueren Gegenstücke aus dem neueren Installer ersetzt.

Ich erhöhe nicht die "revision" -Nummer der Versionsnummer. Ich weiß, dass das ignoriert wird. Normalerweise werde ich etwas wie 2.0.3 => 2.0.4 versuchen.

Wie kann ich InstallShield so einrichten, dass es automatisch frühere Versionen entfernt, die neueste Version installiert und diese dem Benutzer als "Upgrade" oder "Update" präsentiert, wenn sie bereits eine frühere Version installiert haben? Wenn nicht, sollte es wie normal installiert werden (ein "Installieren", kein "Update").

Ich verwende Installshield 2013 Pro (20 Version SP1), und ich bleibe den Install Editor in Visual Studio 2010.

+0

Welchen Projekttyp verwenden Sie? Installscript MSI, Basic MSI, reines Installscript? –

+0

Ich glaube, es ist ein Basic MSI-Projekt, aber ich bin nicht vertraut mit InstallShield, so dass ich nicht sicher weiß. Es hat eine '.isproj' Datei und eine' .ism' Datei im Projektordner. – qJake

+0

Ich denke, Sie können erreichen, was Sie wollen, indem Sie nur die Aktualisierungstabelle zusätzlich zu dem aktualisieren, was Sie bereits tun. Bitte lesen Sie dies gründlich: http://apprepack.blogspot.no/2012/06/msi-upgrade-table.html. Aktualisieren Sie im Wesentlichen das Feld VersionMax. Dies setzt voraus, dass das Setup bereits für ein größeres Upgrade-Szenario eingerichtet wurde. –

Antwort

6

zu verwenden Was Sie brauchen, ist ein wichtiges Upgrade. Dies ist im Wesentlichen eine automatische Deinstallation der vorhandenen Version und die Neuinstallation einer neuen Version, die von der Windows Installer Engine selbst ausgeführt wird, nachdem Sie die Upgrade-Tabelle des MSI erstellt, eine neue ProductVersion erstellt und das Paket und den Produktcode geändert haben. Dies ist der am wenigsten fehleranfällige Aktualisierungsmechanismus in Windows Installer. Um ein größeres Upgrade in Installshield zu implementieren, wechseln Sie in die Ansicht Upgrades und fügen Sie ein Upgrade-Element hinzu. Dann folgen Sie dem GUI-Assistenten oder den Seiten und legen die Upgrade-Optionen fest. Ich werde sehen, ob ich jetzt einen besseren Link für dich finden kann, aber das sollte dich weiterbringen. Um wirklich Windows Installer Upgrades zu verstehen, sollten Sie this book chapter lesen. Oder dieses Microsoft MSDN page.

Nur der Vollständigkeit halber: ein geringfügiges Upgrade - die Aktualisierung der bestehenden Installation, ohne es zu deinstallieren, ist in der Regel schwieriger, am Anfang richtig zu bekommen. Eine Reihe von technischen Einschränkungen gelten. Hier ist eine sehr gute Zusammenfassung dessen, was für eine geringfügige Upgrade auf Arbeit erforderlich ist (wie auch weitere Details): http://www.installsite.org/pages/en/msi/updates.htm

+0

Das ist die Sache, obwohl ... wir häufige Versionen von Produkten ausstoßen und die Erstellung eines Upgrade-Pfades/Upgrade-Elements für jedes Produkt innerhalb des InstallShield-Projekts mühsam ist. Die Anwendung sollte das Aktualisieren von einer früheren Version unterstützen, sodass für jede frühere Version ein Element erforderlich wäre. – qJake

+0

Update: Das ist eigentlich richtig, wir haben den Upgrade-Code geändert, nicht den Produktcode (die Namen dieser Eigenschaften sind verwirrend und scheinen rückwärts zu laufen!). Unsere großen Upgrades funktionieren jetzt von jeder vorherigen Version. – qJake

0

In diesem Fall Sie COM-Automatisierung verwenden können, um den Freigabeprozess zu automatisieren Javascript oder VBScript verwenden. Dies ist ein vertrauter Prozess, wenn Sie zuvor andere Produkte wie Word oder Excel automatisiert haben.Hier sind einige Ressourcen in Gang zu bringen:

Ich habe ein Build-Prozess einmal diese Art von VB Scripting und auch ein Build-Tool FinalBuilder aufgerufen, nahm Sorge für den Rest des Build-Prozesses. Ich nehme an, dass FinalBuilder zu diesem Zeitpunkt möglicherweise eine Aktion für Installshield enthält, damit Sie das Scripting vollständig umgehen können. Ich weiß es nicht genau. Ich wollte nur mit der GUI verlinken, damit Sie sehen können, wie das Tool aussieht. Further screenshots.

+0

Wir verwenden bereits TFS für die Build-Automatisierung, die auch über eine InstallShield-Integration verfügt. Ich bin kein Bauingenieur, also habe ich Mühe zu verstehen, was das mit dem Aufbau selbstaktualisierender Installateure zu tun hat? Normalerweise erstellen wir unsere Installationsprogramme mit Visual Studio (wir sind ein kleines Team). – qJake

+0

Dieser Build-Prozess sollte in der Lage sein, ein MSI auszuspucken, das bei Bedarf eine umfassende Aktualisierung aller früheren Versionen durchführt - oder es handelt sich nicht um einen vollständigen Build-Prozess. Ich habe TFS nicht benutzt und kann nicht beschreiben, wie die Dinge dort gemacht werden. –

+0

Ich denke, das ist meine Frage - wie kann ich das ohne einen Build-Prozess machen? Wie kann ich eine ausführbare Setup-Datei erstellen, die sich von einer früheren Version major upgradet ... aber * nur * mit dem InstallShield-Editor? – qJake

Verwandte Themen