Недавно мы добавили функцию в наш установщик, которая требовала, чтобы пара ярлыков на рабочем столе была слегка переименована (к имени был добавлен номер версии).У меня проблемы с тем, чтобы программа установки сменила старые ярлыки на новые.Когда первоначально сообщалось о проблеме, новые ярлыки устанавливались, но старые не удалялись.После работы над проблемой у меня возникла смешанная проблема: один из старых ярлыков удаляется (пока что хорошо), а другой - нет (не очень хорошо), и в обоих случаях новые ярлыкине устанавливаются (даже хуже).Я попытался изменить GUID для каждого из компонентов, которые устанавливают эти ярлыки, и я даже однажды пытался изменить свойство ProductCode в каждом из модулей слияния, отвечающих за ярлыки, но, похоже, ничего не получило желаемогоповедение (по старому и по старому при обновлении).
С повторным GUID, соответствующим компонентам, вот что показывает файл журнала для состояний установки (чтобы помочь с отладкой, я 'мы слегка переименовали компоненты, чтобы я мог определить, какие из старой сборки, а какие из новой):
...
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
...
Как вы видите в журнале, новые ярлыки должны появиться воба случая, но это не так.И я затрудняюсь объяснить, почему установщик делает разные вещи с двумя старыми ярлыками.
К вашему сведению: моя среда разработки - Wise Installation Studio 7.0.
Редактировать: Я сбросил все до того, что было ранее, за исключением текущего ProductVersion и ProductCode.После этого установщик оставляет старые ярлыки установленными, но не устанавливает новые.(Это поведение отличается от того, о чем первоначально сообщалось, и которое мне удалось воспроизвести, т. Е. Старые ярлыки были оставлены установленными, а также были установлены новые (переименованные).) После повторного НАПРАВЛЕНИЯ двух соответствующих компонентов программа установкиудаляет старые ярлыки, но не устанавливает новые.(Это то, что происходит в XP.)
Соответствующие строки в журнале после повторного указания компонентов выглядят следующим образом:
...
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
...
Первые две строки указывают на то, чтоустанавливаются новые ярлыки, а их нет.После восстановления после установки будут установлены новые ярлыки.
Когда запускается копия программы установки, в которой исходная проблема (как старые, так и новые ярлыки существуют после обновления), запускается действие, о котором сообщалось в двух последнихстроки выше имеют значение Null вместо Absent.
Edit 2: В настоящее время поведение старых ярлыков остается установленным, а новые не устанавливаются.Когда я переопределяю их компоненты, старые ярлыки удаляются, а новые еще не устанавливаются.Я попробовал решения Кристофера Пейнтера, но никуда не делся.(См. Мой комментарий к этому ответу.) Должен быть способ установить новые версии ярлыков вместо старых неверсированных.Кто-нибудь может предложить решение, которое работает?
Редактировать 3: Оказывается, новое поведение, при котором новые ярлыки не были установлены, было связано с ошибкой, котораяЯ сделал в получении исходных файлов, и те, которые вошли в установщик, были не так актуальны, как те, которые должны были быть заменены.Как только самые последние файлы были скомпилированы в программу установки, я смог получить желаемые результаты (старые ярлыки, новые).(См. Мой ответ для получения дополнительной информации.)