Visual Studio Setup Project - условно установить файл - PullRequest
2 голосов
/ 17 декабря 2010

У меня есть проект установки VS 2008.Я хочу установить файл XML, только если он не существует в целевой системе.Программа установки перезаписывает правила для файлов без версий, гарантируя, что файл никогда не будет перезаписан, если он не был изменен в целевой системе .Но я хочу, чтобы никогда не перезаписывал файл.Существует свойство Condition , которое можно установить для файла в свойствах установщика Visual Studio для файла.Каков правильный синтаксис для свойства Condition , чтобы проверить наличие файла и установить его, только если его там нет?

Ответы [ 2 ]

2 голосов
/ 17 декабря 2010

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

0 голосов
/ 22 декабря 2010

Я смог использовать условие запуска, чтобы установить свойство, и использовать его для условной установки файла, поэтому я отмечу 'heavyyd' как правильный ответ.Однако не удалось эффективно использовать поиск файлов, как было предложено (см. Комментарии к ответу).Вместо этого я использовал поиск установщика Windows (один из трех типов поиска, доступных в проекте установки VS 2008) с помощью MSI ComponentID, следующим образом (я нашел метод здесь ):

  1. Продукт 1 установлен и имеет файл с именем MyFile.txt.
  2. Вы используете ORCA (из SDK установщика Windows), чтобы просмотреть таблицу файлов и найти строку, которая представляет MyFile.txt.
  3. Вы получаете значение столбца Component_, а затем открываете таблицу компонентов.
  4. В таблице компонентов вы найдете строку, имеющую значение Component_ в столбце компонентов, и получите ComponentID.Скопируйте это значение в буфер обмена.Закройте ORCA.
  5. В своем проекте установки откройте редактор условий запуска и добавьте поиск компонентов установщика Windows.Для свойства ComponentID нового поиска вставьте ComponentID.
  6. Скопируйте свойство Property.Это должно быть что-то вроде COMPONENTEXISTS1.
  7. Откройте редактор файловой системы и выберите папку приложения, затем выберите файл, который вы хотите установить по условию.
  8. Измените свойство Condition на COMPONENTEXISTS1 = FALSE.
  9. Установите для свойства Transitive значение true, если вы хотите, чтобы условие оценивалось при каждом запуске установщика (а не только в первый раз).
  10. Теперь MyFile.txt будет установлен, только еслиего там еще нет.

Существует одна оговорка с этой техникой: Исправление установки приведет к удалению файла, даже если файл помечен как постоянный! Не хорошо.Я решил эту проблему, добавив некоторые пользовательские действия (вызывая файлы vbscript) для резервного копирования и восстановления моего файла.

Какая проблема для простого выполнения такой простой задачи: установить файл один раз при первоначальной установке, а затем никогда большепереписать его.

Если у кого-то есть лучшее решение, я весь в ушах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...