Kürzlich haben wir unserem Installer eine Funktion hinzugefügt, die einige Desktop-Shortcuts benötigt, die leicht umbenannt werden müssen (die Versionsnummer wurde dem Namen hinzugefügt). Ich habe Probleme, das Installationsprogramm dazu zu bringen, die alten Verknüpfungen durch die neuen zu ersetzen. Als das Problem anfänglich gemeldet wurde, wurden die neuen Verknüpfungen installiert, aber die alten wurden nicht entfernt. Nachdem ich an dem Problem gearbeitet habe, habe ich ein gemischtes Problem: Einer der alten Verknüpfungen wird entfernt (so weit, so gut), aber der andere ist nicht (nicht so gut), und in beiden Fällen sind die neuen Verknüpfungen werden nicht installiert (noch schlimmer). Ich habe versucht, die GUID für jede der Komponenten, die diese Verknüpfungen installieren, zu ändern, und ich habe sogar einmal versucht, die ProductCode-Eigenschaft in jedem der für die Verknüpfungen zuständigen Merge-Module zu ändern, aber nichts scheint das gewünschte zu bekommen Verhalten (mit dem alten und mit dem neuen beim Upgrade).Wie erzwingen Windows Installer, eine Verknüpfung durch eine umbenannte ersetzen?
Mit nur die relevanten Komponenten re-GUIDed, hier ist, was die Protokolldatei für die Installation zeigt (um mit dem Debuggen zu helfen, habe ich die Komponenten leicht umbenannt, so dass ich sagen kann, welche aus dem alten Build sind und welche von der neu):
...
MSI (s) (E0:70) [16:49:21:921]: Component: DesktopFolderX.04E48C43_FFCB_42AC_AC59_1D96BEC85C17; Installed: Absent; Request: Local; Action: Local
...
MSI (s) (E0:70) [16:49:21:921]: Component: DesktopFolderX.25696C3E_819B_4675_BEE2_C36D2B5CB521; Installed: Absent; Request: Local; Action: Local
...
MSI (s) (E0:C0) [17:02:18:390]: Component: DesktopFolder.25696C3E_819B_4675_BEE2_C36D2B5CB521; Installed: Local; Request: Absent; Action: Absent
...
MSI (s) (E0:C0) [17:02:18:390]: Component: DesktopFolder.04E48C43_FFCB_42AC_AC59_1D96BEC85C17; Installed: Local; Request: Absent; Action: Null
...
Wie Sie im Protokoll sehen können, sollten die neuen Verknüpfungen in beiden Fällen gehen in, aber sie sind es nicht. Und ich kann nicht erklären, warum der Installer mit den beiden alten Abkürzungen verschiedene Dinge macht.
FYI: Meine Entwicklungsumgebung ist Wise Installation Studio 7.0.
Bearbeiten: Ich habe alles zurückgesetzt, was es zuvor war, mit Ausnahme der aktuellen ProductVersion und ProductCode. Nachdem dies geschehen ist, lässt das Installationsprogramm die alten Verknüpfungen installiert, installiert aber nicht die neuen. (Dies ist ein anderes Verhalten als das, was ursprünglich gemeldet wurde und das ich kopieren konnte, dh die alten Verknüpfungen wurden installiert und die neuen (umbenannten) wurden ebenfalls installiert.) Nach der erneuten GUID der beiden relevanten Komponenten, dem Installer entfernt die alten Verknüpfungen, installiert aber die neuen nicht. (Dies ist, was auf XP geschieht.)
die entsprechenden Zeilen im Protokoll nach der erneuten Führung der Komponenten sind wie folgt:
...
MSI (s) (80:EC) [10:48:31:091]: Component: DesktopFolder.25696C3E_819B_4675_BEE2_C36D2B5CB521; Installed: Absent; Request: Local; Action: Local
...
MSI (s) (80:EC) [10:48:31:091]: Component: DesktopFolder.04E48C43_FFCB_42AC_AC59_1D96BEC85C17; Installed: Absent; Request: Local; Action: Local
...
MSI (s) (80:0C) [11:04:22:882]: Component: DesktopFolder.25696C3E_819B_4675_BEE2_C36D2B5CB521; Installed: Local; Request: Absent; Action: Absent
...
MSI (s) (80:0C) [11:04:22:882]: Component: DesktopFolder.04E48C43_FFCB_42AC_AC59_1D96BEC85C17; Installed: Local; Request: Absent; Action: Absent
...
Die ersten beiden Zeilen zu zeigen scheinen, dass die neuen Verknüpfungen zu sein installiert, und doch sind sie nicht. Eine Reparatur danach installiert die neuen Verknüpfungen.
Wenn die Kopie des Installationsprogramms ausgeführt wird, in dem das ursprüngliche Problem (alte und neue Verknüpfungen sind nach einem Upgrade vorhanden) doppelt ausgeführt werden kann, wird in den letzten beiden Zeilen die Aktion Null statt Abwesend gemeldet.
Bearbeiten 2: Das aktuelle Verhalten ist, dass die alten Verknüpfungen installiert bleiben, und die neuen nicht installiert sind. Wenn ich ihre Komponenten neu GUID, werden die alten Verknüpfungen entfernt, und die neuen werden immer noch nicht installiert. Ich habe die Lösungen von Christopher Painter ausprobiert, aber keiner von beiden ging irgendwo hin. (Siehe meinen Kommentar zu dieser Antwort.) Es muss eine Möglichkeit geben, die neuen versionierten Shortcuts anstelle der alten versionslosen Shortcuts zu installieren. Gibt es jemanden da draußen, der eine Lösung anbietet, die funktioniert?
Bearbeiten 3: Wie sich herausstellt, war das neue Verhalten, bei dem die neuen Verknüpfungen nicht installiert wurden, auf einen Fehler zurückzuführen, den ich beim Abrufen der Quelldateien gemacht hatte so aktuell wie die, die ersetzt werden sollten. Sobald die aktuellsten Dateien in das Installationsprogramm kompiliert wurden, konnte ich die gewünschten Ergebnisse erhalten (alte Verknüpfungen, neue Verknüpfungen). (Siehe meine Antwort für weitere Informationen.)
Neuere Windows-Versionen (Vista und höher) verwenden einen Shortcut-Cache. Wenn Sie also versuchen, die Shortcut-Eigenschaften (Name, Symbol usw.) zu ändern, verwendet Windows immer noch die aus dem Cache. Ich bin mir nicht sicher, ob dies für Sie der Fall ist, aber Sie können versuchen, den Computer neu zu starten, nachdem die ursprüngliche Version entfernt wurde. –