Wat is het MSI-bestandsformaat?
Bestanden met de extensie .msi bevatten een installatiepakket voor een applicatie of een driverpakket voor Microsoft Windows. .msi-bestanden hebben een gestandaardiseerde structuur gedefinieerd door metadata en bevatten alle bronnen die nodig zijn om een applicatie te installeren. De naam MSI komt van Microsoft Installer, de oorspronkelijke naam van de technologie voordat Microsoft deze hernoemde naar Windows Installer.
MSI-pakketstructuur
.msi-pakketten zijn relationele databases die zijn opgeslagen in het OLE2 Compound File Binary-formaat - dezelfde container die wordt gebruikt door verouderde binaire Office-documenten. Vanwege deze gedeelde container zijn de eerste acht magic bytes (D0 CF 11 E0 A1 B1 1A E1) niet uniek voor .msi; het formaat onderscheidt zich door zijn interne databasestreams zoals _Tables en _Columns. Elk pakket is onderverdeeld in:
- Een of meer te installeren producten
- Productcomponenten - de atomaire eenheden van installatie (bestanden, registersleutels, snelkoppelingen)
- Features - grotere hiërarchische structuren bestaande uit componenten; gebruikers kunnen optionele functies kiezen tijdens de installatie
- Key paths voor componenten - kritieke elementen die worden geverifieerd tijdens de installatie of de-installatie van componenten
Hoewel een enkel installatieprogramma meerdere producten kan bundelen, kan het niet standaard afhankelijkheden tussen producten verifiëren. Afhankelijkheidsbeheer wordt afgehandeld door de-installatietools of via de GUI. .msi blijft het dominante installatieformaat voor zakelijke en verouderde Windows-software.
Windows Installer-pakketten maken en gebruiken
.msi-pakketten worden gemaakt met speciale tools zoals de WiX Toolset, Orca (onderdeel van de Windows SDK voor het inspecteren en bewerken van databases), of commerciële producten. Het installatieproces wordt aangestuurd door msiexec.exe en is verdeeld in drie fasen:
- Gebruikersinterface - gebruikers configureren installatie-opties
- Uitvoering - de feitelijke installatie, die in *onmiddellijke* of *uitgestelde* (deferred) modus draait
- Rollback - als de installatie mislukt, wordt de transactie teruggedraaid en blijven er geen systeemwijzigingen achter
De inhoud van een .msi-pakket kan worden uitgepakt zonder het installatieprogramma uit te voeren met 7-Zip of via msiexec /a (administratieve installatie).
Versies van Windows Installer
.msi-pakketten debuteerden met Office 2000 in 1999 (Windows Installer 1.0); de runtime was ook ingebouwd in Windows 2000. Versie 5.0 werd in 2009 uitgebracht samen met Windows 7 en Windows Server 2008 R2. Nauw verwante formaten zijn .msp (patchpakketten die binaire verschillen leveren voor geïnstalleerde producten) en .mst-transformbestanden die het gedrag van het installatieprogramma tijdens runtime wijzigen. De nieuwere .msix-standaard, geïntroduceerd in 2018, combineert .msi, .appx, App-V en ClickOnce-technologieën voor verbeterde beveiliging, sandboxing en distributie via de Store - maar .msi wordt nog steeds veelvuldig ingezet voor zakelijke en traditionele desktopsoftware. Payload-bestanden binnen een .msi zijn doorgaans gecomprimeerd als .cab-streams die in de database zijn ingebed.
Beveiliging & veiligheid
RISICO: MEDIUMEen MSI is een betrouwbaar ogend installatieprogramma, wat het een favoriete vermomming voor malware maakt: aanvallers verspreiden MSI's met trojans (vaak met kwaadaardige Custom Actions die code uitvoeren tijdens de installatie) of nep-„software-updates”. Installeer MSI's alleen vanaf de officiële site van de leverancier en geef de voorkeur aan ondertekende pakketten - rechtermuisknop > Eigenschappen > Digitale handtekeningen toont de uitgever; een niet-ondertekende MSI van een onbekende bron is een waarschuwingssignaal. Omdat MSI draait met installatieprivileges, kan een kwaadaardige MSI alles doen wat een beheerder kan. Met de hernoem/7-Zip-truc kunt u de inhoud inspecteren voordat u deze uitvoert.
Formaatdetails
in een notendopProgramma's die MSI-bestanden openen
Technische details
diepe specificaties| Containerformaat | OLE2 Compound File Binary (CFBF) - dezelfde buitenstructuur als verouderde binaire .doc- en .xls-Office-bestanden |
| Magic bytes (offset 0) | D0 CF 11 E0 A1 B1 1A E1 - OLE2-handtekening gedeeld met andere Compound Documents; niet uniek voor MSI alleen |
| MIME-type | application/x-msi |
| Interne databasetabellen | Relationele tabellen met een vast schema, waaronder File, Registry, Component, Feature, Property en CustomAction |
| Payload-opslag | Bestanden gecomprimeerd als Cabinet (.cab)-streams ingebed in de database of gerefereerd als externe .cab-archieven |
| Compressie-algoritmen | Cabinet-streams gebruiken LZX- of MSZIP-compressie (zlib-compatibel) |
| Transactiemodel | Volledige rollback bij mislukking - alle bestands- en registerwijzigingen worden ongedaan gemaakt via een shadow-copy scriptmechanisme |
| Execution engine | msiexec.exe (ingebouwd in Windows); installatie: /i, verwijderen: /x {ProductCode}, herstellen: /f, admin uitpakken: /a |
| Privilegemodel | Ondersteunt installatiemodi per machine (verhoogde rechten, ALLUSERS=1) en per gebruiker (geen verhoogde rechten) |
| Geadverteerde installatie | COM-classes en snelkoppelingen kunnen worden geadverteerd - geregistreerd maar niet geïmplementeerd tot het eerste gebruik (installatie op aanvraag) |
| Patch-ondersteuning | .msp-patchbestanden leveren binaire verschillen en aanvullende tabelgegevens gericht op een specifieke MSI-productcode |
| Transform-ondersteuning | .mst-transformbestanden overschrijven eigenschapswaarden en tabelgegevens tijdens de installatie zonder de basis-.msi te wijzigen |
| Merge modules | .msm-merge-modulepakketten kapselen herbruikbare componenten in voor opname in meerdere .msi-databases |
| Custom actions | Logica voor en na de installatie kan VBScript, JScript, DLL-entrypoints of externe EXE-processen uitvoeren |
| De-installatie registratie | Schrijft automatisch HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{ProductCode} vermeldingen |
| Runtime-versies | Windows Installer 1.0 (1999) tot en met 5.0 (2009, gebundeld met Windows 7 en Server 2008 R2) |
| Uitgebracht | 2000 (Windows Installer 1.0, shipped with Office 2000 / Windows 2000) |
| Specificatie | learn.microsoft.com |
MSI conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over MSI-bestanden.