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

alte Installation entfernen


7 replies to this topic

Holger.Winkelmann

Holger.Winkelmann
  • Members
  • 19 posts

Posted 31 October 2005 - 12:12

Um mein erstes MSI-Projekt abzurunden brauche ich noch etwas Hilfe:
Bei den "alten" Kunden ist ja mein Verfahren schon installiert. Das geschah bis jetzt mit "IS Pro 6.3", also reines InstallShield. Mit der Neukonzeption erfolgt auch der Umstieg auf "reines" MSI. Wenn ich jetzt nichts weiter unternehme habe ich unter "Einstellungen/Systemsteuerung/Software" zwei Einträge mit dem gleichen Namen. Das ist so natürlich nicht sehr kundenfreudnlich und auch nicht wünschenswert.
Ideal wäre es, wenn ich im Zuge der "neuen" Installation eine Deinstallation der alten Version machen könnte. Die müsste dann aber am besten "bedienerlos" im Hintergrund funktionieren. Wenn dazu jemand einen Tipp hat: Bin für jeden Hinweis dankbar.
Alternativ würde es aus meiner Sicht ausreichen, wenn nur die nicht mehr benötigten Registry-Einträge und Installations-Verzeichnisse der Vorgängerversion entfernt würden (der Software-Eintrag sollte natürlich auch nicht mehr auftauchen). Alles andere würde ja mit der neuen Installtion wieder überschrieben. Hätte zwar den Nachteil, dass registrierte Komponenetn erhalten blieben, aber wenn es nicht anders geht ...

Hat so etwas schon mal jemand gemacht und kann mir auf die Sprünge helfen (vielleicht sogar mit einem Sample) ?

TIA Holger


P.S.: Die Info, ob die alte Version schon installiert ist, ermittele und verwende ich bereits an anderer Stelle der neuen Installation.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 31 October 2005 - 12:35

Du kannst die Deinstallation der alten Version als Custom Action anstoßen, mit dem Kommando, das ind er Registry steht. Wenn das ganze silent erfolgen soll, brauchst du dazu noch eine .iss Response-Datei, die du mitliefern musst. Es gibt glaube ich auch einen Kommandozeilenparameter für stille Deinstallation (/u oder so, schau mal in der Hilfe). Dabei wird aber glaube ich dein Skript nicht ausgeführt, sondern eine Default-Deinstalaltion gemacht. Musst ausprobieren, ob das Ergebnis für dich ausreichend ist.
Alternativ kannst du natürlich einfach den alten Eintrag aus der Registry löschen.

Holger.Winkelmann

Holger.Winkelmann
  • Members
  • 19 posts

Posted 01 November 2005 - 15:43

QUOTE
Du kannst die Deinstallation der alten Version als Custom Action anstoßen, mit dem Kommando, das in der Registry steht.
Und das Kommando findet man unter "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{GUID}", wobei "GUID" für den Wert steht, den das Verfahren in der alten Installation hatte.
Mit einer Systemsuche habe ich den Wert in ein Property (z.B. "MYPROP") übertragen, mit dem sich dann weiter arbeiten lässt.
QUOTE
Wenn das ganze silent erfolgen soll, brauchst du dazu noch eine .iss Response-Datei, die du mitliefern musst.
Hatte für ich mich keine Vorteile, aber
QUOTE
Es gibt glaube ich auch einen Kommandozeilenparameter für stille Deinstallation (/u oder so, schau mal in der Hilfe).
Genau so ist es. Die genauen Parameter sind dann "-s -uninst"
In der CA (Typ "Starten einer ausführbaren Datei") sieht das dann so aus:
Quelle = "SystemFolder"
Ziel = "[MYPROP] -s -uninst"
Das ist dann zwar nicht komplett "silent" (es kommt moch eine Abfrage, ob man wirklich will und eine Endemeldung), aber das schadet nicht.

Besten Dank für den Schupps in die richtige Richtung


Holger.Winkelmann

Holger.Winkelmann
  • Members
  • 19 posts

Posted 02 November 2005 - 09:22

Jetzt muss doch noch einmal um weitere Hilfe bitten:
Ich habe das Ganze so implementiert, dass ich jetzt einen Text und eine CheckBox auf dem Standard-Dialog "ReadyToInstall" habe. Beim PushButton "InstallNew" habe ich als neues Ereignis "DoAction" angehängt und führe dort meine CA aus. Das klappt auch alles so weit recht gut, aber nun möchte ich noch verhindern, dass "InstallNew" freigegeben wird, wenn die Checkbox nicht angehakt ist (also keine Installation der neuen Version, solange die alte noch installiert ist). Wenn der Benutzer den Haken entfernt, soll der PushButton disabled werden (und entsprechend umgekehrt).
Wie kriege ich so etwas hin ?

Nochmals TIA

Holger

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 02 November 2005 - 11:22

Im Dialogeditor gibt es unter Behaviour einen Bereich für Events und Conditions. Dort kannst du den Button disablen. Auf dem Lizenz-Dialog wird das mit einem Radiobutton gemacht, aer ich glaube es sollte auch mit einer Checkbox funktionieren.

Holger.Winkelmann

Holger.Winkelmann
  • Members
  • 19 posts

Posted 02 November 2005 - 15:56

QUOTE
Auf dem Lizenz-Dialog wird das mit einem Radiobutton gemacht, aer ich glaube es sollte auch mit einer Checkbox funktionieren.
Der perfekte Tipp.
Jetzt läuft alles, wie es soll.

Many, many THX

bernard

bernard
  • Full Members
  • 127 posts

Posted 02 March 2006 - 09:30

QUOTE
Es gibt glaube ich auch einen Kommandozeilenparameter für stille Deinstallation (/u oder so, schau mal in der Hilfe).


Wie kann ich die stille Deinstallation ausführen?

Lese vom
HKLM\\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{guid}\UninstallSting
aus.

Holger:
QUOTE
Die genauen Parameter sind dann "-s -uninst"


Da editiere ich
MsiExec.exe /I{guid}
an
MsiExec.exe /x{guid} /q

Ist es richtig?

Habe getestet.
Es wird gelöscht, aber bin nicht sicher.

danke

MfG
bernard

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 02 March 2006 - 18:50

Ja, MsiExec.exe /x {guid} /q ist okay wenn das alte Setup mit Windows Installer (MSI) installiert wurde (bei Holger war das nicht der Fall, da war das alte ein InstalLScript-Setup). {guid} ist übrigens der ProductCode der alten Version. Wenn du den kennst brauchst du nicht in der Registry nachschauen. Wenn die neue Version allerdings auch ein MSI Setup ist, dann solltest du über die Upgrade tabelle gehen und nicht msiexec.exe per Custom Action aufrufen.