2009-08-21 12 views
2

Wir haben ein Visual Studio 2008, Setup und Deployment, Setup-Projekt, das minimale Dateien installiert und einige benutzerdefinierte Aktionen ausgeführt. Wir haben auch mehrere Merge-Module-Projekte, die das Setup-Projekt bereitstellt. Jedes Merge-Modul verfügt über einen Modul Retargetable Folder mit eindeutigen Unterordnern, in denen verschiedene Komponenten installiert sind.Merge Module verlassen Dateien während der Deinstallation

Das Problem besteht darin, dass während einer Deinstallation des Setup-Projekts Dateien, die vom Setup-Projekt bereitgestellt wurden, vollständig von der Festplatte entfernt wurden. aber Dateien, die durch die Merge-Module bereitgestellt wurden, werden nicht entfernt überhaupt.

Zusätzlich, wenn nach dem Deinstallieren von Dateien, die noch von der Merge-Modul eingesetzt wurden existieren auf der Festplatte, um das Setup-Projekt wieder Installation überschreibt nicht die Dateien durch das Merge-Modul zum Einsatz.

Wir müssen akzeptable Ergebnisse:

1) Machen Sie es sich so, dass das Merge-Modul bereitgestellt Dateien während der Deinstallation 2) Lassen Sie Dateien bereitgestellt durch das Merge-Modul entfernt werden während eines frisch überschrieben werden installieren

Irgendwelche Gedanken würden geschätzt werden!

Antwort

1

Dies ist vielleicht nicht die Antwort, die Sie erhofft haben, aber es ist ein Gedanke, der dich aus ...

Frage helfen könnten: Müssen Sie wirklich Module verwenden fusionieren? Die Idee von MSMs ist großartig, aber in der Praxis funktionieren sie nicht so gut, wie Sie es wünschen.

Stattdessen ist die Einbettung vollständiger MSIs oft sauberer, da (a) sie erfolgreich installiert und festgeschrieben werden können, bevor Ihre Installation beginnt, (b) sie die Kontrolle über ihre eigene Version behalten (damit Sie sie die Dateien im nächste Version), (c) Sie können sie (und alle ihre Dateien) bei der Deinstallation deinstallieren und mehr. Für die Microsoft-Bibliotheken, die sie als MSMS bereitstellen, gibt es immer eine MSI-Version von redistributable, die Sie stattdessen verwenden können.

Oder haben Sie die Mergemodule selbst/ves gemacht, für diese App? In diesem Fall wären sie besser als Komponenten in Ihrem MSI, da sie denselben Installations- und Deinstallationsvorgang wie der Rest ausführen würden. Und wenn Sie mehrere Apps haben, die dieselbe (n) Komponente (n) verwenden, können Sie ihnen die gleichen Komponenten-IDs geben und sie werden freigegeben (z. B. wenn Sie zwei Apps mit einer gemeinsam genutzten Komponente installiert haben und eine davon, die gemeinsam genutzten Komponenten, deinstallieren) bleibt so lange, wie die andere App installiert bleibt).

+0

wahr, mit verketteten MSIs ist eine gute Lösung ... wir haben zu diesem Zeitpunkt einfach viel in Merge-Module investiert. Wenn es schlimmer wird, werden wir wahrscheinlich diese Methode verwenden. – danlash

1

Ich bin in der Vergangenheit auf ein ähnliches Problem gestoßen, nämlich aufgrund von Problemeinträgen im Registrierungsschlüssel [HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDlls]. Sehen Sie nach, wenn eine der Dateien in Ihrem Mergemodul nach der Deinstallation dort aufgeführt wird. Die Referenzzählung ist möglicherweise deaktiviert, weshalb Windows Installer der Ansicht ist, dass die Dateien beibehalten werden sollten, da sie von einer anderen Anwendung verwendet werden.

Im Allgemeinen wird dies durch Ändern des Status 'Shared' der Komponente zwischen Setup-Builds oder durch Verwenden von MSIZAP (aka Windows Installer-Bereinigung) verursacht, die Refcounts beim Löschen eines Pakets nicht anpasst.

+0

Ich habe die Registrierung ausgecheckt. Keine unserer Dateien ist dort aufgeführt. Ich habe auch unsere Merge-Module überprüft und keine unserer Dateien sind als gemeinsam oder Legacy markiert. danke für den Vorschlag. – danlash

Verwandte Themen