einen Anwendungszugfestigkeit Deinstallation freigegebene Assembly WinSxS in einem schlechten Zustand verlassen

StackOverflow https://stackoverflow.com/questions/1425411

  •  07-07-2019
  •  | 
  •  

Frage

Ich habe Probleme eine gemeinsame win32 SxS Montage der Deinstallation mit Wix3 auf WinXP. Meine Wix-Datei wie die ziemlich sieht in http://n2.nabble.com/Tutorial-How-to-install-files-into-WinSxS-td841475.html .

Das Problem ist, wenn ein Modul aus der Anordnung in Gebrauch ist, vervollständigt das Deinstallationsprogramm mit einem Erfolg Fehlercode lässt aber die Montage in einem gebrochenen Zustand: das Manifest und Sicherheitskatalog gelöscht wurden, aber die Montage Verzeichnis existiert nach wie vor mit meinem dlls darin. Die DLLs überleben Neustarts, so zum Löschen nicht in irgendeiner Weise gekennzeichnet. Es gibt keine offensichtlichen Fehler in der MSI-Protokolldatei.

Wenn ich versuche, das Paket wieder zu installieren, überspringt er die Installation der Baugruppe. Die Komponenten sind nicht mehr registriert, so kann ich nicht Installer wieder zu deinstallieren, um zu versuchen zu bekommen. Im Folgenden wird im msi Protokoll auf nachfolgende Installationen gezeigt:

  

MSI (c) (98:44) [11: 46: 56: 263]: Einbau von Baugruppenkomponente Skipping: {26A273E7-7F9A-4F77-9FA8-5E413A155BEC} Da die Montage bereits existiert

Ich kann nicht einen Weg zu bringen, die SxS wieder in einen guten Zustand kurz manuell zu löschen meine Assembly-Verzeichnis, das an dieser Stelle finden wird nicht mehr von XP-System geschützt, wiederherstellen.

Während meine eigentlichen Installer viel komplizierter ist, ich in der Lage gewesen, dies mit einem sehr einfachen Installationsprogramm zu reproduzieren, die ein einzelnes Merkmal, das eine einzelne Komponente hat. Diese Komponente enthält eine DLL, ein Manifest und einen Sicherheitskatalog. Die DLLs -Element hat KeyPath, Montage und AssemblyManifest Attribute gesetzt. Einmal installiert, kann ich einen Prozess simulieren die Montage Laden durch die DLL in MSVS öffnen.

Gibt es eine zusätzliche Aktion, die ich bei der Deinstallation werden aufrufen sollte, diese Situation zu erkennen und zu verhindern? Alternativ gibt es eine Möglichkeit, den Installationsvorgang zu zwingen, durchgeführt werden, selbst wenn die DLLs bereits in WinSxS existieren?

Etwas verwandt, ich habe auch ein Problem, wenn ich versuchen, das Paket zu aktualisieren, die die Montage, wenn die Montage nicht installiert zu ändern. Der Installateur entscheidet, dass es nicht um die Baugruppe installieren muss (da es sich nicht geändert hat), aber dann, wenn die SxsUninstallCA läuft, geht es und entfernt die Montage. Von Installer Sicht wird die Komponente noch installiert, aber die Dateien sind verschwunden.

War es hilfreich?

Lösung

Ich arbeite an etwas, was ich glaube, ich werde in das gleiche Problem laufen.

Meine Vermutung ist an dieser Stelle, dass ich dies mit einem wenig mojo vom HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations regkey lösen müsste, und ein möglicherweise etwas Dateiberechtigungen Schmatzen (wenn die Dateien noch gesperrt wurden).

Was natürlich, einen Neustart erfordert.

Natürlich in Ihrem Installateur, können Sie auf das Vorhandensein des Schlüssels überprüfen und blockieren auf installieren, bis sie weg sind. (Dh "Sie müssen neu starten").

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top