В настоящее время у нас есть 4 установщика для нашего клиентского программного обеспечения:
- ClientSetupTest
- ClientSetupProduction
- ClientUpdateTest
- ClientUpdateProduction
Единственное различие между ними заключается в том, что программа установки содержит распространяемые файлы Crystal Reports, а программа обновления — нет. Test и Production просто указывают, в какой среде они работают, и единственное отличие состоит в одной строке в файле Client.exe.config.
Глупо, я знаю, поэтому я заменил их всех одним установщиком после того, как избавился от Crystal Reports. Новый установщик записывает выбранную среду в setup.config, на который ссылается атрибут файла (см. здесь).
Атрибут «файл» является новым для файла конфигурации с этим новым установщиком. Проблема, с которой я сталкиваюсь, заключается в том, что если мы изменим файл Client.exe.config в старой установке, а затем запустим новый установщик, файл конфигурации никогда не будет обновлен с помощью атрибута «файл».
Есть ли способ заставить его обновить файл? RemovePreviousVersions точно не работает, так как это другой установщик, если я что-то не понимаю. Моя текущая идея, которая, вероятно, сработает, состоит в том, чтобы добавить код в метод OnBeforeInstall для переименования старого файла Client.exe.config в файл резервной копии, чтобы он всегда записывал новый. Однако похоже, что в самом установщике должно быть более простое решение. Любые идеи?
EDIT: переименование старого файла конфигурации в Client.exe.config.old перед вызовом base.OnBeforeInstall() не сработало. Он переименовал файл, но так и не написал новый.