Korzyści korporacyjne wynikające z używania plików MSI

57

Jakie są zalety używania plików .msi w porównaniu ze zwykłymi plikami setup.exe?

Mam wrażenie, że wdrożenie jest łatwiejsze na komputerach, na których użytkownicy mają niewiele uprawnień, ale nie jestem pewien co do szczegółów.

Jakie funkcje ma msiexec.exe, który sprawia, że ​​wdrożenie jest łatwiejsze niż przy użyciu scenariuszy setup.exe?

Wszelkie porady lub wskazówki dotyczące wdrażania aplikacji .msi?

Frode Lillerud
źródło

Odpowiedzi:

42

Kilka korzyści:

  • Może być reklamowany (aby instalacja na żądanie mogła mieć miejsce).
  • Podobnie jak reklama, funkcje można zainstalować, gdy tylko użytkownik spróbuje ich użyć.
  • Zarządzanie stanem jest utrzymywane, więc Instalator Windows umożliwia administratorom sprawdzenie, czy aplikacja jest zainstalowana na komputerze.
  • Możliwość wycofania w przypadku niepowodzenia instalacji.

Myślę, że kiedy wdrażam oprogramowanie w środowisku korporacyjnym: wdrażanie oprogramowania przez MSI jest prawie przyjemne. Natomiast prawie zawsze boję się wdrażać oprogramowanie, gdy jest ono w innym kontenerze.

Aby uzyskać dodatkowe informacje na temat manipulowania instalacjami MSI, wpisz msiexecw oknie dialogowym Uruchom.

Matt Hanson
źródło
3
+1 - Nie widziałem tego jeszcze w '09 (myślę, że strona mogła być jeszcze w fazie beta), ale uwielbiam fragment „... prawie zawsze boję się ...”. I całkowicie czuć się w ten sposób (choć, prawdę mówiąc, niektóre „inicjatyw wielostronnych” czuję się w ten sam sposób ... Java ... Google Chrome ...).
Evan Anderson
74

AKTUALIZACJA, lipiec 2018 r . : Bardzo skompresowane podsumowanie poniższych informacji jest dostępne przy przepełnieniu stosu: Główne zalety MSI ( "executive summary"- w pewnym sensie).


Pracowałem w dziale rozwoju jako menedżer wydań , inżynier budowania , programista instalacji oraz jako program pakujący i inżynier wdrożeniowy w dużych korporacjach.

Jest to przegląd najlepszych (i najgorszych) cech koncepcyjnych i rzeczywistych MSI. Najbardziej powszechne problemy projektowe znajdujące się w plikach MSI prezentowane są jako odrębnej odpowiedzi poniżej . Nie udawanie, że jest kompletne - naprawdę po prostu bałaganiarski „zrzut mózgu” - zamierzone jako „to, czego nie można znaleźć w książkach” (prawdopodobnie z ważnego powodu).

Chcę również zasugerować ten artykuł MSDN jako dobrą lekturę: Instalator Windows: Korzyści i wdrożenie dla administratorów systemu .


Normalizacja:

Jednym słowem, MSI dotyczy standaryzacji i radzenia sobie z „ zapachami wdrożeniowymi ” starszych technologii instalatora. Cała kolekcja złych projektów architektury instalacji, które powodowały powtarzające się problemy z wdrażaniem.

Ogólnie rzecz biorąc, MSI zapewnia kompleksową, znormalizowaną platformę dla instalatora, która przede wszystkim obejmuje również deinstalację oraz wbudowane funkcje i opcje cichego działania ze znormalizowanym interfejsem graficznym, które można uruchamiać zdalnie .

Same te funkcje stanowią ogromną poprawę w porównaniu z poprzednimi technologiami instalacyjnymi, które traktowały deinstalację i cichą pracę przypadkową - być może najważniejsze funkcje dla wdrożenia korporacyjnego wraz z niezawodnym zdalnym zarządzaniem pakietami za pośrednictwem Active Directory lub dedykowanych narzędzi do zdalnej administracji, takich jak Microsoft SCCM (wcześniej SMS), IBM Tivoli , CA Unicenter i podobne.

Ktoś zduplikował wcześniejszą wersję tej odpowiedzi . Może szybszy odczyt?


Starsze instalatory „Pachnie wdrożeniem”

MSI aktywnie odradza zapachy związane z wdrażaniem starszych wersji . Tematy te zostały omówione w późniejszych sekcjach poniżej, ale jako krótka lista najbardziej rozpoznawalne problemy ze starszymi instalatorami i starszymi technologiami wdrażania to:

  • 1) czasami obniżyli ocenę i zastąpili udostępnione i wersjonowane pliki, nie troszcząc się o powstałe dll-hell
  • 2) często instalator nie dostarczał prawidłowej procedury odinstalowania lub nie kończył się poprawnie i niezawodnie - szczególnie w przypadku cichego uruchamiania. To bardzo duży problem dla korporacyjnego zarządzania SOE
  • 3) cicha instalacja rzadko była poprawnie obsługiwana. Niezawodność była niska i często trzeba było rejestrować przebieg instalacji z opcjami wyboru okien dialogowych, a to nie radziło sobie dobrze z nieoczekiwanymi warunkami, takimi jak okna dialogowe błędów lub okna dialogowe ostrzeżeń, które nie zostały zapisane w oryginalnym uruchomieniu
  • 4) instalator nie prowadził rejestru tego, co zostało zainstalowane, a zatem nie było automatycznego sposobu weryfikacji plików na dysku w celu sprawdzenia, czy nadal były to wersje, które zostały pierwotnie zainstalowane przez instalatora
  • 5) zawierały nieprzewidywalne, niewiarygodne i niestandardowe parametry wiersza poleceń dla pliku wykonywalnego instalacji
  • 6) w związku z niestandardowym wierszem poleceń i brakiem standardów trudno było dostosować instalatorów do określonych wartości potrzebnych do wdrożenia korporacyjnego w sposób niezawodny i przewidywalny
  • 7) normalni użytkownicy nie mogli uruchomić tych instalacji i często trzeba było zadzierać z tymczasowymi uprawnieniami administratora (użyj „uruchom jako”, jeśli to wystarczyło lub zaloguj się jako administrator, zainstaluj, a następnie wyloguj się - to pełne logowanie i generowanie profilu bywało czasem wymagane do ukończenia instalacji)
  • 8) setup.exe instalator często nie zwracają prawidłowy kod błędu lub kod sukcesu, a czasami to natychmiast wyjść i akcja dla innego procesu, który zakończy instalację co trudno jest określić, czy instalacja została zakończona - zwłaszcza za pośrednictwem partii plik
  • 9) większość plików setup.exe pozwoliła na wyodrębnienie plików, ale nie w sposób wiarygodny i przewidywalny - na ogół trzeba było dużo czasu znaleźć odpowiednie przełączniki, aby to zrobić
  • 10) rejestrowanie było na ogół słabe i raczej przypadkowe w niektórych narzędziach. Debugowanie przy użyciu plików dziennika rzadko zapewniało przejrzystość, ale trochę pomogło
  • 11) brak było przejrzystości w tym, co robił instalator i brak przywracania zmian po nieudanej instalacji
  • 12) nie było żadnego standardu przemysł droga od wdrażania wspólnych komponenty wykonawcze czy były komponenty systemu operacyjnego, komponenty osobę trzecią lub własne

Lista zawiera wiele innych istotnych i uznanych wad wdrażania . Te problemy pojawiły się najczęściej w świecie korporacyjnych wdrożeń, co doprowadziło do działalności polegającej na „ przepakowywaniu aplikacji ”, w której przechwytywany jest starszy instalator z technologiami skanowania dysków i rejestru w celu utworzenia pliku MSI zgodnego ze standardami dla niezawodnego wdrożenia.

Ponowne pakowanie aplikacji jest zadaniem specjalistycznym i generalnie zapewnia doskonałą jakość plików MSI, jeśli jest wykonywane przez osoby posiadające wiedzę, ale nie jest możliwe ponowne pakowanie wszystkich aplikacji ze względu na złożoną logikę rejestracji, którą należy uruchamiać interaktywnie, aby niektóre aplikacje działały.


Korzyści z MSI - krótkie podsumowanie

W prostym językiem , że bardzo ważne są korzyści z MSI (w przypadkowej kolejności):

  • 1) Deinstalacja jest zawsze dostępna dla każdego pakietu, chyba że jest aktywnie wyłączona
  • 2) to samo dotyczy rejestrowania , które jest świetne i ustandaryzowane, choć szczegółowe (narzędzia takie jak WiLogUtl.exe mogą być użyte do analizy plików dziennika)
  • 3) to, co robi plik MSI, jest (częściowo) przezroczyste lub „w większości kontrolowalne”. Wyjątkiem są akcje niestandardowe - (patrz sekcja przejrzystości poniżej)
  • 4) dostosowanie konfiguracji odbywa się w znormalizowany sposób ( przekształca )
  • 5) nie ma potrzeby bałagania się z tymczasowymi uprawnieniami administratora, ponieważ instalacja przebiega z podwyższonym poziomem za pośrednictwem reklamy Active Directory, zasad grupy lub administracji zdalnej. Niektóre kwalifikacje tutaj. Zobacz także zrzut ekranu z edytora obiektów zasad grupy.
  • 6) działa cicha instalacja / dezinstalacja za pomocą narzędzi do zarządzania lub za pomocą msiexec.exe
  • 7) istnieje pełne wsparcie wycofywania instalacji zakończonych niepowodzeniem. Jeśli instalujesz ręcznie na pudełku, musisz posiadać pewne kwalifikacje .
  • 8) plik MSI nadaje się zarówno do kontroli, jak i sprawdzania poprawności pod kątem spójności i logicznej poprawności, ponieważ są one zgodne ze schematem bazy danych ( patrz przykład sprawdzania poprawności )
  • 9) aktualizacje są znormalizowanymi typami, aczkolwiek złożone i często podatne na błędy niedoświadczonych pakujących
  • 10) ekstrakcji plików z MSI jest wbudowana funkcja (sprawdź powiązany artykuł na dobry szybki przegląd)
  • 11) wiersz polecenia Instalatora Windows, msiexec.exe , zapewnia bardzo drobiazgową kontrolę nad tym, jak należy wykonać sekwencję instalacji, a wszystkie opcje działają ze wszystkimi plikami MSI zgodnymi ze standardami (ustaw poziom dziennika, uruchamiaj cicho / interaktywnie / częściowo cicho) , ustaw parametry instalacji, zastosuj transformacje itp ...).
  • 12) moduły scalające to mechanizm MSI do dostarczania współdzielonych plików z wieloma pakietami MSI. Jest to moduł eksploatacyjny lub pakiet logiki instalacyjnej, który można połączyć z dowolnym pakietem MSI w czasie kompilacji. Wix rozszerzył i ulepszył tę koncepcję za pomocą plików dołączanych Wix - koncepcja, która moim zdaniem przewyższa moduły scalające - szczególnie dla twoich własnych plików (tj. Nie plików systemu operacyjnego)
  • 13) sam silnik instalatora systemu Windows ma mechanizm zapobiegający zastępowaniu wersjonowanych lub modyfikowanych plików podczas instalacji. Jest to kontrolowane przez dość złożoną logikę zastępowania plików . Choć wydajna i dobra, logika może sama w sobie stanowić problem, ponieważ wielu programistów ma problem z zastąpieniem zmodyfikowanych plików konfiguracyjnych podczas aktualizacji. Rozwiązaniem tych problemów są na ogół niewielkie zmiany w projekcie aplikacji, aby uniknąć typowych anty-wzorców wdrażania - choć jest to osobna wielka dyskusja.

W prawdziwym świecie znalazłem mniej udane aspekty, takie jak łatanie (bardzo złożone), MSI-GUI (proste funkcje, dość złożone, brak elastyczności), odporność (może powodować trudności z debugowaniem powtarzających się problemów z samodzielną naprawą ) oraz ogólną złożoność radzenia sobie z technologią dla początkujących (czasami duża złożoność podstawowych operacji - na przykład aktualizacje, GUI i wiele interakcji, które powodują nieoczekiwane rezultaty itp.). Szybkość procesu instalacji również znacznie spadła z powodu zwiększonego obciążenia MSI. Zobacz kilka wskazówek dotyczących poprawy szybkości instalacji MSI .

Pozostała część tekstu zajmuje się bardziej szczegółowo niektórymi z tych aspektów MSI.


Przejrzystość (format otwartego instalatora)

Plik MSI jest w zasadzie rozebraną bazą danych SQL Server, przechowywaną jako plik pamięci o strukturze COM - zasadniczo system plików w pliku lub zbiór strumieni danych. Jest to typ pliku używany w dokumentach Microsoft Office i zapewnia standardowy format, który można przeglądać i sprawdzać - ogromny problem dla dużych korporacji.

Z wyjątkiem skompilowanych działań niestandardowych plik MSI jest białym polem . Jeśli konfiguracja zmieni coś szalonego, na przykład systemowe ustawienia systemowe, możesz to zobaczyć za pomocą odpowiednich narzędzi . Ważnym wyjątkiem są skompilowane akcje niestandardowe - które są czarnymi skrzynkami . Wymagania dotyczące logo systemu Windows wymagają adnotacji niestandardowych działań w celu wyjaśnienia, co robią, ale jest to często ignorowane przez programistów instalacji. Mamy nadzieję, że nadejście Wix to poprawi.

Aby ustalić, co takie skompilowane działania niestandardowe faktycznie robią w sensie technicznym, konieczne jest przechwycenie konfiguracji . Z mojego doświadczenia rzadko tak się dzieje. Bardziej powszechne jest skontaktowanie się ze sprzedawcą w celu uzyskania informacji, czy oprogramowanie wymaga zatwierdzenia do wdrożenia korporacyjnego, a wtedy może to być sama aplikacja, która uniemożliwia jego użycie, a nie tylko konfigurację.

Możliwość dostosowania (przekształca)

MSI można dostosować za pomocą przekształceń, aby dopasować je do potrzeb i standardów organizacji, jednocześnie umożliwiając współdziałanie z aktualizacjami instalatora dostawcy. Nie zmieniasz samego instalatora, tworzysz swoje dostosowanie w osobnym pliku dla organizacji zwanym transformacją (plik .mst) (fragment bazy danych lub zmieniaj transakcję, jeśli chcesz). Możesz dowolnie wyłączać niestandardowe akcje i ogólnie zmieniać, zastępować lub wyłączać cokolwiek w instalatorze, a nawet dodawać nowe rzeczy, w tym pliki. Pliki transformacji są również czasami używane do lokalizowania pliku MSI w różnych językach. Kilka transformacji można zastosować do pojedynczego MSI, oto próbka ze obciętymi ścieżkami :

msiexec.exe /I "My.msi" /QN /L*V "C:\My.log" TRANSFORMS="C:\1031.mst;C:\My.mst"

Szybkie objaśnienie parametrów:

/QN = run completely silently
/L*V "C:\My.log"= verbose logging
TRANSFORMS="C:\1031.mst;C:\My.mst" = Apply transforms 1031.mst and My.mst.

Zarządzanie i raportowanie

Instalator Windows prowadzi kompleksową bazę danych wszystkich elementów, które produkt zainstalował w rejestrze ( HKEY_CLASSES_ROOT \ Installer - nigdy niczego tu bezpośrednio nie zmieniaj! Dotyczy to również ekspertów).

Możesz niezawodnie określić, czy produkt został zainstalowany, jakie funkcje zostały zainstalowane i jakie wersje plików zostały zainstalowane. Ponadto można uzyskać listę wszelkich poprawek, które zostały zastosowane do produktu podstawowego, jeśli takie istnieją. Możesz uzyskać dostęp do tej bazy danych za pomocą API obsługujących Win32, COM lub .NET przy użyciu różnych narzędzi skryptowych, konfiguracyjnych i administracyjnych, takich jak Microsoft SCCM , IBM Tivoli , CA Unicenter itp.

Bezpieczeństwo (tymczasowe podwyższone prawa)

MSI obejmuje również zasady „podwyższonych uprawnień”, które pozwalają ograniczonemu użytkownikowi na uruchomienie instalacji produktu, który wymaga uprawnień administratora. Jest to część „ funkcji reklamowej ”, która pozwala administratorowi udostępnić instalatory użytkownikom bez ich instalowania na wszystkich stacjach roboczych. Sam instalator musi być poprawnie utworzony na kilku podstawowych kontach, aby ta koncepcja podwyższonych uprawnień działała poprawnie. Użytkownicy mogą sami uruchomić instalację produktu lub instalacja może być kontrolowana przez dedykowany system wdrażania, taki jak SCCM, Tivoli, Unicenter (zwykle większe firmy). Nie trzeba zadzierać z tymczasowymi uprawnieniami administratora, aby wszystko działało co często ma miejsce w przypadku starszych instalatorów.

Obszerna baza danych instalacji zapewnia również pełny przegląd zainstalowanych poprawek, a tym samym możliwość wykrycia luk w zabezpieczeniach za pomocą narzędzi automatyzacji i administracji.

Uprawomocnienie

Pliki MSI można sprawdzić za pomocą reguł sprawdzania poprawności, aby upewnić się, że są one zgodne z wieloma wewnętrznymi regułami spójności (zwanymi ICE). Korporacje mogą tworzyć własne kontrole ICE w celu egzekwowania specjalnych reguł i wymagań korporacyjnych. To bardzo pomaga w zapewnianiu jakości. Powód sprawdzania poprawności jest możliwy ze względu na samoreferencyjny charakter relacyjnych baz danych i powiązany schemat bazy danych. Baza danych musi być wewnętrznie spójna i zgodna z własnym schematem w odniesieniu do kluczy obcych, typów danych, szerokości pola, wersji schematu itp. Sprawdzanie poprawności również wykracza poza to i jest w stanie wykryć prawdziwe błędy logiczne i błędy w pakiecie , nie tylko błędy formatowania i pisania. Na przykład może wykryć pliki lub typy plików, które są wdrażane w błędnych miejscach docelowych.

Odporność (samodzielna naprawa)

Funkcja instalacji administratora w Instalatorze Windows zapewnia standardowy sposób na wyodrębnienie plików źródłowych z pliku MSI ( oto dodatkowe informacje na ten temat ). Te pliki źródłowe można następnie umieścić w udziale i udostępnić wszystkim stacjom roboczym do instalacji. Zapewnia to wykonanie operacji naprawy, odinstalowania i modyfikacji bez żądania nośnika instalacyjnego na dysku CD lub podobnym. Jest to szczególnie ważne w przypadku operacji łatania i aktualizacji, które mogą wymagać dostępu do plików źródłowych starych wersji w szczególnych okolicznościach.

Istnieją również typowe problemy z tą funkcją odporności. Większość administratorów doświadczyła maszyn z cyklicznymi cyklami autonaprawy, które nigdy się nie zatrzymują. Kliknij link, aby uzyskać długą listę przyczyn tego problemu. I znowu, tutaj jest krótsza wersja, która może być łatwiejsza do odczytania.

Wycofanie

Instalacja pliku MSI zwykle powoduje utworzenie punktu przywracania . Ponadto wszystkie pliki i elementy rejestru zastąpione lub nadpisane podczas instalacji zostaną zapisane i przywrócone, jeśli instalacja nie zakończy się, z wyłączeniem wszelkich zmian wprowadzonych w akcjach niestandardowych.

Niestandardowe działania muszą implementować własną obsługę wycofywania zgodności z logo Windows. Jest to często ignorowane, ale wiąże się z utworzeniem drugiej akcji niestandardowej w celu cofnięcia zmian wprowadzonych przez główną akcję niestandardową.

Wycofanie gwarantuje, że stacja robocza pozostanie w stabilnym stanie, nawet jeśli instalacja zakończy się niepowodzeniem. Rzeczywisty scenariusz wycofywania są przechowywane w ukrytym folderze bezpośrednio na dysku systemowym - ogólnie C: \ Config.msi i zawiera pliki o .RBS rozszerzeń i .RBF - Wycofywanie plików skryptów . Ponieważ można się spodziewać, że źle zaprojektowane pliki MSI mogą naruszać wbudowane funkcje systemu Windows, zobacz mój drugi post w tym wątku, aby uzyskać więcej informacji.

Istnieją sposoby na wyłączenie przywracania i przyspieszenie instalacji. Nie jest to ogólnie zalecane, ale oto szczegóły dotyczące właściwości MSIFASTINSTALL i DISABLEROLLBACK . Jest to skomplikowana funkcja, ale tutaj jest szybki przegląd wycofań .

Patchowanie i aktualizacje

Chociaż bardzo skomplikowane, łatanie w instalatorze Windows jest w pełni zarządzane i rejestrowane w systemie, dzięki czemu można określić stan bezpieczeństwa systemu, sprawdzając, co zostało zainstalowane. Aktualizacje są ustandaryzowane do kilku podstawowych wariantów, co pozwala na przeprowadzanie aktualizacji z większym stopniem pewności, pod warunkiem, że jesteś w stanie poradzić sobie ze złożonością. Systemy wdrażania będą mogły zgłaszać, które aktualizacje nie powiodły się i dlaczego.

W subiektywnym widoku łatanie działa dobrze dla 2 podstawowych zastosowań : 1 ) małych poprawek dla dostarczonych produktów oraz 2 ) łatania zainstalowanego produktu, aby naprawić jego wadliwą sekwencję odinstalowywania, która uniemożliwia odinstalowanie czystego produktu.

Plaster jest właśnie mechanizm dostawy dla aktualizacji, która już pracuje . Jako taki jest tylko pojemnikiem, który jest bardziej skomplikowany i podatny na błędy niż sama oryginalna konfiguracja. Zasadą numer jeden dla łatki jest to, że musi ona być mniejsza niż oryginalna MSI lub w ogóle nie ma oczywistego powodu, aby dostarczyć łatkę. Łatka może szybko stać się ogromna, jeśli jest kierowana na wiele wersji produktu.

Rejestrowanie (rzeczywiście pełne)

Instalator Windows zapewnia znormalizowaną funkcję rejestrowania, która jest znacznie lepsza niż poprzednie inkarnacje, choć prawie nadmiernie gadatliwa. Pliki dziennika można odszyfrować za pomocą analizatorów dziennika , a niestandardowych poziomów dziennika można użyć w celu wyeliminowania generowania zbyt dużych plików dziennika z niepotrzebnymi informacjami. Do celów debugowania pełne rejestrowanie jest niezwykle przydatne. Zobacz blog Rob Mensching jest na dobrej drodze do ręcznego odczytać plik dziennika MSI (zasadniczo wyszukiwania dla „ wartości 3 ” w pliku dziennika). Oto przykładowy wiersz polecenia, który wykonuje pełne rejestrowanie:

msiexec.exe /I "C:\Installer.msi" /QN /L*V "C:\msilog.log"

Ten artykuł autorstwa Roberta Macdonalda z zespołu Instalatora Windows jest wysoce zalecany jako praktyczne spojrzenie na rejestrowanie MSI: Jak interpretować dzienniki Instalatora Windows .


Wniosek

Nie wszystko jest dobre w Instalatorze Windows . Jego złożoność może być czasami zaskakująca , ale w przypadku dużych korporacji pliki MSI są znacznie lepsze niż wszelkie inne formy wdrażania, biorąc pod uwagę powyższą listę korzyści.

Nowy paradygmat instalatora (ogromna instrukcja SQL)

Aby zrozumieć nowy „ paradygmat ”, ważne jest, aby zrozumieć, że MSI ma służyć jako deklaratywny opis tego, co się wydarzy w systemie docelowym, a nie ustaloną sekwencję zdarzeń. Podejrzewam, że można to traktować jako ogromną instrukcję SQL . Na przykład deklarujesz elementy, które chcesz dodać lub zmodyfikować w pliku INI. W trakcie instalacji zmiany są śledzone, a wycofywanie jest dostępne, dzięki czemu zmiany można cofnąć w przypadku niepowodzenia instalacji. To naprawdę działa jak „ automagic ” i jest niezawodne, jeśli zrobione dobrze.

Działania niestandardowe (zwykli podejrzani)

Jest to ogromny ból głowy dla doświadczonych programistów MSI zobaczyć ludzi polegać na kompleksie, nierzetelne działania niestandardowe dla funkcji, które są lepiej realizowane z wbudowanych funkcji MSI. Znaczna część wszystkich błędów MSI i problemów z wycofywaniem jest spowodowana błędnymi niestandardowymi działaniami, a większość innych błędów jest spowodowana błędnym użyciem projektu MSI (osobna lista zawiera listę typowych błędów MSI).

Oprócz wbudowanych funkcji MSI, coraz więcej niestandardowych funkcji jest teraz dostępnych za pośrednictwem nowego frameworku, takiego jak Wix - XML ​​sposób kompilacji plików MSI, więc w przypadku większości operacji coraz mniej potrzebna jest złożona logika niestandardowych działań.

MSI oferuje pełne wsparcie dla obsługi łączenia ustawień plików ini, czcionek, zmiennych środowiskowych, kluczy rejestru, informacji COM, skrótów, rozszerzeń plików, warunków uruchamiania, instalacji GAC, ODBC itp.

WIX idzie dalej z obsługą bardzo zaawansowanych funkcji, takich jak rozszerzenia serwera SQL, instalacje i konfiguracja IIS, liczniki wydajności, sprawdzanie DirectX i inne zadania związane z grą, generowanie obrazów natywnych .NET, COM +, sterowniki, reguły zapory ogniowej, rozszerzenia PowerShell, zamykanie aplikacji, zarządzanie użytkownikami, grupami, udziałami i wiele więcej. Nieco zaangażowane, ale znacznie bardziej niezawodne niż własne niestandardowe działania.

Unikaj niestandardowych działań za wszelką cenę, jeśli to możliwe

Aby spróbować spojrzeć z perspektywy: te wbudowane i gotowe rozwiązaniatworzone przez najlepszych dostępnych ekspertów ds. Wdrażania i są testowane przez tysiące, dziesiątki tysięcy, a może nawet miliony użytkowników (w przypadku wbudowanych elementów w MSI samo). Czy naprawdę uważasz, że możesz lepiej wykonywać własne działania? Użycie niestandardowej akcji powinno być rzadkim wydarzeniem i absolutnie konieczne jest osiągnięcie czegoś wyjątkowego dla instalowanego produktu . Musisz także napisać odpowiednie wsparcie wycofania, co jest dość skomplikowane.

Pisanie niestandardowej akcji jest prawie zawsze błędem , ale istnieją prawdziwe przypadki, kiedy naprawdę potrzebujesz elastyczności. Jak zawsze ważne jest, aby dobrze dobierać bitwy. Na początku może to być zabawne zadanie, ale prawdopodobnie napotkasz wiele nieoczekiwanych problemów i zmarnujesz dużo kosztownego czasu. Mam na myśli to bardzo poważnie. Sam napisałem pakiet niestandardowych akcji C ++ do użytku korporacyjnego (aby wyeliminować podatne na błędy niestandardowe akcje VBScript) - nie jest to spacer w parku i chociaż kodowanie może nie być najtrudniejsze na świecie, debugowanie i testowanie oraz podłączenie do rzeczywistego pliku MSI jest niezwykle zaangażowane. Trochę czasu na sprawdzenie, jakie gotowe opcje są dostępne, prawdopodobnie pozwoli zaoszczędzić tygodnie prac programistycznych i przyniesie znacznie większą niezawodność wdrażania.

Użyj sekwencji uruchamiania aplikacji

Bardzo ważną kwestią jest to, że przy uruchamianiu aplikacji powinna nastąpić duża konfiguracja aplikacji, gdy masz przewidywalny kontekst wykonawczy i dobrą obsługę błędów, a nie w konfiguracji, która jest uruchamiana tylko raz i zawiera bardzo skomplikowane personifikację , sekwencjonowanie , warunkowanie i środowisko wykonawcze złożoność .

Twoja konfiguracja nie powinna konfigurować aplikacji, powinna przygotować aplikację do konfiguracji przy pierwszym uruchomieniu . W szczególności twoja konfiguracja powinna zapisać wszystkie ustawienia wymagające podwyższonych uprawnień - pisząc do HKLM, rejestrując usługi, instalując na ścieżkach poszczególnych komputerów i wszelkie inne rzeczy, których aplikacja nie może pisać sama z normalnymi uprawnieniami użytkownika.

Jeśli jesteś programistą instalacji, powinieneś zaoferować udział w kodowaniu sekwencji uruchamiania aplikacji zamiast pisania niestandardowych akcji instalatora . Jeśli nic więcej, aby nie wyglądać, jakbyś próbował przekazać pieniądze komuś innemu. W tej sekwencji uruchamiania możesz napisać znacznie bardziej niezawodny i testowalny kod, który łatwiej jest uzyskać pomoc od personelu kontroli jakości (często nie rozumieją testów wdrażania, a także testów aplikacji).

Ustaw złożoność

Rdzeń złożoności konfiguracji koncentruje się na tym, że błędy kumulują się (zarządzasz procesem dostarczania, a nie tylko szybką ponowną kompilacją), błędy są bardzo trudne do debugowania (brak dostępu do systemów, w których występują błędy) i systemu docelowego stany różnią się pod każdym możliwym względem . Zapoznaj się z tą odpowiedzią, aby dokładniej omówić tę złożoność i sposób, w jaki systemy docelowe mogą się zachowywać w szokujący sposób: Instalator Windows i utworzenie WiX oraz Złożoność wdrażania (patrz w dół).

WiX (najlepsze rozwiązanie MSI do niektórych celów)

Przeczytaj to krótkie wprowadzenie do WiX, aby zapoznać się z opisem nowego sposobu kompilacji plików MSI opartego na XML. Tekstowe pliki źródłowe zapewniają znacznie lepszą kontrolę źródła niż wcześniej. Jest to darmowy zestaw narzędzi open source, który jest wysoce zalecany .

NB : Zobacz gdzie indziej w tym wątku szybki przegląd typowych problemów projektowych z plikami MSI - jest bardzo niekompletny, ale warto go przeczytać. Nie chciałem dodawać tego do tej odpowiedzi, ponieważ nie jest ona w 100% powiązana, ale do użytku w świecie rzeczywistym jest to kluczowy temat.


Niektóre podstawowe informacje MSI dla sys-admins:

(wybacz bezwstydną „promocję” - jest to dla łatwego dostępu i wyszukiwania)

Oto tylko kilka linków do tematów, które mogą być pomocne dla administratorów systemu w ich wysiłkach kontrolowania wdrożenia w swoich sieciach:

Specjalne tematy instruktażowe:

Tematy koncepcyjne / najlepsze praktyki:

Stein Åsmul
źródło
24

Ta odpowiedź jest w dużej mierze w toku i zawiera ogólny zarys. Dodatki, pytania i aktualizacje są mile widziane. Ta lista nie jest wyczerpująca. Dodaj komentarz z informacjami o kłopotliwych pakietach.


Typowe problemy i wady projektowe widoczne w pakietach MSI

Muszę również ostrzec, że wiele plików MSI zawiera błędy, czasem poważne, ale przeszkolone programy pakujące aplikacje będą w stanie to wykryć iw większości przypadków wyeliminować problem. Dodaję to jako osobną odpowiedź, ponieważ zasadniczo odpowiada na inne pytanie, ale uważam, że ma to znaczenie w tym samym wątku.

Szczegóły techniczne związane z MSI są bardzo skomplikowane . Na poziomie podstawowym chodzi o rozkład plików i ustawień rejestru na komponenty (instalacja atomowa) i funkcje (części aplikacji wybierane przez użytkownika do zainstalowania, na przykład funkcja słownika). Istnieje szereg zasad najlepszych praktyk dotyczących dzielenia komponentów, a błędy w plikach MSI tutaj są liczne. Błędy te są zazwyczaj obsługiwane przez standaryzację korzystania z „głównych aktualizacji”.

Rzeczywista instalacja jest wykonywana w kilku sekwencjach instalacyjnych, niektóre z podwyższonymi uprawnieniami . Wszystkie te rzeczy są zdefiniowane w tabelach baz danych, i tutaj MSI jest strasznie skomplikowane w zrozumieniu i obsłudze. W sekwencjach instalacyjnych rozłożone są akcje standardowe i niestandardowe. Standardowe działania zostały zaprojektowane przez Microsoft i muszą mieć miejsce (sekwencja może być czasami modyfikowana). Akcje niestandardowe są dostępne dla dostawców w celu wykonania niestandardowej logiki nieobjętej przez sam MSI. Mogą być w formie skryptu lub skompilowanej. Niestandardowe akcje mogą być natychmiastowe (uruchamiane jednocześnie, nie powinny zmieniać systemu, ale często tak się dzieje) lub odraczane (zapisywane w skrypcie wykonania, który jest następnie wykonywany jako transakcja, a zatem obsługuje wycofywanie zmian).

Typowe błędy w MSI to (bez szczególnej kolejności - i przedstawiane jako prawdziwy bałagan naprawdę):

  • błędy tworzenia komponentu (nieprzestrzeganie najlepszych praktyk). Może to powodować problemy z łataniem i aktualizacjami z tajemniczymi objawami, takimi jak brakujące pliki i ustawienia lub łatki, które bombardują bezsensownymi błędami. Aby nadmiernie uprościć, należy użyć jednego pliku na komponent, chyba że liczba plików jest ogromna.
  • problemy z aktualizacją związane z nadpisywaniem lub resetowaniem danych użytkownika. Zobacz więcej szczegółów poniżej.
  • niepoprawne planowanie niestandardowych akcji poza „sekcją transakcyjną” sekwencji instalacyjnych lub niestandardowe akcje niewłaściwego typu są umieszczane niepoprawnie. Powoduje to często niepowodzenie akcji (brak podwyższonych uprawnień), gdy są uruchamiane zdalnie za pośrednictwem systemów wdrażania, a wycofywanie jest skutecznie unieruchomione, ponieważ wycofywane są tylko transakcje. Transakcja Instalatora Windows (pomyśl transakcję bazy danych) działa pomiędzy standardowymi akcjami InstallInitialize i InstallFinalize w głównej sekwencji instalacyjnej i działa z podwyższonymi prawami . Wszystkie zmiany w systemie mają nastąpić w tej transakcji - wszystko inne jest błędne (ale niestety dość powszechne).
  • użycie niestandardowych działań w trybie natychmiastowym w celu wprowadzenia zmian w systemie poza sekwencją instalacji, która została przeprowadzona w transakcji . To zrywa obsługę wycofywania i generalnie powoduje błędy bezpieczeństwa, ponieważ akcje niestandardowe w trybie natychmiastowym nie są uruchamiane z podwyższonymi uprawnieniami użytkownika, niezależnie od tego, gdzie są umieszczone w sekwencjach instalacyjnych.
  • błędne projekty, które powodują powtarzalne cykle samonaprawy, bez wyraźnego powodu. Oto kolejny artykuł na ten temat z installsite.org
  • akcje niestandardowe , które nie przestrzegają tłumienia interfejsu GUI w trybie instalacji nienadzorowanej, mogą wyświetlać modalne okna dialogowe, które powodują całkowite niepowodzenie wdrażania po cichym uruchomieniu. Ten problem wraz z ogólną różnicą między trybem cichym a trybem interaktywnym jest opisany bardziej szczegółowo tutaj (nieco bardziej rozwlekły i długotrwały): Odinstaluj z Panelu sterowania różni się od Usuń z .msi
  • niektóre niestandardowe działania w błędnie utworzonych pakietach są wstawiane tylko w sekwencji interfejsu użytkownika . To powoduje, że nie będą działać w trybie cichej instalacji. Jest to poważne w przypadku wdrażania korporacyjnego, ponieważ instalacja cicha jest tutaj używana prawie wyłącznie. Ten problem może również wpływać na dezinstalację, co oznacza, że ​​może być konieczne interaktywne uruchomienie dezinstalacji w celu odinstalowania, aby zapewnić uruchomienie wszystkich niestandardowych akcji czyszczenia. Ponownie zobacz link w poprzednim punkcie, aby uzyskać dłuższy opis poziomów interfejsu użytkownika.
  • Instalator zawiera pliki, które nie są przeznaczone do wdrożenia w miejscu, w którym instalują. Zwykle pliki systemowe, które powinny być instalowane obok siebie w folderze zespołu winsxs.
  • niska prędkość instalacji to kolejny „problem”, o którym wiele osób informuje o MSI. Oto kilka wskazówek na ten temat . Ogólnie Instalator Windows ma sporo narzutu z powodu wysokich wymagań rejestracyjnych w rejestrze dla tego, co jest instalowane.
  • nadpisywanie dostosowanych informacji lub udostępnionych plików danych . Może się to zdarzyć, jeśli plik INI jest zainstalowany za pośrednictwem tabeli plików, a nie na przykład tabeli IniFile. W tym drugim przypadku jest traktowany jak „transakcja zmiany”, w pierwszym przypadku jest to operacja zamiany pliku, co jest ogólnie błędne, chyba że plik INI zawiera niestandardowe formatowanie lub duże sekcje komentarzy, które chcesz wdrożyć z plikiem (wspólne dla niektórych narzędzia deweloperskie).
  • to skomplikowane zasady nadpisywania plików może spowodować pliki mają być zastępowane nieumyślnie, lub nie są aktualizowane w ogóle - jest to klasyczny MSI problem. Przeczytaj ten artykuł, aby dowiedzieć się, jak wymusić zastąpienie pliku, który nie zostanie zaktualizowany . Reguły mogą być nieco poprawione przez niestandardowe ustawienia właściwości REINSTALLMODE ustawionej na poziomie wiersza poleceń msiexec.exe (nadpisuj starsze wersje, nadpisuj równe wersje, nadpisuj dowolną wersję itp.) I działają one inaczej w przypadku plików danych i plików wersjonowanych. Szczegóły w zestawie SDK . Zrozumienie tego jest bardzo ważne i jest to projekt, któremu często nie podoba się nawet zrozumienie.
  • samodzielna rejestracja plików COM podczas instalacji może wywoływać ostrzeżenia bezpieczeństwa lub powodować problemy na różne sposoby. Sprawdź ten artykuł: samodzielna rejestracja została uznana za szkodliwą .
  • odmiennym problemem związanym z zastępowaniem plików jest sytuacja, w której duże uaktualnienie (które odinstalowuje i ponownie instaluje produkt) odinstalowuje zmodyfikowane pliki i ponownie instaluje wersje domyślne. W takich przypadkach treść wygląda na przywróconą lub zastąpioną, gdy w rzeczywistości została najpierw odinstalowana, a następnie ponownie zainstalowana.
  • usługi działające z niestandardowymi poświadczeniami użytkownika mogą utracić swoje poświadczenia podczas głównych scenariuszy aktualizacji, a także przywrócić plik ustawień (wydają się) przywracać ustawienia domyślne (zostały one naprawdę odinstalowane i ponownie zainstalowane). Dla przypomnienia: moim zdaniem usługi działające z poświadczeniami użytkowników są przede wszystkim wadą projektową.
  • właściwości publiczne nie są poprawnie przekazywane od klienta do procesu serwera, co uniemożliwia wykonanie niestandardowych działań zgodnie z oczekiwaniami. Obejmuje to aktualizację właściwości SecureCustomActionProperties.
  • Niektóre aplikacje nie mogą działać poprawnie dla innych użytkowników niż ten, który pierwotnie zainstalował instalację. Jest to poważny błąd projektowy, ale na ogół może go naprawić doświadczony program pakujący aplikacje korzystający z samonaprawiania lub ActiveSetup w celu dodania kluczy rejestru HKCU i plików profilu użytkownika . Jest to dość złożony temat i może wymagać odrobiny czarnej sztuki, aby zacząć działać. Dla przypomnienia: moim zdaniem prawdziwym rozwiązaniem jest zmiana samej aplikacji, aby móc zainicjować wszystkie ustawienia dla poszczególnych użytkowników na podstawie ustawień domyślnych i szablonów skopiowanych z lokalizacji na komputer lub na podstawie domyślnych ustawień wewnętrznych aplikacji (z kod źródłowy).
  • Niektóre pliki MSI psują bezpieczeństwo zainstalowanych plików , ustawiając pełne prawa do odczytu / zapisu dla nie-administratorów tutaj, tam i wszędzie. Innym razem aplikacja przestaje działać w nowszych wersjach systemu Windows z powodu braku uprawnień. Pakiety aplikacji często spotykają się z analizą potrzeb niestandardowych uprawnień aplikacji. Zazwyczaj wymagane jest dodatkowe zezwolenie w HKLM lub gdzieś w% ProgramFiles%
  • Niektóre konfiguracje Installshield w ciągu dnia próbowałyby połączyć się z Internetem podczas instalacji. Jest to okropne w przypadku scenariuszy korporacyjnych, w których wdrażanie jest ściśle kontrolowane, a instalator nigdy nie będzie mógł pobierać nowych treści bezpośrednio z Internetu.
  • Kolejny problem z siecią występuje, gdy konfiguracje próbują pokazać GUI, w którym ludzie wprowadzają dane, które są sprawdzane przez Internet podczas instalacji, lub po prostu pokazują zawartość na żywo ze swojej strony internetowej. Zazwyczaj są to adresy e-mail, informacje kontaktowe, klucze licencyjne i takie rzeczy. Połączenie może zakończyć się niepowodzeniem z wielu powodów, często z powodu braku konfiguracji proxy w środowiskach korporacyjnych (nie ma bezpośredniego połączenia z Internetem, cały ruch internetowy jest kierowany przez określony serwer pamięci podręcznej i każdy proces musi podać poświadczenia, aby przejść przez zaporę) . Oto artykuł na temat zagrożeń związanych z sprawdzaniem poprawności licencji przez instalację .
  • Installshield służy do instalowania środowiska wykonawczego dla jego języka Installcript . Ta wstępnie wymagana konfiguracja była na ogół zawarta w pliku setup.exe i była legendarnym źródłem problemów . Było wiele wersji, kilka niezgodności i wiele błędów runtime . Od wersji 12 (lub później) środowisko wykonawcze jest teraz instalowane niezawodnie i albo kompiluje się do natywnego, albo działa w trybie piaskownicy (nie jestem pewien, który z nich - prawdopodobnie w piaskownicy) w niezawodny sposób. Starsze konfiguracje Installshield mogą jednak wyświetlać ten problem z wdrażaniem. Istnieje stara witryna pomocy technicznej firmy Installshield dotycząca takich problemów: http://consumer.installshield.com/common.asp
  • Kilka konfiguracji może wyświetlać nieprawidłowe zachowanie podczas instalacji lub sporadyczne błędy, gdy są uruchamiane na komputerach skonfigurowanych dla innych języków niż angielski, a nawet gdy uruchamiane są zlokalizowane (przetłumaczone) wersje konfiguracji na komputerach w języku angielskim. Może to być wyłącznie awaria środowiska wykonawczego lub przypadki, w których zlokalizowane okna dialogowe zawierają odcięty tekst lub błędne formatowanie lub błędne tłumaczenie lub wiele innych rodzajów błędów związanych z lokalizacją języka- cały zakres wiedzy specjalistycznej (tłumaczenie tekstu na obrazy, tłumaczenie samego oprogramowania, tłumaczenie materiałów marketingowych, radzenie sobie z międzynarodowymi prośbami o wsparcie, dostosowanie do ustawień językowych w systemie operacyjnym itp.). Niektóre języki wymagają zmiany całej aplikacji, aby uwzględnić ich specyfikę językową - typowymi problemami są makra łańcuchowe i ustawienia strony kodowej, przy czym ten drugi problem jest mniejszy z wprowadzeniem Unicode. Zobacz przykładowy zrzut ekranu z narzędzia do tłumaczenia .
  • Prawie wszystkie konfiguracje nie spełniają kilku wbudowanych testów sprawdzania poprawności, które są dostępne do testowania jakości pakietów MSI. Zobacz ten artykuł, aby uzyskać praktyczny przykład walidacji.
  • Czasami aktualizacje nie udają się w przypadku MSI z powodu faktu, że tylko 3 cyfry numeru wersji MSI są sprawdzane podczas dużych skanów aktualizacji.
  • Instalacja plików INI jest wbudowaną funkcją Instalatora Windows. Wpisy można dodawać, usuwać, scalać lub przetwarzać w dowolny wymagany sposób. Jednak często zdarza się, że pliki INI instaluje się jako plik zamiast wartości podzielonych na segmenty. Może to spowodować zastąpienie pliku INI podczas ponownej instalacji zamiast aktualizacji. Bardzo częsty problem MSI.
  • Powyższy problem dotyczy również aplikacji .NET i ich plików Config.xml. W takim przypadku MSI NIE ma wbudowanego sposobu szczegółowej aktualizacji zawartości i albo musisz zakodować aktualizację za pomocą niestandardowej akcji, albo zastąpić cały plik podczas instalacji. Wix może mieć do tego nowe funkcje, ale silnik Instalatora Windows nie ma tej wbudowanej funkcji.

Istnieje wiele subtelniejszych błędów i kilka większych, typowych problemów, o których zapomnę.

Sprawdź artykuł dotyczący najlepszych praktyk Instalatora Windows w witrynie MSDN .

Stein Åsmul
źródło
5

Korzystanie z MSI ułatwia także łatanie (pliki MSP) i uaktualnienia. MSI stosuje koncepcję unikalnych kodów produktów i aktualizacji, co ułatwia cały proces.

Niektóre systemy wdrażania (CA Unicenter Software Delivery to jeden przykład) mogą również zrozumieć MSI w specjalny sposób, co pozwala im na lepszą integrację z systemem wdrażania. Na przykład możesz wprowadzić plik MSI do biblioteki oprogramowania systemu wdrażania, a on automatycznie wykryje różne funkcje produktu i automatycznie zezwoli na znacznie bardziej szczegółowe działania niestandardowe (instalacja lokalna, weryfikacja, naprawa itp.) I rejestrowanie.

Samoleczenie / naprawa to także duży plus dla MSI.

Wayne Koorts
źródło
2

Zapoznaj się również z plikiem XML Instalatora Windows typu open source , „zestawem narzędzi, który buduje pakiety instalacyjne systemu Windows z kodu źródłowego XML. Zestaw narzędzi obsługuje środowisko wiersza poleceń, które programiści mogą zintegrować z procesami kompilacji w celu zbudowania pakietów instalacyjnych MSI i MSM”. Jest to wykorzystywane przez MS do przygotowania kilku głównych pakietów oprogramowania.

Ian Kelling
źródło
0

możesz przeprowadzać transformacje - teoretycznie możesz dużo dostosować, jeśli program został odpowiednio zapakowany przez dostawcę, możesz dokonać w pełni zautomatyzowanego wdrożenia bez interakcji z użytkownikiem końcowym - co jest bardzo pomocne, gdy chcesz ustandaryzować środowisko Windows i mieć więcej niż garść komputerów.

aby zobaczyć, co ludzie robią z msis [lub instalacją nienadzorowaną], odwiedź na przykład witrynę i fora.

pQd
źródło