Wix - не удалять прикрепленную панель задач при установке
Во время установки или основного обновления, если пользователь привязал приложение к своей панели задач, после завершения установки ярлык панели задач удаляется из \AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar и значок пустого файла (см. Ссылку на изображение ниже) оставлены на своем месте. Щелчок по значку подскажет пользователю удалить, поскольку он не нацелен на что-либо.
http://i.stack.imgur.com/kz1zW.png
Я хотел бы сделать так, чтобы ярлык панели задач вообще не удалялся при установке или запуске основного обновления. Мы выпускаем обновления на еженедельной основе, и это может расстраивать, если ярлык панели задач ломается во время каждого обновления.
Возможно ли это? Я читал об изменении значения для RemoveExistingProducts (т.е. Смены с InstallValidate на InstallFinalize), но я не уверен, что это будет жизнеспособно.
Спасибо.
Ответы
Ответ 1
Мы столкнулись с этой проблемой, и наше исследование показывает, что msiexec.exe явно удаляет закрепленный элемент при удалении соответствующего ярлыка при удалении или основном обновлении.
В качестве обходного пути мы сделали следующее:
-
Отключено стандартное действие RemoveShortcuts
с использованием следующего кода WiX:
<InstallExecuteSequence>
<RemoveShortcuts>0</RemoveShortcuts>
</InstallExecuteSequence>
-
Добавлена явная запись <DeleteFile>
для каждого ярлыка, который мы устанавливаем. Например:
<DirectoryRef Id="ProgramMenuDir">
<Component Id="Component" Guid="B7469BFC-BF2A-4AF7-9DF5-3458BB485F18">
<Shortcut Id="Shortcut" Name="My Supper App"
Directory="ProgramMenuDir" Target='MyApp.exe' />
<RemoveFile Id="RemoveShortcut"
Name="My Supper App.lnk"
On="uninstall" />
</Component>
</DirectoryRef>
Кажется, он работает нормально.
Ответ 2
Вы можете избежать пользовательских действий, отключив стандартные RemoveShortcuts следующим образом:
<InstallExecuteSequence>
<RemoveShortcuts>Installed AND NOT UPGRADINGPRODUCTCODE</RemoveShortcuts>
</InstallExecuteSequence>
Отключает удаление ярлыков, кроме удаления.
Ответ 3
Я не уверен, что вы можете сделать, чтобы это не произошло, но это может помочь вам, по крайней мере, заменить его. Этот метод использует logon script, но вы должны иметь возможность реализовать это с помощью wix
Значки, прикрепленные к панели задач Windows 7, хранятся в следующих местах
Файловая система:% APPDATA%\Microsoft\Internet Explorer\Быстрый запуск\Пользователь Возлагали \TaskBar
Реестр: [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband] Чтобы развернуть его, вы можете выполнить следующие шаги:
- Настроить элементы, закрепленные в системе Windows 7, в качестве эталонного компьютера.
-
Экспорт ключа Reigstry в файл pinned.reg: [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband] И скопируйте элементы в "% APPDATA%\Microsoft\Internet Explorer\Quick Запустите \User Pinned\TaskBar" в общую папку.
-
Создайте logon script, чтобы развернуть разделы реестра и скопировать соответствующие файлы. Обратите внимание, что Msgstr "% APPDATA%\Microsoft\Internet Explorer\Быстрый запуск\Пользователь закреплен" папка создается только после того, как пользователь привязал значок к панели задач. При входе в систему script вам нужно будет создать "% APPDATA%\Microsoft\Internet Explorer\Быстрый запуск\Пользователь Pinned\TaskBar", если он не существует.
Источник: http://social.technet.microsoft.com/Forums/windowsserver/en-US/d172b4de-be7c-4149-8958-bebfe042ade1/forum-faq-how-to-deploy-windows-7-taskbar-pinned-icons-by-group-policy?forum=winserverGP