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

Problem mit Patch Wizard


22 replies to this topic

lkohnert

lkohnert
  • Members
  • 4 posts

Posted 21 June 2004 - 14:40

Hallo allerseits.

Ich möchte ein "small update (zwei zusätzliche neue Dateien)" mit dem Patch Wizard erstellen. Ich verwende Den Developer 7.04 (Update 4). Der Wizard läugt ohen Fehlermeldung durch und es wird auch eine Update.exe erzeugt aber kein *.msp Datei. Wenn ich Update.exe auf eine Installation der alten Software anwende, startet zunächst der Update-Wizard und bricht dann später mit der Fehlermeldung ab, dass die *.msi Datei des Produkts nicht auf dem Update-Medium gefunden werden kann. Ach wenn ich die *.msi mit auf das Medium packe bekomme ich diese Meldung. Welche Dateien muss ich denn noch hinzufügen damit das ganze funktioniert?
Die Online-Hilfe sagt dazu nichts weiter...

lkohnert

lkohnert
  • Members
  • 4 posts

Posted 21 June 2004 - 16:04

Mittlerweile bin ich einen Schritt weiter gekommen. Die Fehlermeldung war die Aufforderung das Medium mit den Quelldateien der originalen Installation einzulegen. Danach läuft der Patch auch wie erwartet durch. Dieses Verhalten ist wohl so üblich (zumindest noch Developer 7), wenn die Quelldateien nicht mehr auf der Zielmaschine vorhanden sind - was allerdings nicht besonders prickelnd ist. Kennt jemand eine Möglichkeit ohne einen Medienwechsel den Patch durchzuführen oder gibt es wenigstens die Möglichkeit die Dialog Texte von Update.exe anzupassen ?

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 22 June 2004 - 07:31

Ich verschiebe die Frage in das Forum für Windows Installer Fragen

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 22 June 2004 - 07:37

Der folgende Artikel in der MSI Hilfe gibt einige Tips:
How can I prevent my patch from requiring access to the original installation source?

Verwendets du übrigens den Projekttyp "Basic MSI" oder "Standard" (in späteren InstallSHield-Versionen als "InstallScript MSI" bezeichnet)?

lkohnert

lkohnert
  • Members
  • 4 posts

Posted 22 June 2004 - 10:06

Vielen Dank für den Tipp! Ich werde den Patch darauf hin überprüfen und meine Erfahrung hier posten. Ich verwende übrings den Projekttyp "Standard".

Joerg Hoffmann

Joerg Hoffmann
  • Members
  • 33 posts

Posted 18 October 2005 - 06:35

QUOTE (Stefan Krueger @ 2004-06-22 07:37)
Der folgende Artikel in der MSI Hilfe gibt einige Tips:
How can I prevent my patch from requiring access to the original installation source?

Verwendets du übrigens den Projekttyp "Basic MSI" oder "Standard" (in späteren InstallSHield-Versionen als "InstallScript MSI" bezeichnet)?

Hallo,

ich lasse diesen Thread mal kurz wieder aufleben.

Der angegebene Link führt wohl inzwischen ins Nirwana.

Ein ähnlicher Link in der InstallShield Knowledge Base liefert auch nur eine Fehlermeldung.

Ich habe genau das beschriebene Problem und wäre über weitere Lösungsvorschläge dankbar.

Gruß
Jörg Hoffmann


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 18 October 2005 - 08:11

Der Artikel wurde umbenannt und befindet sich jetzt hier:
Preventing a Patch from Requiring Access to the Original Installation Source

Joerg Hoffmann

Joerg Hoffmann
  • Members
  • 33 posts

Posted 18 October 2005 - 09:55

QUOTE (Stefan Krueger @ 2005-10-18 08:11)
Der Artikel wurde umbenannt und befindet sich jetzt hier:
Preventing a Patch from Requiring Access to the Original Installation Source

Hallo Stefan,

danke für Deine schnelle Antwort.
Leider helfen mir dir Tips dort nicht wirklich weiter.

Vieleicht kann mir hier jemand bei meinem Problem weiterhelfen:

Ich habe ein Setup für eine Anwendung erstellt, das die Anwendung
vollständig installiert, wenn sie noch nicht vorhanden ist bzw. ggf.
aktualisiert, wenn bereits eine ältere Version installiert ist.
Dies hat bereits reichlich Nerven gekostet, aber hier auf der Seite
habe ich die entscheidenen Informationen dafür gefunden.

Nun habe ich das Problem, dass ich ein Update zur Verfügung
stellen muß, mit dem nur eine bereits vorhandene Version
aktualisiert werden kann.

Wie stelle ich das an?

Ich verwende InstallShield Developer 7.04 und bin nicht bereit
erneut soviel Geld für eine neue InstallShield Version auszugeben.
Ich glaube nämlich nicht, dass das dort wirklich alles soviel besser
funktioniert wie mir die Werbung dafür suggeriert.

Gruß
Jörg






Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 18 October 2005 - 11:34

Du könntest zum Beispiel einen Patch (.msp) erstellen. Dazu musst du zunächst eine vollständige .msi der neuen Version erstellen, und dann mit Hilfe des Patch-Assistenten eine Differenz (=Inhalt des Patch) zwischen der alten und der neuen Version erzeugen.

Joerg Hoffmann

Joerg Hoffmann
  • Members
  • 33 posts

Posted 18 October 2005 - 11:47

QUOTE (Stefan Krueger @ 2005-10-18 11:34)
Du könntest zum Beispiel einen Patch (.msp) erstellen. Dazu musst du zunächst eine vollständige .msi der neuen Version erstellen, und dann mit Hilfe des Patch-Assistenten eine Differenz (=Inhalt des Patch) zwischen der alten und der neuen Version erzeugen.

Danke,

soweit bin ich auch schon gekommen.
Mein Problem ist, dass das Update die ursprüngliche msi Datei auf der CD oder
in dem Ordenr sucht in dem es bei der ersten Installation gelegen hat.

Meine Anwendung auf 2 Wegen installiert werden kann:
1. von CD-ROM
Problem A:
Bei uns in der Firma werden die CDs von der IT Abteilung eingesackt,
wenn die Installation fertig ist. Die Anwender sollen aber das Update
ohne CD ausführen können. In anderen Firmen könnte das ähnlich aussehen.
Problem B:
Die Anwendnung darf mehrfach auf verschiendenen Rechnern installiert werden.
Nicht jeder hat eine CD dafür.

2. Die Daten wird als selbstextrahiernendes Archiv per Email verschickt und
beim Starten in das TEMP-Verzeichnis entpackt um von dort das setup aufgerufen.
Nach der erfolgreichen Installation werden die Daten aus dem TEMP-Verzeichnis wieder gelöscht.

Any idea?

Gruß
Jörg


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 18 October 2005 - 12:22

Es gibt verschiedene Gründe, warum bei der Patch-Instalaltion das Original-Medium benötigt werden könnte, wie in dem Artikel dargestellt.
Ein möglichwer Workaround wäre, die temporären Dateien nicht zu löschen. Sie werden ja z.B. auch bei einem (Auto-)Repair benötigt.

Joerg Hoffmann

Joerg Hoffmann
  • Members
  • 33 posts

Posted 18 October 2005 - 12:53

QUOTE (Stefan Krueger @ 2005-10-18 12:22)
Es gibt verschiedene Gründe, warum bei der Patch-Instalaltion das Original-Medium benötigt werden könnte, wie in dem Artikel dargestellt.
Ein möglichwer Workaround wäre, die temporären Dateien nicht zu löschen. Sie werden ja z.B. auch bei einem (Auto-)Repair benötigt.

Hm,

1. Wie kann ich das bei den "ausgelieferten" Setups realisieren?
2. Wie kann ich verhindern, dass der Anwender die temporären Dateien im TEMP-Ordner löscht?
3. Wozu ist ein TEMP-Ordner da?
4. Ich würde mich als Anwender bedanken, wenn jedes Setup seine nicht mehr benötigten Daten auf meiner Festplatte liegen lassen würde.

Bei den Setups, die ich bisher mit IS erstellt habe, hat ein Repair bisher nicht
funktioniert, z.B. versehentlich gelöschte Datein wurden nicht erneuert usw.

Nun trotzdem Danke für Deine Hilfe.
Falls Du noch andere Ideen hast, ich bin da ganz Ohr.

Gruß
Jörg

P.S.:
Für jemanden, der keine Ahnung vom Programmieren und der Setup-Erstellung
hat, sowie es bei vielen Kollegen aus dem Vertrieb der Fall zu sein scheint,
sieht es so aus, als wenn man so ein Update mal eben aus dem Ärmel schüttelt.
Besonders, wenn man ein so teures und populäres Programm wie InstallShield
verwendet. laugh.gif
Obwohl ich muss sagen, ich hätte auch gedacht dass mir InstallShield eine Menge
Arbeit abnehmen würde. Bisher hat aber die Setup-Erstellung meistens mehr Zeit
in Anspruch genommen, wie die eignetlich Anwendungserstellung.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 18 October 2005 - 15:28

1. zu spät. Ausser du schickst das Orginal-Setup nochmal mit (wenn du das Update auf CD auslieferst).
2. Man muss das Setup ja nicht in den TEMP Ordner auspacken. Der Release Assistent hat eine Option um die Dateien auf dem Zielsystem zu belassen. Gegen manuelles Löschen (ausreichende Rechte vorausgesetzt) ist kein Kraut gewachsen.
3. cool.gif
4. Aber mit einem Update, das sich nicht installieren lässt, und mit einem nicht funktionierenden Repair oder auch Änderungsmodus ist der Anwender glücklich? Eine saubere Lösung für solche Unternehmen wäre, die Software gar nicht lokal von CD zu installieren, sondern von einem freigegebenen Ordner im Netzwerk. Der geht danna uch nicht so leicht verloren wie eine CD.

Joerg Hoffmann

Joerg Hoffmann
  • Members
  • 33 posts

Posted 19 October 2005 - 07:40

Hallo Stefan,

das Auspacken ins TEMP-Verzeichnis und löschen der Dateien war meine Lösung um die Installation intern in unseren Firmen-Netzwerk zu bewerkstelligen.
Nach einem Doppelklick auf die Setup.exe in einem Netzwerkordner ist erstmal gar nichts passiert. Wenn die Installation dann erstmal gestartet war hat
es ewig gedauert bis alle Dateien installiert waren.
Dummerweise wurde dann das "Interne Setup" vom Support und vom Vertrieb an die Kunden per Email verschickt.

zu 4.)
Updaten funktioniert übrigens gut, weil ich die Tips hier http://www.installsi.../Upgrading.html für ein Update mittels Reinstall nachvollzogen habe.
Da der nicht funktionnierende Repair- / Änderungsmodus hierbei nicht mehr zum tragen kommt ist das also nicht das Problem.

Ich habe also z. Zt. folgendes Verhalten:
1. Wenn mein Setup auf einem System ausgeführt wird, auf dem meine Anwendung
noch nicht installiert war, dann wird der Anwender nach einem Zielverzeichnis
gefragt und das Programm dorthin installiert.

2. Wenn bereits eine Version der Anwendung installiert war, dann wird der Anwender
darüber informiert und die neue Version in das bekannte Verzeichnis installiert.

Jetzt kommt die Forderung ein Update zu erstellen, das zuerst prüft, ob die
Anwendung bereits installiert ist und nur dann weiter macht, wie unter 2.

Ich hab da aber noch eine Frage.
Falls unser Vertrieb es akzeptiert, dass das Update nur mit dem Originaldatenträger
der alten Version funktioniert, wie kann ich die Fehlermeldung unterbinden bzw.
durch eine andere Ersetzen die angezeigt wird, wenn das Update keine installierte
Version der Anwendung findet? Ich bekomme dann immer die Meldung:
"1628: Skript-basierte Installation konnte nicht abgeschlossen werden."
Ich würde aber gerne daruaf hinweisen, das es sich um ein Update handelt,
das eine installierte Version voraussetzt.

Gruß
Jörg

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 19 October 2005 - 08:47

Also, wenn es nicht auf die Größe ankommt, kannst du dein Update natürlich auch weiterhin als .msi Paket verteilen, anstatt als Patch (.msp). Durch entsprechende Abfrage kannst du verhindern, dass es ausgeführt wird, wenn die frühere Version nicht vorhanden ist. Dazu könntest du zum Beispiel eine LaunchCondition anlegen:
Installed
(ist true wenn das Produkt bereits installiert ist). Damit lässt sich diese .msi Datei nicht mehr zur Erstinstallation verwenden.

Joerg Hoffmann

Joerg Hoffmann
  • Members
  • 33 posts

Posted 19 October 2005 - 15:13

Was beeinflußt diese Installed Eigenschaft?
Kann es sein, das bei der Überprüfung mit Installed der Paket-Code gleich bleiben muss?
Ich habe die Anwendung mit Paket-Coda A installiert.
Für das neue Setup/Update wird ein neuer Paket-Code B erzeugt.
Produktversion, Produkt-Code und Upgrade-Code sind gleich geblieben.
Jetzt starte ich das neue Setup/Update und bekomme die Meldung
"Anwendung nicht installiert."

Zwischendurch hatte ich das Setup mal mit Paket-Code B laufen lassen und
anschließend das Update probiert und das funkionierte so wie gewünscht.

Weiß jemand mehr?

Gruß
Jörg



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 20 October 2005 - 20:08

Nein, relevant ist hier der ProductCode, nicht der PackageCode. Wenn der gleich bleibt und du eine .msi Datei mit neuem Paket-Code startest (direkt durch Doppelklick auf die .msi Datei, nicht über setup.exe) dann solltest du von Windows Installer eine Meldung bekommen, dass eine andere Version des Produkts bereits installiert ist. Wenn das nicht der Fall ist, dann stimmt was nicht mit dem ProductCode.
Falls du das Setup direkt aus der Entwicklungsumgebung startest, dann solltest du die Option "uninstall before installing" abschalten.

Joerg Hoffmann

Joerg Hoffmann
  • Members
  • 33 posts

Posted 21 October 2005 - 08:22

Hm, der Produkt-Code ist offensichtlich identisch.

Das Verhinderen der Installation wenn die Annwendung noch nicht installiert ist funktioniert
komischerweise nur, wenn ich im Update Paket den Paket-Code des alten Setups verwende.

Hier noch mal meine bisherige Vorgehensweise, damit vieleicht auch andere User
das mal nachvollziehen und/oder evtl. selber verwenden können:

- Standard-Projekt, wg. Übernahme vom Kollegen und aus ältere IS Version)
- Einfügen der Benutzerdefinierte Akltionen fix_reinstall und fix_reinstallmode (wie hier auf Installsite beschrieben)
- Einbau der Aktionen in die Sequenzen für Installation (Oberfläche u. Ausführen) vor der Sequenz CostFinalize.
- In der setup.ini den Eintrag "CmdLine = REINSTALLMODE=voums REINSTALL=ALL" ergänzen.

Dies führt zu einem Setup das sowohl für die Erstinstallation als auch für Updates verwendet werden kann.


Jetzt kam die Anforderung, ein Update zu erstellen das nur dann funktioniert, wenn die Anwendung bereits installiert war.
Es lag also nahe den Patch Assistenten zu verwenden.
Das hat auch gut funktioniert und auf meinem PC wurde tatsächlich auch eine bestehende Version aktualisiert.
Auf meinem Notebook bekam ich allerdings die Fehlermeldung das die msi Datei des vorherigen Setups nicht gefunden werden konnte.
Klar, es wurde ja auch von CD installiert und die lag natürlich nicht im Laufwerk.
Das ist aber nicht das, was wir uns vorstellen.

Wenn die Anwendung bisher noch nicht installiert war kommt nur die Fehlermeldung:
"1628: Skriptbasierte Installation konnte nicht abgeschlossen werden."
Hab ich da eine Möglichkeit dem Anwender eine andere Meldung anzuzeigen?

Nun kam mir Stefans Hinweis mit der Installed-Eigenschaft grade recht.

Ich habe nun also mein ursprünliches Setup-Projekt kopiert und die Abfrage der Installed Eigenschaft eingebaut.
Dazu habe ich unter Allgemeine Informationen / Produkteigenschaften eine Installationsbedingung erstellt, die die Installed Eigenschaft prüft.

Dies funktioniert aber nur, wenn der Paket-Code in diesem Projekt gleich dem Paket-Code des zu aktualisierenden Projektes ist.

Ich hoffe dem ein oder anderen hiermit ein wenig geholfen zu haben.
Un dich hoffe natürlich, das mir noch jemand die Augen öffnet, wenn ich hier was falsch gemacht oder übersehen habe.

Gruß
Jörg

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 23 October 2005 - 15:07

Oh, du verwendest ein InstallScript MSI (oder früher "Standard" genannt) Projekt. Das macht die Sache komplizierter. Ich boin nicht sicher, ob und wie das dann geht. Vielleicht kannst du dein Skript entsprechend abändern.
Allgemein rate ich von der Verwendung dieses Projekttyps ab.

Joerg Hoffmann

Joerg Hoffmann
  • Members
  • 33 posts

Posted 25 October 2005 - 07:36

Hallo Stefan,

Ja, beim Lesen im Forum habe ich auch mitbekommen, dass Du von den InstallScript MSI (oder früher "Standard" genannt) Projekten abräts. Und wenn man die Hilfe und das Installshield Forum häufiger für seine Problemlösung durchsucht, dann kommt man ebenfalls zu dem Schluß, dass man evtl. besser ein ganz neues Setup aufsetzten sollte und dafür den Projekt-Typ Basic MSI wählen sollte.

Also, wen ich mich dazu entschliessen sollte, wie sollte ich da am besten vorgehen?

1. Wie kann ich erkennen ob eine bestimmte Anwendung bereits installiert ist?
2. Wie kann ich sicher die installierte Anwendung deinstallieren, oder sollte ich den Anwender dazu auffordern dies manuell zu tun?

Welche Bücher zum Thema Setup-Erstellung mit InstallShield sind empfehlenswert? Deutsch wäre bevorzugt, englishc ist aber auhc kein großes Problem)


Welche Varainte von InstallShield 11 ist zu empfehlen?
Für meine Setups reichten bisher deutsch und englisch als Setup Sprachen.
Ich fürchte nur, dass demnächst auch weitere Sprachen hinzukommen könnten,
aber ich habe zum Beispiel das Language-Pack für IS Developer 7 noch nie installiert.

Gruß
Jörg

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 25 October 2005 - 16:52

Du könnest die Erkennung über den ProductCode machen. Die automatische Deinstallation per Major Upgrade funktioniert mit "Standard" Projekten nicht zuverlässig. Du kannst entweder eine Custom Action verwenden, oder den Benutzer auffordern, die alte Version zu deinstallieren.

Wenn du nur Deutsch und Englisch brauchst reicht dir vielleicht die Professional German Edition (aber nicht die englische Professional). Wenn es mehr Sorachen sein sollen, brauchst du die Premier Edition vorbei.

Übrigens endet die Upgrade-Berechtigung von Developer 7 auf InstallShield 11 am 31. Oktober. Danach ist der Preis der Vollversion zu zahlen.

Joerg Hoffmann

Joerg Hoffmann
  • Members
  • 33 posts

Posted 26 October 2005 - 09:42

Hallo Stefan,

zuerst noch mal Danke für Deine Antworten biggrin.gif .

Ich hoffe meine "Dummy"-Fragen helfen dem ein oder anderen Newbie wenigstens weiter. Und sei es das er oder sie von Anfang an den richtigen Projekt Typ auswählt.

QUOTE
Du könnest die Erkennung über den ProductCode machen.

Hm, in die Richtung habe ich auch gedacht.
Nun stellt sich mir die Frage, wie ich da am besten vorgehe?

Ich würde in der Registry nach dem folgenden Eintrag suchen:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\InstallShield_{PRODUCT-CODE}\UninstallString
und wenn ich ihn finde den Inhalt verwenden um die alte Version zu deinstallieren.

QUOTE
Die automatische Deinstallation per Major Upgrade funktioniert mit "Standard" Projekten nicht zuverlässig. Du kannst entweder eine Custom Action verwenden, oder den Benutzer auffordern, die alte Version zu deinstallieren.


Wie bereits beschrieben Funktioniert die Variante mit dem MajorUpgrade und den zusätzlichen CustomActions fix_reinstall und fix_reinstallmode Plus dem Eintrag in der Setup.ini "CmdLine = REINSTALLMODE=voums REINSTALL=ALL" sehr zufriedenstellend.

QUOTE
Wenn du nur Deutsch und Englisch brauchst reicht dir vielleicht die Professional German Edition (aber nicht die englische Professional). Wenn es mehr Sorachen sein sollen, brauchst du die Premier Edition vorbei.
Übrigens endet die Upgrade-Berechtigung von Developer 7 auf InstallShield 11 am 31. Oktober. Danach ist der Preis der Vollversion zu zahlen.

Ja, das habe ich gelesen. Deshalb habe ich gefragt. Ich brauchte halt nur noch entsprechende Argumente für unseren Einkauf.

Gruß
Jörg

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 26 October 2005 - 09:53

Also die ProductCode Erkennung ist am einfachsten über die Upgrade Tabelle bzw. Upgrade Ansicht. Wenn Major Upgrade funktioniert, ist ja alles bestens. Andernfalls kannst du die Erkennung trotzdem so machen, eben mit der Einstellung "detect only".
QUOTE
Ja, das habe ich gelesen. Deshalb habe ich gefragt. Ich brauchte halt nur noch entsprechende Argumente für unseren Einkauf.

wink.gif Allerdings musst du bald trotzdem damit leben, nicht die allerneueste Version zu haben (was bei 2 Major Releases pro Jahr eigentlich auch normal ist), denn die 11.5 ist ja bereits im Beta-Test. Ggf. könnte also ein Upgrade auf 11 plus Wartungsvertrag sinnvoll sein, um auch die 11.5 zu bekommen.