Obecnie mamy 4 instalatorów dla naszego oprogramowania klienckiego:Wymusza zastępowanie app.config podczas instalacji
- ClientSetupTest
- ClientSetupProduction
- ClientUpdateTest
- ClientUpdateProduction
Jedyne różnice pomiędzy ich instalacja zawiera pliki redystrybucyjne Crystal Reports, a aktualizacja działa nie. Testy i produkcja określają jedynie środowisko, w którym działają, a jedyną różnicą jest jeden wiersz w pliku Client.exe.config.
Głupi, wiem, dlatego zastąpiłem je jednym instalatorem po usunięciu Crystal Reports. Nowy instalator zapisuje wybrane środowisko do pliku setup.config, do którego odwołuje się atrybut pliku (see here).
Atrybut "plik" jest nowym plikiem konfiguracyjnym dla nowego instalatora. Problem, który napotykam, polega na tym, że jeśli zmodyfikujemy plik Client.exe.config na starej instalacji, a następnie uruchomimy nowy instalator, plik konfiguracyjny nigdy nie zostanie zaktualizowany za pomocą atrybutu "file".
Czy istnieje sposób zmuszenia go do aktualizacji pliku? RemovePreviousVersions nie działa dokładnie, ponieważ jest to inny instalator, chyba że coś nie rozumiem. Mój obecny pomysł, który prawdopodobnie zadziała, polega na dodaniu kodu w metodzie OnBeforeInstall w celu zmiany nazwy starego pliku Client.exe.config na plik kopii zapasowej, więc zawsze będzie on zapisywać nowy. Wydaje się jednak, że powinno być prostsze rozwiązanie w samym instalatorze. Jakieś pomysły?
EDIT: Zmiana nazwy stary plik konfiguracyjny do Client.exe.config.old przed wywołaniem base.OnBeforeInstall() nie działa. Zmienił nazwę pliku, ale nigdy nie napisał nowego.
Dzięki. Dam ci opcję niestandardową. Nadal będę miał problem z nieumiejętnością zmiany ustawień, ale jeśli został zmodyfikowany, mogę go wykryć i skopiować starą konfigurację. –