Hva er MSI-filformatet?
Filer med filendelsen .msi lagrer en installasjonspakke for et program eller en driverpakke for Microsoft Windows. .msi-filer har en standardisert struktur definert av metadata og inneholder alle ressurser som trengs for å installere en applikasjon. Navnet MSI kommer fra Microsoft Installer, det opprinnelige navnet på teknologien før Microsoft endret navnet til Windows Installer.
Struktur for MSI-pakker
.msi-pakker er relasjonsdatabaser lagret i formatet OLE2 Compound File Binary - den samme beholderen som brukes av eldre binære Office-dokumenter. På grunn av denne felles beholderen er de første åtte «magic bytes» (D0 CF 11 E0 A1 B1 1A E1) ikke unike for .msi; formatet skilles ut ved hjelp av interne databasestrømmer som _Tables og _Columns. Hver pakke er delt inn i:
- Ett eller flere produkter som skal installeres
- Produktkomponenter - de atomære enhetene for installasjon (filer, registernøkler, snarveier)
- Funksjoner (Features) - større hierarkiske strukturer bestående av komponenter; brukere kan velge valgfrie funksjoner under oppsettet
- Nøkkelstier (Key paths) for komponenter - kritiske elementer som verifiseres under installasjon eller avinstallasjon av komponenter
Selv om et enkelt installasjonsprogram kan bunte sammen flere produkter, kan det ikke naturlig verifisere avhengigheter på tvers av produkter. Håndtering av avhengigheter gjøres av avinstalleringsverktøy eller via det grafiske brukergrensesnittet. .msi er fortsatt det dominerende installasjonsformatet for bedriftsprogramvare og eldre Windows-programvare.
Oppretting og bruk av Windows Installer-pakker
.msi-pakker blir laget med dedikerte verktøy som WiX Toolset, Orca (inkludert i Windows SDK for inspeksjon og redigering av databaser), eller kommersielle utviklingsprodukter. Installasjonsprosessen styres av msiexec.exe og er delt inn i tre faser:
- Brukergrensesnitt - brukere konfigurerer installasjonsalternativer
- Utførelse - selve installasjonen, som kjører i enten *umiddelbar* eller *utsatt* (deferred) modus
- Tilbakerulling - hvis installasjonen mislykkes, blir transaksjonen rullet tilbake og ingen systemendringer vedvarer
Innholdet i en .msi-pakke kan pakkes ut uten å kjøre installasjonsprogrammet ved å bruke 7-Zip eller via msiexec /a (administrativ installasjon).
Versjoner av Windows Installer
.msi-pakker debuterte med Office 2000 i 1999 (Windows Installer 1.0); kjøretidsmiljøet var også innebygd i Windows 2000. Versjon 5.0 ble lansert i 2009 sammen med Windows 7 og Windows Server 2008 R2. Nært beslektede formater inkluderer .msp (oppdateringspakker som leverer binære differanser til installerte produkter) og .mst-transformasjonsfiler som endrer installasjonsprogrammets oppførsel ved kjøring. Den nyere .msix-standarden, introdusert i 2018, kombinerer .msi, .appx, App-V og ClickOnce-teknologier for forbedret sikkerhet, sandkassing og distribusjon via Store - men .msi fortsetter å være mye brukt for bedrifter og tradisjonell skrivebordsprogramvare. Nyttelastfiler inne i en .msi er vanligvis komprimert som .cab-strømmer innebygd i databasen.
Sikkerhet og trygghet
RISIKO: MEDIUMEn MSI er et installasjonsprogram som ser pålitelig ut, noe som gjør det til en yndet forkledning for skadevare: angripere sender infiserte MSI-filer (ofte med ondsinnede Custom Actions som kjører kode under installasjon) eller falske «programvareoppdateringer». Installer MSI-filer kun fra den offisielle leverandørens nettsted, og foretrekk signerte pakker - høyreklikk > Egenskaper > Digitale signaturer viser utgiveren; en usignert MSI fra en ukjent kilde er et varselstegn. Fordi MSI kjører med installatørprivilegier, kan en ondsinnet fil gjøre alt en administrator kan. Trikset med å endre navn eller bruke 7-Zip lar deg inspisere innholdet før du kjører den.
Formatdetaljer
i et nøtteskallProgrammer som åpner MSI-filer
Tekniske detaljer
dyp spesifikasjon| Beholderformat | OLE2 Compound File Binary (CFBF) - samme ytre struktur som eldre binære .doc- og .xls-Office-filer |
| Magic bytes (offset 0) | D0 CF 11 E0 A1 B1 1A E1 - OLE2-signatur delt med andre sammensatte dokumenter; ikke unik for MSI alene |
| MIME-type | application/x-msi |
| Interne databasetabeller | Relasjonstabeller med fast skjema, inkludert File, Registry, Component, Feature, Property og CustomAction |
| Lagring av nyttelast | Filer komprimert som Cabinet (.cab)-strømmer innebygd i databasen eller referert til som eksterne .cab-arkiver |
| Komprimeringsalgoritmer | Cabinet-strømmer bruker LZX- eller MSZIP-komprimering (zlib-kompatibel) |
| Transaksjonsmodell | Full tilbakerulling ved feil - alle fil- og registerendringer angres via en skriptmekanisme for skyggekopiering |
| Kjøremotor | msiexec.exe (innebygd i Windows); installer: /i, fjern: /x {ProductCode}, reparer: /f, admin-utpakking: /a |
| Privilegiemodell | Støtter installasjonsmoduser per maskin (opphøyd, ALLUSERS=1) og per bruker (ikke-opphøyd) |
| Annonsert installasjon | COM-klasser og snarveier kan annonseres - registrert, men ikke distribuert før første bruk (installasjon ved behov) |
| Støtte for oppdateringer | .msp-oppdateringsfiler leverer binære differanser og supplerende tabelldata rettet mot en spesifikk MSI-produktkode |
| Støtte for transformasjoner | .mst-transformasjonsfiler overstyrer egenskapsverdier og tabelldata ved installasjonstidspunkt uten å endre selve .msi-filen |
| Sammenslåingsmoduler | .msm-modulpakker kapsler inn gjenbrukbare komponenter for inkludering i flere .msi-databaser |
| Egendefinerte handlinger | Logikk før og etter installasjon kan utføre VBScript, JScript, DLL-inngangspunkter eller eksterne EXE-prosesser |
| Avinstalleringsregistrering | Skriver automatisk oppføringer i HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{ProductCode} |
| Kjøretidsversjoner | Windows Installer 1.0 (1999) til 5.0 (2009, buntet med Windows 7 og Server 2008 R2) |
| Utgitt | 2000 (Windows Installer 1.0, shipped with Office 2000 / Windows 2000) |
| Spesifikasjon | learn.microsoft.com |
MSI-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om MSI-filer.