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

Files werden bei Deinstallation nicht entfernt


6 replies to this topic

Tschaen

Tschaen
  • Full Members
  • 27 posts

Posted 12 November 2012 - 16:52

Hallo

Ich habe das Problem das nicht alle Dll-Files entfernt werden bei der Deinstallation.

Das Setup beinhalten nur zwei Components.

Component 1 mit der Exe und dem Shortcut und Component 2 mit den Dlls.

Ich kann zwar das Löschen der Files über die Remove-Table erzwingen, möchte aber gerne wissen warum dies nicht einfach so geht.

Das Setup müsste doch alle nicht veränderte Files die im Projekt beinhaltet sind löschen.

tschaen

Spitfyr

Spitfyr
  • Full Members
  • 162 posts

Posted 13 November 2012 - 11:03

Hallo,
wie sind bei der Componente die Eigenschaften gesetzt. Was steht z.B. bei "shared" und "Permanent"?

Bei "Shared" verwendet Windows z.B. einen Dateizähler und die Datei wird später nur gelöscht wenn der Zähler auf 0 steht.

Sind das System DLLs für die es evtl. schon einen "Shared" Eintrag in der Registry gibt?

Ggf. mal auch ins MSI Logfile schauen was da bzgl. der Dateien bei der Deinstallation steht.


Grüße
spitfyr

Tschaen

Tschaen
  • Full Members
  • 27 posts

Posted 13 November 2012 - 13:13

Shared und Permanent habe ich jetzt beide auf No gesetzt.

Jedoch werden weiterhin nicht alle dlls entfernt.

Das interessante ist, dass wenn ich den Pfad unter ProgramFilesDir ändere, also das Projekt in ein anderes Zielverzeichnis installiere, werden alle Files deinstalliert.

Muss ein Zufall sein, kann mir nicht vorstellen das der Verzeichnisname eine Rolle spielt bei der Deinstallation.

Im MSI Logfile kommt bei allen nicht entfernten Dlls diese Meldung:
QUOTE
WIN64DUALFOLDERS: Substitution in 'C:\Program Files (x86)\Company\Product\System.Xaml.dll' folder had been blocked by the 1 mask argument (the folder pair's iSwapAttrib member = 0).


ali

ali
  • Full Members
  • 1,008 posts

Posted 13 November 2012 - 14:33

führe mal eine MSI-Valiierung durch, da wirst du, so denke ich die Info bekommen, das jede DLL in eine eigen Komponente gehört und Key der Komponente sein muss.

QUOTE
Bei "Shared" verwendet Windows z.B. einen Dateizähler und die Datei wird später nur gelöscht wenn der Zähler auf 0 steht.


Ich meine das ab MSI Version 2 der Windows Installer entscheidet wann er den Zähler setzte. zb. ab der 2. Komponente die ins selbe Zielverzeichnis installiert wird. Wenn die oben genannte Option auf Yes gesetzt wird, wir das Zählen erzwungen.

Ich denke aber, auch das dein Testsystem nicht mehr ganz sauber ist. Schau doch mal unter HKLM\Software\Microsoft\Windows\SharedDlls, ob du dort deine DLLs findest.

Du solltest aber darauf achten, das du für jede Exe,DLL,OCX eine eigene Komponente erzeugst und dein File als Schlüssel setzt. Wenn du deine zu installierenden Komponenten über den Bereich Files and Folders einbindest, werden die Komponente und Schlüssel automatisch erzeugt.

Tschaen

Tschaen
  • Full Members
  • 27 posts

Posted 13 November 2012 - 15:59

Sieht so aus als wären es mein Testsysteme.

Vielen Dank.

Habe in der Registry alle SharedDLLs Einträge meiner Dlls gelöscht.
Und so wie es aussieht funktioniert jetzt auch die Deinstallation.

Ich habe jetzt trotzdem alle Dlls in einer Komponente, da ich diese über Dynamic File Link einbinde.
Und diese Komponente Shared = No.

Wenn ich bei der Komponente Shared = Yes setze, werden diese in die Registry eingetragen und können so je nach Konstellation später Installation/Deinstallationen beeinträchtigen?

Spitfyr

Spitfyr
  • Full Members
  • 162 posts

Posted 13 November 2012 - 16:33

QUOTE
Wenn ich bei der Komponente Shared = Yes setze, werden diese in die Registry eingetragen und können so je nach Konstellation später Installation/Deinstallationen beeinträchtigen?

Man setzt "Shared=Yes" nur, wenn diese Dateien auch von anderen Programmen verwendet werden! Man überlässt es also dem Windowsinstaller festzustellen ob diese Datien noch benötigt werden.
Insofern "beeinträchtigt" das nicht die Deinstallation. Es ist ein Feature des Windowsinstallers welches man nutzen will/kann.

Edited by Spitfyr, 13 November 2012 - 16:37.


ali

ali
  • Full Members
  • 1,008 posts

Posted 13 November 2012 - 17:09

Hi,
ich setze Shared nur auf yes, wenn ich vorab weiß, das ich mit einer 2. Anwendung gemeinsam Komponenten benutzen muss. z.B. wenn ich mit mehreren Anwendungen eine gemeinsame Grundarchitektur verwende, die ich dann unter "CommonFiles" ablege. Ansonsten "No", da das pauschale Erzwingen des Zählers nur die Registry zumüllen würde.

Kennst du diesen Beitrag:
Dynamic File Linking

Edited by ali, 13 November 2012 - 17:15.