2009-10-21 17 views
60

Czy powinienem zawinąć wszystkie pliki, które chcę zainstalować w poszczególnych komponentach? Jaka jest zaleta umieszczania kilku plików w jednym komponencie?Wix: jeden plik na komponent lub kilka plików na komponent?

+0

Niektóre zestawy ** .NET ** są ** wielo-pliku **, ale powinny być zawarte w tym samym komponencie MSI, ponieważ muszą być zainstalowane jako "** jednostka atomowa **". Innymi słowy, powinny zawsze instalować i odinstalowywać razem jako pakiet. –

+0

Oprócz wielo-plikowych zestawów .NET zawsze używam jednego pliku na komponent, ponieważ pozwala on uniknąć wszystkich problemów związanych z aktualizacją i wdrażaniem. –

Odpowiedz

75

Jednym z powodów "jednego pliku na składnik" jest resiliency. Po uruchomieniu aplikacji Instalator systemu Windows może sprawdzić, czy brak jakiegokolwiek składnika keypath. Jeśli brakuje klawisza "keypath", komponent zostanie ponownie zainstalowany/naprawiony.

Jeśli komponent ma wiele plików, to jednym z nich może być tylko jeden plik tylko jeden plik. W wix wskazujesz to, ustawiając KeyPath=yes na elemencie File. Pozostałe pliki nie będą w pełni chronione przez odporność systemu Windows Installer. Zostaną one ponownie zainstalowane tylko wtedy, gdy zniknie plik keypath.

Innym powodem posiadania "jednego pliku na składnik" jest instalowanie plików w lokalizacjach, w których mogą już być obecne (np. Uaktualnienie aplikacji lub podczas instalacji pod numerem c:\windows\system32). Instalator systemu Windows określa, czy komponent musi zostać zainstalowany, sprawdzając keypath. Jeśli keypath jest plikiem i plik już istnieje (z tą samą lub wyższą wersją), to jest zainstalowany komponent , a nie. To jest problem, jeśli pliki w komponencie rzeczywiście muszą być zainstalowane/zaktualizowane.

+7

To jest świetna odpowiedź, ale nie mówi, dlaczego rewers jest przydatny. Co jest uzasadnione, ponieważ znam tylko jedną zaletę: podczas instalacji zapisujesz pewien czas rejestracji, ponieważ każdy komponent jest zarejestrowany, ale każdy z jego plików nie jest. Zasadniczo nie jest to dobry kompromis, ponieważ zabija odporność i przeszkadza w ulepszaniu, dlatego należy zwrócić większą uwagę na zalecenia firmy wcoenen. –

+0

@Wim Coenen Używając metody "file per component", należy umieścić KeyPath = "yes" na File, ale co z jego składnikiem? Czy konieczne jest dodanie tej samej wartości KeyPath = "yes" w komponencie nadrzędnym pliku? Ponadto, co z katalogiem? Jaka jest najlepsza praktyka z katalogami (puste i niewypełnione)? Czy są na to dobre wskazówki? Dzięki!!! – zam6ak

+0

@ zam6ak: komentarze nie są najlepszym miejscem do zadawania nowych pytań, ponieważ mają ograniczoną uwagę i nie mogą zawierać dokładnych odpowiedzi. Opublikuj osobne pytanie zamiast komentarza! –

Powiązane problemy