2017-02-14 5 views
0

Ich installiere Visual C++ Redistributable 2013 als Voraussetzung (wenn es nicht installiert ist) über mein Installationsprogramm. Aber manchmal ist bereits installiert VC++ beschädigt, dann funktioniert mein Installer nicht, weil ich DLL-Funktionen in CustomAction aufgerufen habe.Wie überprüft man, ob das installierte Produkt im korrupten Zustand ist?

Also meine Frage: Gibt es eine Möglichkeit zu finden, ob die installierten VC++ Redistributables beschädigt ist oder nicht?

Antwort

1

Gesundheitschecks im Allgemeinen sind ein ziemlich schwieriges Thema. Für in Windows integrierte Dateien gibt es Tools wie SFC, aber das gilt nicht für andere installierte Pakete. Bei MSI-Paketen können Sie auswählen, ob eine Reparatur ausgeführt werden soll. In einigen Fällen wird Windows dies automatisch tun. Dieses Thema wird allgemein Resiliency genannt. Aber es sei denn, die automatische oder manuelle Reparatur behebt die Probleme, die Sie in der freien Wildbahn haben.

Die Frage wird also, welche Art von Problemen Sie tatsächlich begegnen, mit welcher Häufigkeit, was ihre Behebung ist und welche Probleme durch den Versuch, sie zu beheben, verursacht werden können. Wenn es ausreicht, eine manuelle Reparatur der VC++ - Rediste aufzurufen, ist dies relativ einfach zu implementieren. Wenn eine vollständige Deinstallation und Neuinstallation erforderlich ist, ist das viel invasiver; Die Idee, diesen Teil einer Installation zu machen, reibt mich in die falsche Richtung. Wenn Sie dies nur in sehr spezifischen Situationen tun müssen, kann es darauf ankommen, wie gut Sie diese Situationen identifizieren können.

Wenn Ihr Fokus sicherstellt, dass Ihre Installation erfolgreich ist, können Sie Ihre benutzerdefinierten Aktionsdlls möglicherweise statisch verknüpfen, so dass sie nicht mehr vom Status des VC++ - Pakets abhängen. Dies wird Ihrer Anwendung nicht sehr helfen, wenn die Anwendung auch vom VC++ - Paket abhängt. Vielleicht kann eine privatisierte Kopie der VC++ - DLLs das adressieren (wenn die Version 2013 dies unterstützt - ich vergesse), auf Kosten von mehr Schwierigkeiten bei der Wartung Ihrer Kopie der VC++ - DLLs im Falle von Sicherheitsupdates.

Aber wieder hängt alles davon ab, welche Art von Problemen auftreten, ob sie häufig genug sind, um sie zu adressieren, und ob die Heilung schlimmer ist als die Krankheit.

Verwandte Themen