Я смог использовать условие запуска, чтобы установить свойство, и использовать его для условной установки файла, поэтому я отмечу 'heavyyd' как правильный ответ.Однако не удалось эффективно использовать поиск файлов, как было предложено (см. Комментарии к ответу).Вместо этого я использовал поиск установщика Windows (один из трех типов поиска, доступных в проекте установки VS 2008) с помощью MSI ComponentID, следующим образом (я нашел метод здесь ):
- Продукт 1 установлен и имеет файл с именем MyFile.txt.
- Вы используете ORCA (из SDK установщика Windows), чтобы просмотреть таблицу файлов и найти строку, которая представляет MyFile.txt.
- Вы получаете значение столбца Component_, а затем открываете таблицу компонентов.
- В таблице компонентов вы найдете строку, имеющую значение Component_ в столбце компонентов, и получите ComponentID.Скопируйте это значение в буфер обмена.Закройте ORCA.
- В своем проекте установки откройте редактор условий запуска и добавьте поиск компонентов установщика Windows.Для свойства ComponentID нового поиска вставьте ComponentID.
- Скопируйте свойство Property.Это должно быть что-то вроде COMPONENTEXISTS1.
- Откройте редактор файловой системы и выберите папку приложения, затем выберите файл, который вы хотите установить по условию.
- Измените свойство Condition на COMPONENTEXISTS1 = FALSE.
- Установите для свойства Transitive значение true, если вы хотите, чтобы условие оценивалось при каждом запуске установщика (а не только в первый раз).
- Теперь MyFile.txt будет установлен, только еслиего там еще нет.
Существует одна оговорка с этой техникой: Исправление установки приведет к удалению файла, даже если файл помечен как постоянный! Не хорошо.Я решил эту проблему, добавив некоторые пользовательские действия (вызывая файлы vbscript) для резервного копирования и восстановления моего файла.
Какая проблема для простого выполнения такой простой задачи: установить файл один раз при первоначальной установке, а затем никогда большепереписать его.
Если у кого-то есть лучшее решение, я весь в ушах.