2009-06-22 11 views
5

Mam aplikację Windows Forms z instalatorem (.msi) już utworzonym za pomocą programu Visual Studio. Teraz tworzę nowy instalator dla wersji 2.0 z właściwością RemovePreviousVersions ustawioną na true.Czy możemy polecić Instalatorowi Visual Studio, aby zachować istniejące pliki do ponownej instalacji?

Teraz, gdy instaluję wersję 2.0 przez 1.0, usuwa ona 1.0 i instaluje 2.0 całkowicie.

Czy istnieje sposób, w jaki mogę powiedzieć instalatorowi, jeśli jakieś pliki są już zainstalowane (jak pliki .xml używane do danych), a następnie ich nie zastępować?

Próbuję mam 2.0 instalator służyć 2 celów:

  • Instalacja od podstaw dla nowych użytkowników
  • Obecni użytkownicy będą modernizacji, ale nie tracą dostosowania

Odpowiedz

2

kiedy byłem w podobnej sytuacji zrobiłem:

Pliki, które zostały spersonalizowane przez każdego użytkownika i NIE powinny być dotykane przez instalatora NIE zostały włączone do e MSI (NIE w projekcie instalacji Visual Studio). Po uruchomieniu aplikacji po raz pierwszy wygenerowałem pliki XML za pomocą kodu.

Pliki, które były statyczne (np. Dane, które zostały użyte do zapełnienia list rozwijanych) zostały zawarte w MSI i mogę je zaktualizować, budując nowy MSI za pomocą programu Visual Studio.

Zasadniczo nie należy zawierać plików konfigurowalnych w projekcie MSI. Utwórz je w kodzie dla nowych użytkowników.

Nigdy nie sprawdzałem, czy MSI nie aktualizować niektórych plików zawartych w pliku MSI. Rozwiązanie, które wymyśliłem, było dla mnie idealne. Nie wiem, czy da się to zrobić.

Mam nadzieję, że to pomoże.

13

Projekt wdrażania w VS nie zastępuje plików. Dzieje się tak, ponieważ ponieważ opcja RemovePreviousVersions ma wartość true, po zmianie wersji pliku programu i identyfikatora GUID produktu ProductCode projektu instalacji najpierw zostanie odinstalowana poprzednia wersja, a następnie zostanie wykonana czysta instalacja nowej wersji.

Aby upewnić się, że niektóre pliki nie zostaną nadpisane, zazwyczaj wykluczam je z plików wyjściowych Treść lub Podstawowe (niezależnie od tego, gdzie się znajdują), a następnie dodaje je oddzielnie do projektu instalacji. W ten sposób można indywidualnie ustawić właściwości tych plików. Właściwość, której szukasz, nazywa się Permanent, "jeśli ustawiona na true nigdy nie odinstaluje danego pliku, a zatem nigdy go nie zastąpi nową wersją. Jedyną wadą jest to, że po odinstalowaniu produktu pliki stałe nie zostaną usunięte z ich miejsc docelowych, ale w moim przypadku (zazwyczaj pliki lokalne dB), że to dobra rzecz!;).

Cheers

[edytuj] powyższe jest prawdziwe dla VS 2008 SP1 Haven” t wypróbował to w innych wersjach, więc mam nadzieję, że używasz tej samej wersji VS lub działa dla wersji, której używasz:

[edit2] Och, również możesz użyć właściwości "Warunek", aby osiągnąć coś podobnego ar. Jeśli to zrobisz, upewnij się, że "Transitive" jest ustawione na True, więc Warunek jest zawsze oceniany. Nie próbowałem tego z warunkami, ale jest to kolejna opcja, na którą możesz spojrzeć. Poza tymi 2, myślę, że to w zasadzie dotyczy projektów wdrażania VS.

+0

Świetnie, dziękuję! To powinno być oznaczone jako odpowiedź. –

+1

Zasady wymiany plików są [tutaj] (http://msdn.microsoft.com/en-us/library/aa370531(v=VS.85).aspx). – CyberMonk

+0

Korzystanie z VS2010 SP1. To nie działa dla mnie ... Plik zostanie zastąpiony, nawet jeśli Permanet ma wartość true !!! Zastępuje się, gdy data/czas pliku na dysku jest starsza niż data utworzenia pakietu. W wersji VS2010 bez dodatku SP1 została ona wymieniona, gdy data pliku na dysku była starsza niż data pliku użytego do utworzenia pakietu. Ustawienie daty pliku źródłowego na 01.01.2001 rozwiązało wiele problemów, ale już nie działa !!! –

Powiązane problemy