Приложение связано с MSI - PullRequest
2 голосов
/ 29 июня 2009

Я использую VS2005.

После того, как я установил приложение, используя MSI. Каждый раз, когда это приложение загружается, оно пытается найти установку и снова устанавливает себя, если файл был изменен. Если я удалю MSI-файл, приложение не сможет даже загрузить.

Есть ли способ удалить эту ссылку между приложением и MSI?

Я уверен, что это где-то только флажок.

Спасибо!

Ответы [ 2 ]

1 голос
/ 30 июня 2009

Следует отметить, что MSI представляет собой механизм выпуска и развертывания - он не предназначен для интерактивного тестирования, когда вы устанавливаете MSI, а затем изменяете установленные файлы - как вы делаете во время разработки.

Вся технология предназначена для строгой установки содержимого файла MSI и для поддержки развернутой конфигурации и защиты ее от ручных или случайных изменений. Это может очень раздражать в системах, где ручные изменения выполняются как часть тестирования или разработки, но файл MSI фактически просто «выполняет свою работу».

Как говорит sacha, есть несколько способов отключить или обойти это поведение:

  • Использовать нерекламированные (обычные) ярлыки
  • Установить свойство DISABLEADVTSHORTCUTS
  • Запуск файла EXE, на который указывает ярлык напрямую (это полностью игнорирует MSI - и может использоваться для запуска приложения, если отсутствует исходный MSI)

Тогда есть несколько более сложных опций, которые на самом деле не рекомендуются. Например, вы можете определить все файлы, которые могут нуждаться в ручной настройке, и отключить режим восстановления специально для этих файлов. Обычно это делается путем установки пустого GUID для хост-компонента для файла или установки атрибута компонента «никогда не перезаписывать, если путь к ключу существует» ( msidbComponentAttributesNeverOverwrite ). Есть несколько других продвинутых настроек, но на самом деле ничего не рекомендуется.

Также обратите внимание, что не только объявленные ярлыки могут вызвать восстановление. Вызов объявленных COM-серверов или объявленных расширений файлов также может вызвать самовосстановление.

Если вы столкнулись с ситуацией, когда MSI продолжает запрашивать источник, просто удалите MSI из программы добавления / удаления, чтобы избавиться от регистрации программы в системе. Затем вы можете переустановить его с помощью только что созданного MSI.

1 голос
/ 30 июня 2009

Вы устанавливаете Advertised Shortcut , это означает, что при двойном щелчке по ярлыку для запуска приложения проверяется установщик Windows, чтобы убедиться, что все файлы, ключи реестра и т. Д., Которые должны быть установлены, установлены.

По какой-то причине установщик Windows обнаруживает, что ваша установка «повреждена», это может означать, что файл был изменен, удален, отсутствуют разделы реестра или что-то еще.

Если вы установите нерекламированный ярлык, вы остановите процесс восстановления. Однако лучшее решение - попытаться выяснить , почему пытается восстановить вашу установку. Как правило, это признак того, что у вас есть проблема с вашим приложением или проектом установки - любой «ключевой файл» в компоненте не может изменяться по умолчанию и будет «восстановлен», если он будет изменен. Вероятно, у вас нет других опций в Visual Studio, так как он довольно ограничен.

Я бы настоятельно рекомендовал подобрать копию Подробное руководство по установщику Windows , в котором подробно объясняются все концепции установщика Windows с использованием VS2005 и показано, как обойти некоторые ограничения путем редактирования MSI. с косаткой.

Редактировать: (Посмотрев в книге для вас ...) вам, вероятно, нужно добавить DISABLEADVTSHORTCUTS в таблицу Property со значением 1. Я не использую VS, поэтому я не могу сказать, есть ли флажок или нет.

Вы также можете «кэшировать» MSI в папке Windows, это означает, что вы все еще можете восстановить, даже если оригинальный MSI удален. Опять же, не знаете, как это сделать с VS.

...