Vad är filformatet MSI?
Filer med filändelsen .msi lagrar ett installationspaket för en applikation eller ett drivrutinspaket för Microsoft Windows. .msi-filer har en standardiserad struktur definierad av metadata och innehåller alla resurser som behövs för att installera en applikation. Namnet MSI kommer från Microsoft Installer, det ursprungliga namnet på tekniken innan Microsoft döpte om den till Windows Installer.
Struktur för MSI-paket
.msi-paket är relationella databaser sparade i formatet OLE2 Compound File Binary - samma behållare som används av äldre binära Office-dokument. På grund av denna delade behållare är de första åtta magic bytes (D0 CF 11 E0 A1 B1 1A E1) inte unika för .msi; formatet särskiljs genom sina interna databasströmmar såsom _Tables och _Columns. Varje paket är uppdelat i:
- En eller flera produkter som ska installeras
- Produktkomponenter - de atomära enheterna för installation (filer, registernycklar, genvägar)
- Funktioner (Features) - större hierarkiska strukturer som består av komponenter; användare kan välja valfria funktioner under installationen
- Nyckelsökvägar (Key paths) för komponenter - kritiska element som verifieras under installation eller avinstallation av komponenter
Även om en enskild installerare kan bunta ihop flera produkter, kan den inte nativt verifiera beroenden mellan produkter. Hantering av beroenden sköts av avinstallationsverktyg eller via det grafiska gränssnittet. .msi förblir det dominerande installationsformatet för företagsmjukvara och äldre Windows-programvara.
Skapa och använda Windows Installer-paket
.msi-paket skapas med dedikerade verktyg som WiX Toolset, Orca (ingår i Windows SDK för att inspektera och redigera databaser) eller kommersiella utvecklingsprodukter. Installationsprocessen drivs av msiexec.exe och är uppdelad i tre faser:
- Användargränssnitt - användaren konfigurerar installationsalternativ
- Exekvering - den faktiska installationen, som körs i antingen *omedelbart* eller *uppskjutet* (deferred) läge
- Återställning (Rollback) - om installationen misslyckas återställs transaktionen och inga systemändringar kvarstår
Innehållet i ett .msi-paket kan extraheras utan att köra installeraren med hjälp av 7-Zip eller via msiexec /a (administrativ installation).
Versioner av Windows Installer
.msi-paket debuterade med Office 2000 år 1999 (Windows Installer 1.0); körtidsmiljön var även inbyggd i Windows 2000. Version 5.0 lanserades 2009 tillsammans med Windows 7 och Windows Server 2008 R2. Nära besläktade format inkluderar .msp (patch-paket som levererar binära differenser till installerade produkter) och .mst-transformfiler som modifierar installerarens beteende vid körning. Den nyare .msix-standarden, som introducerades 2018, kombinerar .msi, .appx, App-V och ClickOnce-tekniker för förbättrad säkerhet, sandlådekörning och distribution via Store - men .msi fortsätter att användas i stor utsträckning för företag och traditionell skrivbordsprogramvara. Payload-filer inuti en .msi är vanligtvis komprimerade som .cab-strömmar inbäddade i databasen.
Säkerhet & trygghet
RISK: MEDIUMEn MSI är en installerare som ser pålitlig ut, vilket gör den till en populär maskering för skadlig kod: angripare skickar trojaniserade MSI-filer (ofta med skadliga Custom Actions som kör kod under installationen) eller falska « programuppdateringar ». Installera endast MSI-filer från officiella leverantörssidor och föredra signerade paket - högerklicka > Egenskaper > Digitala signaturer visar utgivaren; en osignerad MSI från en okänd källa är en varningsflagga. Eftersom MSI körs med installationsbehörighet kan en skadlig fil göra allt en administratör kan. Tricket med att byta namn eller använda 7-Zip låter dig inspektera innehållet innan körning.
Formatdetaljer
i ett nötskalProgram som öppnar MSI-filer
msiexec /i paket.msi /qn. För att avinstallera: msiexec /x paket.msi. Tekniska detaljer
djup specifikation| Behållarformat | OLE2 Compound File Binary (CFBF) - samma yttre struktur som äldre binära .doc- och .xls-filer från Office |
| Magic bytes (offset 0) | D0 CF 11 E0 A1 B1 1A E1 - OLE2-signatur som delas med andra Compound Documents; inte unik för enbart MSI |
| MIME-typ | application/x-msi |
| Interna databastabeller | Relationstabeller med fast schema inklusive File, Registry, Component, Feature, Property och CustomAction |
| Payload-lagring | Filer komprimerade som Cabinet (.cab)-strömmar inbäddade i databasen eller refererade som externa .cab-arkiv |
| Komprimeringsalgoritmer | Cabinet-strömmar använder LZX- eller MSZIP-komprimering (zlib-kompatibel) |
| Transaktionsmodell | Fullständig återställning vid fel - alla fil- och registerändringar ångras via en skriptmekanism för skuggkopiering |
| Exekveringsmotor | msiexec.exe (inbyggd i Windows); installera: /i, ta bort: /x {ProductCode}, reparera: /f, admin-extrahering: /a |
| Behörighetsmodell | Stöder installationslägen per maskin (förhöjd behörighet, ALLUSERS=1) och per användare (ej förhöjd) |
| Annonserad installation | COM-klasser och genvägar kan annonseras - registreras men distribueras inte förrän vid första användning (installation vid behov) |
| Patch-stöd | .msp-patchfiler levererar binära differenser och kompletterande tabelldata riktade mot en specifik MSI-produktkod |
| Transform-stöd | .mst-transformfiler åsidosätter egenskapsvärden och tabelldata vid installationstillfället utan att ändra bas-MSI-filen |
| Merge-moduler | .msm-merge-modulpaket kapslar in återanvändbara komponenter för inkludering i flera .msi-databaser |
| Custom actions | Logik före och efter installation kan köra VBScript, JScript, DLL-ingångspunkter eller externa EXE-processer |
| Avregistreringsregistrering | Skriver automatiskt poster i HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{ProductCode} |
| Körtidsversioner | Windows Installer 1.0 (1999) till 5.0 (2009, buntad med Windows 7 och Server 2008 R2) |
| Släppt | 2000 (Windows Installer 1.0, shipped with Office 2000 / Windows 2000) |
| Specifikation | learn.microsoft.com |
MSI-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om MSI-filer.
Vanliga frågor
Hur öppnar eller kör jag en MSI-fil?
Kan jag öppna en MSI-fil på en Mac eller Linux?
Vad är skillnaden mellan en MSI- och en EXE-installerare?
Hur installerar jag en MSI tyst / för många datorer?
msiexec /i paket.msi /qn (tyst, inget gränssnitt). Administratörer distribuerar MSI-filer i stor skala via Group Policy, SCCM eller Intune, ofta med en transform (.mst) för att anpassa inställningar.Hur avinstallerar jag ett program som installerades från en MSI?
msiexec /x paket.msi. Eftersom Windows Installer spårar paketet blir borttagningen ren.