2010-07-20 21 views
10

Mam program, który instaluje się z instalatorem WiX.Instalator WiX usuwa pliki podczas deinstalacji, ale nie po aktualizacji

Program sam tworzy wiele plików w katalogu [CommonAppDataFolder] \ [MojaAppName] \. Wszystkie te pliki mają to samo rozszerzenie (można je nazwać .dat).

Na uaktualnieniu, chcę zachować te pliki w postaci.
Na odinstalowaniu, Chcę usunąć usunąć te pliki.

Jestem obecnie usuwanie plików, jak tak:

<Directory Id='CommonAppDataFolder'> 
    <Directory Id='MyCommonAppDataFolder' Name='MyAppName'> 
    <Component Id='RemoveFilesComponent' Guid='71cb0cd8-8459-4a8f-89b7-f00977aa7b70'> 
     <RemoveFile Id='RemoveFiles' Name='*.dat' On='uninstall'/> 
    </Component> 
    </Directory> 
</Directory> 

I mam to na celu ułatwienie aktualizacji:

<InstallExecuteSequence> 
    <RemoveExistingProducts After='InstallInitialize'/> 
</InstallExecuteSequence> 

Teraz, kiedy odinstalować, że pliki .dat są usuwane poprawnie.
Jednak po aktualizacji pliki .dat również zostaną usunięte. Domyślam się, że aktualizacja wykonuje odinstalowanie w poprzedniej wersji.

Czy poprawnie podchodzę do tego problemu? Jak mogę zachować pliki podczas aktualizacji, usuwając je podczas deinstalacji?

+0

Czy kiedykolwiek znalazłeś rozwiązanie tego problemu. – darbid

+0

Dawno temu, ale nie to, co pamiętam. Myślę, że skończyłem właśnie zostawiając pliki w CommonAppDataFolder po dezinstalacji. – MatthewKing

+0

Dzięki Matt za odpowiedź. – darbid

Odpowiedz

1

Jedną opcją jest zmiana na mniejszą. To ma wiele ograniczeń, więc nie jest tak proste, jak się wydaje.

+1

Twoja odpowiedź może być przed lub we wczesnych stadiach nagrywania wix, więc zastanawiam się, czy mógłbyś inaczej odpowiedzieć na to pytanie. Jest możliwym rozwiązaniem do stworzenia bootstrapera wix z pakietami 2 msi. Jego pliki .dat znajdą się w drugim pakiecie msi i nie zostaną uaktualnione. – darbid

+0

Wiele rzeczy można zrobić, jeśli oryginalny pakiet jest wysyłany inaczej. Odpowiedziałem, zakładając, że musi poradzić sobie z tym, co wysłane. –

+0

@RobMensching Czy istnieje odpowiedź na nie wysłane paczki? (obecnie na etapie rozwoju) Byłoby bardzo pomocne. Dzięki! – Eli

2

Czy próbowałeś dodać warunek do RemoveExistingProducts? Oto co bym zrobił.

<RemoveExistingProducts After='InstallInitialize'>(NOT UPGRADINGPRODUCTCODE) AND (Installed)</RemoveExistingProducts> 
+1

Wygląda na to, co chcę, ale oczywiście oznacza to, że poprzednia wersja nie została usunięta podczas aktualizacji. Na przykład, otrzymuję wiele wpisów dla mojej aplikacji w panelu sterowania "Dodaj lub usuń programy". Jakiekolwiek obejście? – MatthewKing

+1

Możesz spróbować usunąć istniejący produkt do After InstallFinalize. Spowoduje to usunięcie wszelkich zmienionych plików i ustawień rejestru, ale zachowaj to, czego nie zrobiłeś. IT może również mieć związek z Twoim ProductIDem lub wersją. System operacyjny prawdopodobnie uważa, że ​​jest to zupełnie inny program. –

Powiązane problemy