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