2016-04-04 9 views
0

ich Installer mit Installshield 2012 erstellt habe, die im Grunde ein MSI setup.exemsi Deinstallation entfernt nicht Programme hinzufügen Eintrag entfernen und verpacken selbst

verpackt in ist Das Problem ist, dass wenn ich versuche, es zu entfernen (mit msiexec /x {productcode} oder von "uninstall" in Add/Remove programs (appwiz.cpl)) der Prozess sieht gut aus und die Deinstallation ist mit Erfolg gemäß ausführlichen Protokoll abgeschlossen, aber Paket wird nicht entfernt (msiexec /x {productcode} kann wieder gestartet werden und ruft msiexec, die Deinstallation zeigt) und ich habe noch Eintrag in Add-Remove-Programme. Dies wiederholt sich mehrmals.

Die seltsame Sache ist, dass, wenn ich das Installationsprogramm im Wartungsmodus ("Ändern" -Taste in ARP) oder starten Sie das Installationsprogramm starten und wählen Sie "Entfernen" es funktioniert wie erwartet.

Höchstwahrscheinlich trat dieses Verhalten nach dem Hinzufügen eines verketteten Pakets auf. Die Installationsbedingung dafür lautet:

Not Installed AND &FeatureName=3 

Die Deinstallationsbedingung ist immer auf "false" gesetzt (der Fall muss bestehen bleiben). Aber ich entferne dieses Produkt mit seinem eigenen MSI. Um es jedoch klar zu machen, habe ich versucht, die Deinstallationsbedingung zu entfernen oder es auf REMOVE~="ALL" auf diesem verketteten Paket zu setzen, und es hat nicht geholfen. Während des Experimentierens habe ich msi unter c:\Windows\installer vor dem Entfernen bearbeitet. Das ausführliche Protokoll der Deinstallation ist ungefähr 10 MB groß und es besagt, dass die Deinstallation erfolgreich ist, daher ist es ziemlich schwer zu untersuchen.

1) Ich würde mich über Ratschläge freuen, wie es besser wäre, das zu untersuchen.

2) Und wie funktioniert das Entfernen im Wartungsmodus, aber nicht in der Deinstallation?

3) Wenn das Problem immer noch in verketteten MSI ist, gibt es eine Möglichkeit, es zu verlassen und MSI richtig entfernt zu haben?

+0

Ich bin mir ziemlich sicher, dass es ein bestätigter InstallShield Bug war, aber ich kann die Korrespondenz jetzt nicht finden. Ich habe eine benutzerdefinierte Aktion hinzugefügt, die den Eintrag zum Hinzufügen/Entfernen aus der Registrierung löscht, aber ich bin mir sicher, dass es eine bessere Lösung gibt. – yossiz74

+0

Entfernung hinzufügen-entfernen-Eintrag ist keine Option, weil das Paket selbst im Repository bleibt :(Das kann ein Problem sein, sagen wir Upgrades mindestens. Und meine Installation ist um 1 GB .. so in einem System zu verlassen ist mindestens "nicht -nice ".. – s1me0ne

+0

Ich bin in Ordnung mit dem Entfernen von Chained-Paket mit MSI zuerst und dann Beseitigung der Haupt-MSI, aber ich kann nicht verstehen, warum es nur im Wartungsmodus für die Haupt-MSI funktioniert – s1me0ne

Antwort

0

Das Problem war, dass ein einzelnes Feature hatte die Ebene "0", aber bei der Installation wurde geändert mit Konditionstabelle auf entsprechende Ebene (1 oder 300 je nach Bedingung) aber bei der Deinstallation blieb es als Ebene "0" Das Problem ist diese Funktion des Installateurs für Feature-Zustand zu ändern „0“, so auch für REMOVE = ALL diese Funktion Zustand nicht, es war keine Funktionen mit Level verarbeiten ich habe Bedingung Tabelleneintrag Einstellung der Leistungsstufe festsetzt atered

Feature: featurename; Installed: Local; Request: None; Action: None 

um hinzugefügt 300 mit Zustand REMOVE ~ = "ALL".

Verwandte Themen