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ązania są tworzone 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: