Co to jest format pliku MSI?
Pliki z rozszerzeniem .msi przechowują pakiet instalacyjny aplikacji lub pakiet sterowników dla systemu Microsoft Windows. Pliki .msi mają ustandaryzowaną strukturę zdefiniowaną przez metadane i zawierają wszystkie zasoby potrzebne do zainstalowania aplikacji. Nazwa MSI pochodzi od Microsoft Installer, pierwotnej nazwy technologii, zanim Microsoft zmienił jej markę na Windows Installer.
Struktura pakietu MSI
Pakiety .msi to relacyjne bazy danych zapisane w formacie OLE2 Compound File Binary - tym samym kontenerze, który był używany przez starsze binarne dokumenty Office. Ze względu na ten wspólny kontener, pierwsze osiem magicznych bajtów (D0 CF 11 E0 A1 B1 1A E1) nie jest unikalnych dla .msi; format ten wyróżnia się wewnętrznymi strumieniami bazy danych, takimi jak _Tables i _Columns. Każdy pakiet jest podzielony na:
- Jeden lub więcej produktów do zainstalowania
- Komponenty produktu - atomowe jednostki instalacji (pliki, klucze rejestru, skróty)
- Funkcje (Features) - większe struktury hierarchiczne składające się z komponentów; użytkownicy mogą wybierać opcjonalne funkcje podczas konfiguracji
- Ścieżki kluczowe (Key paths) dla komponentów - krytyczne elementy weryfikowane podczas instalacji lub odinstalowywania komponentu
Chociaż pojedynczy instalator może łączyć wiele produktów, nie może on natywnie weryfikować zależności międzyproduktowych. Zarządzanie zależnościami odbywa się za pomocą narzędzi odinstalowujących lub poprzez GUI. .msi pozostaje dominującym formatem instalatora dla oprogramowania korporacyjnego i starszego oprogramowania Windows.
Tworzenie i używanie pakietów Windows Installer
Pakiety .msi są tworzone za pomocą dedykowanych narzędzi, takich jak WiX Toolset, Orca (dołączona do Windows SDK do inspekcji i edycji baz danych) lub komercyjnych produktów autorskich. Proces instalacji jest sterowany przez msiexec.exe i podzielony na trzy fazy:
- Interfejs użytkownika - użytkownicy konfigurują opcje instalacji
- Wykonanie - właściwa instalacja, działająca w trybie *natychmiastowym* (immediate) lub *odroczonym* (deferred)
- Wycofanie (Rollback) - jeśli instalacja zakończy się niepowodzeniem, transakcja jest wycofywana i żadne zmiany w systemie nie zostają zachowane
Zawartość pakietu .msi można wyodrębnić bez uruchamiania instalatora za pomocą programu 7-Zip lub poprzez polecenie msiexec /a (instalacja administracyjna).
Wersje Windows Installer
Pakiety .msi zadebiutowały wraz z pakietem Office 2000 w 1999 roku (Windows Installer 1.0); środowisko wykonawcze zostało również wbudowane w system Windows 2000. Wersja 5.0 została wydana w 2009 roku wraz z systemem Windows 7 i Windows Server 2008 R2. Ściśle powiązane formaty obejmują .msp (pakiety poprawek dostarczające binarne różnice do zainstalowanych produktów) oraz pliki transformacji .mst, które modyfikują zachowanie instalatora w czasie wykonywania. Nowszy standard .msix, wprowadzony w 2018 roku, łączy technologie .msi, .appx, App-V i ClickOnce w celu poprawy bezpieczeństwa, piaskownicy (sandboxing) i dystrybucji w Store - jednak .msi nadal jest szeroko stosowany w oprogramowaniu korporacyjnym i tradycyjnym oprogramowaniu desktopowym. Pliki danych wewnątrz .msi są zazwyczaj skompresowane jako strumienie .cab osadzone w bazie danych.
Bezpieczeństwo
RYZYKO: MEDIUMPlik MSI to instalator wyglądający na godny zaufania, co czyni go ulubionym kamuflażem dla złośliwego oprogramowania: atakujący przesyłają zainfekowane pliki MSI (często ze złośliwymi akcjami niestandardowymi, które uruchamiają kod podczas instalacji) lub fałszywe „aktualizacje oprogramowania”. Instaluj pliki MSI tylko z oficjalnej strony dostawcy i preferuj podpisane pakiety - kliknięcie prawym przyciskiem myszy > Właściwości > Podpisy cyfrowe pokazuje wydawcę; niepodpisany plik MSI z nieznanego źródła to sygnał ostrzegawczy. Ponieważ MSI działa z uprawnieniami instalatora, złośliwy plik może zrobić wszystko, co administrator. Sztuczka ze zmianą nazwy/7-Zip pozwala sprawdzić zawartość przed uruchomieniem.
Szczegóły formatu
w pigułceProgramy otwierające pliki MSI
Szczegóły techniczne
specyfikacja| Format kontenera | OLE2 Compound File Binary (CFBF) - ta sama struktura zewnętrzna co starsze binarne pliki Office .doc i .xls |
| Magiczne bajty (offset 0) | D0 CF 11 E0 A1 B1 1A E1 - sygnatura OLE2 współdzielona z innymi dokumentami złożonymi; nie jest unikalna tylko dla MSI |
| Typ MIME | application/x-msi |
| Wewnętrzne tabele bazy danych | Relacyjne tabele o stałym schemacie, w tym File, Registry, Component, Feature, Property i CustomAction |
| Przechowywanie danych | Pliki skompresowane jako strumienie Cabinet (.cab) osadzone w bazie danych lub przywoływane jako zewnętrzne archiwa .cab |
| Algorytmy kompresji | Strumienie Cabinet używają kompresji LZX lub MSZIP (zgodnej z zlib) |
| Model transakcyjny | Pełne wycofanie w przypadku niepowodzenia - wszystkie zmiany w plikach i rejestrze są cofane za pomocą mechanizmu skryptowego kopii w tle |
| Silnik wykonawczy | msiexec.exe (wbudowany w Windows); instalacja: /i, usuwanie: /x {ProductCode}, naprawa: /f, wyodrębnianie administracyjne: /a |
| Model uprawnień | Obsługuje tryby instalacji na maszynę (podwyższone uprawnienia, ALLUSERS=1) oraz na użytkownika (bez podwyższonych uprawnień) |
| Instalacja anonsowana | Klasy COM i skróty mogą być anonsowane - zarejestrowane, ale nie wdrożone do czasu pierwszego użycia (instalacja na żądanie) |
| Obsługa poprawek | Pliki poprawek .msp dostarczają binarne różnice i uzupełniające dane tabel skierowane do konkretnego kodu produktu MSI |
| Obsługa transformacji | Pliki transformacji .mst nadpisują wartości właściwości i dane tabel w czasie instalacji bez modyfikowania bazowego pliku .msi |
| Moduły scalania | Pakiety modułów scalania .msm hermetyzują komponenty wielokrotnego użytku w celu włączenia ich do wielu baz danych .msi |
| Akcje niestandardowe | Logika przed- i poinstalacyjna może wykonywać skrypty VBScript, JScript, punkty wejścia DLL lub zewnętrzne procesy EXE |
| Rejestracja odinstalowania | Automatycznie zapisuje wpisy w HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{ProductCode} |
| Wersje środowiska wykonawczego | Windows Installer 1.0 (1999) do 5.0 (2009, dołączony do Windows 7 i Server 2008 R2) |
| Wydano | 2000 (Windows Installer 1.0, shipped with Office 2000 / Windows 2000) |
| Specyfikacja | learn.microsoft.com |
Konwersje MSI
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki MSI.