Неверный параметр при нажатии закрепленного элемента в Windows 7 после обновления приложения

У меня следующая ситуация:

  1. Установил свое приложение с помощью обычного .msi
  2. Запустите приложение из меню «Пуск»
  3. Щелкните правой кнопкой мыши значок на панели задач и закрепите его.

Теперь я могу использовать закрепленный элемент/ярлык для запуска своего приложения, но после того, как я обновлю свое приложение с помощью другого файла .msi, щелчок по закрепленному элементу показывает эту ошибку:

"Проблема с ярлыком" - Неверный параметр.

Я проверил ярлык и, насколько я вижу, он указывает на тот же каталог/файл, что и предыдущая версия. (в новой версии те же файлы/местоположение). Я предполагаю, что происходит какая-то магия версий/программных файлов, которая вызывает эту проблему, но не нашел никакой хорошей информации в сети.

Еще немного информации:

  1. Приложение написано на C# .NET 3.5 SP1.
  2. MSI создается с помощью проекта установки в Visual Studio 2008 SP1.
  3. Я использую специальный инструмент для сборки, чтобы интегрировать сборку msi и установить для ProductCode и PackageCode новый идентификатор GUID для каждой версии.
  4. В остальном обновление работает нормально. Старая версия удалена, новая установлена ​​корректно.

Кто-нибудь понял?


person Patrick Klug    schedule 01.02.2010    source источник
comment
@tommieb75: нет, это вопрос по программированию. Создание msi-файлов — задача разработчика.   -  person Dirk Vollmar    schedule 01.02.2010
comment
Патрик, это приложение, которое вы создаете, или что-то, что вы купили/загрузили? Если первое, то с помощью каких технологий вы разрабатывали приложение? (версия VS, язык, целевая платформа .NET и т. д.)   -  person Jay    schedule 01.02.2010
comment
@Jay: спасибо, я добавил еще немного информации.   -  person Patrick Klug    schedule 01.02.2010


Ответы (2)


Я предполагаю, что идентификатор приложения по умолчанию меняется. Если вы собираетесь регулярно обновлять это приложение с помощью msi, как только оно появится «в дикой природе», установите свой собственный идентификатор приложения. Если это одноразовая вещь, просто открепите и закрепите ее снова и продолжайте как обычно.

Установить идентификатор приложения легко, если вы используете пакет кода Windows API. Ты?

Катя

person Kate Gregory    schedule 01.02.2010
comment
Спасибо! Я не знал, что мне нужно установить идентификатор приложения - попробую. - person Patrick Klug; 02.02.2010
comment
Спасибо (+1), у меня была такая же проблема, и установка идентификатора приложения решает ее. - person Marc; 04.08.2010
comment
Разве этот идентификатор приложения не должен быть установлен как-то в манифесте сборки? Теперь у меня есть ситуация, когда у меня есть ярлык на панели задач, и после нажатия на ярлык он открывается в новом элементе на панели задач. Это должно быть связано с тем, что идентификатор приложения установлен в Main(), но недоступен, когда программа не запущена. - person Marc; 07.09.2010
comment
У кого-нибудь есть идеи, как это сделать без Windows API Code Pack? Кажется, что он больше не используется, особенно в Windows 10. После нескольких часов гугления может показаться, что не так много простых ресурсов о том, как это сделать. - person amartin94; 22.08.2018
comment
это лучше задать как отдельный вопрос с тегом Windows 10. - person Kate Gregory; 22.08.2018

См. эту статью о ProductCode и PackageCode: http://www.simple-talk.com/dotnet/visual-studio/updates-to-setup-projects/

В нем объясняется, как ProductCode и PackageCode взаимодействуют во время установки, и как настроить проект установки для правильного применения MSI-файла в качестве обновления.

person Jay    schedule 01.02.2010
comment
Отличная статья, но никак не связанная с вопросом оператора. - person Marc; 07.09.2010