Che cos'è il formato di file MSI?
I file con estensione .msi memorizzano un pacchetto di installazione di un'applicazione o un pacchetto di driver per Microsoft Windows. I file .msi hanno una struttura standardizzata definita da metadati e contengono tutte le risorse necessarie per installare un'applicazione. Il nome MSI deriva da Microsoft Installer, il nome originale della tecnologia prima che Microsoft la rinominasse Windows Installer.
Struttura del pacchetto MSI
I pacchetti .msi sono database relazionali salvati nel formato OLE2 Compound File Binary - lo stesso contenitore utilizzato dai documenti binari legacy di Office. A causa di questo contenitore condiviso, i primi otto magic bytes (D0 CF 11 E0 A1 B1 1A E1) non sono esclusivi degli .msi; il formato si distingue per i suoi flussi di database interni come _Tables e _Columns. Ogni pacchetto è diviso in:
- Uno o più prodotti da installare
- Componenti del prodotto - le unità atomiche di installazione (file, chiavi di registro, scorciatoie)
- Funzionalità (Features) - strutture gerarchiche più ampie che comprendono componenti; gli utenti possono scegliere funzionalità opzionali durante la configurazione
- Percorsi chiave (Key paths) per i componenti - elementi critici verificati durante l'installazione o la disinstallazione dei componenti
Sebbene un singolo programma di installazione possa raggruppare più prodotti, non può verificare nativamente le dipendenze tra prodotti diversi. La gestione delle dipendenze è gestita dagli strumenti di disinstallazione o tramite la GUI. .msi rimane il formato di installazione dominante per il software Windows aziendale e legacy.
Creazione e utilizzo dei pacchetti Windows Installer
I pacchetti .msi vengono creati con strumenti dedicati come WiX Toolset, Orca (incluso nel Windows SDK per l'ispezione e la modifica dei database) o prodotti di authoring commerciali. Il processo di installazione è guidato da msiexec.exe e diviso in tre fasi:
- Interfaccia utente - gli utenti configurano le opzioni di installazione
- Esecuzione - l'installazione effettiva, eseguita in modalità *immediata* o *differita* (in sospeso)
- Rollback - se l'installazione fallisce, la transazione viene annullata e non permane alcuna modifica al sistema
Il contenuto di un pacchetto .msi può essere estratto senza eseguire l'installer utilizzando 7-Zip o tramite msiexec /a (installazione amministrativa).
Versioni di Windows Installer
I pacchetti .msi hanno debuttato con Office 2000 nel 1999 (Windows Installer 1.0); il runtime è stato integrato anche in Windows 2000. La versione 5.0 è stata rilasciata nel 2009 insieme a Windows 7 e Windows Server 2008 R2. I formati strettamente correlati includono .msp (pacchetti di patch che forniscono diff binarie ai prodotti installati) e i file di trasformazione .mst che modificano il comportamento dell'installer in fase di esecuzione. Il nuovo standard .msix, introdotto nel 2018, combina le tecnologie .msi, .appx, App-V e ClickOnce per migliorare la sicurezza, il sandboxing e la distribuzione tramite Store - ma l'.msi continua a essere ampiamente distribuito per il software aziendale e desktop tradizionale. I file payload all'interno di un .msi sono tipicamente compressi come flussi .cab incorporati nel database.
Sicurezza e incolumità
RISCHIO: MEDIUMUn MSI è un programma di installazione dall'aspetto affidabile, il che lo rende un travestimento preferito dai malware: gli aggressori inviano MSI con trojan (spesso con Custom Actions dannose che eseguono codice durante l'installazione) o falsi «aggiornamenti software». Installa gli MSI solo dal sito ufficiale del fornitore e preferisci i pacchetti firmati - tasto destro > Proprietà > Firme digitali mostra l'editore; un MSI non firmato da una fonte sconosciuta è un segnale di allarme. Poiché l'MSI viene eseguito con i privilegi di installazione, uno dannoso può fare tutto ciò che può fare un amministratore. Il trucco della ridenominazione/7-Zip consente di ispezionare il contenuto prima dell'esecuzione.
Dettagli del formato
in sintesiProgrammi che aprono file MSI
Dettagli tecnici
specifiche approfondite| Formato contenitore | OLE2 Compound File Binary (CFBF) - stessa struttura esterna dei file binari Office legacy .doc e .xls |
| Magic bytes (offset 0) | D0 CF 11 E0 A1 B1 1A E1 - firma OLE2 condivisa con altri Compound Documents; non esclusiva solo per MSI |
| Tipo MIME | application/x-msi |
| Tabelle database interne | Tabelle relazionali a schema fisso tra cui File, Registry, Component, Feature, Property e CustomAction |
| Archiviazione payload | File compressi come flussi Cabinet (.cab) incorporati nel database o referenziati come archivi .cab esterni |
| Algoritmi di compressione | I flussi Cabinet utilizzano la compressione LZX o MSZIP (compatibile con zlib) |
| Modello di transazione | Rollback completo in caso di errore - tutte le modifiche ai file e al registro vengono annullate tramite un meccanismo di scripting shadow-copy |
| Motore di esecuzione | msiexec.exe (integrato in Windows); installazione: /i, rimozione: /x {ProductCode}, riparazione: /f, estrazione amministrativa: /a |
| Modello di privilegi | Supporta le modalità di installazione per macchina (elevata, ALLUSERS=1) e per utente (non elevata) |
| Installazione pubblicizzata | Le classi COM e le scorciatoie possono essere pubblicizzate - registrate ma non distribuite fino al primo utilizzo (installazione su richiesta) |
| Supporto patch | I file patch .msp forniscono diff binarie e dati di tabella supplementari destinati a uno specifico codice prodotto MSI |
| Supporto trasformazioni | I file di trasformazione .mst sovrascrivono i valori delle proprietà e i dati delle tabelle al momento dell'installazione senza modificare l'.msi di base |
| Moduli di unione | I pacchetti di moduli di unione .msm incapsulano componenti riutilizzabili per l'inclusione in più database .msi |
| Azioni personalizzate | La logica pre e post-installazione può eseguire VBScript, JScript, punti di ingresso DLL o processi EXE esterni |
| Registrazione disinstallazione | Scrive automaticamente le voci HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{ProductCode} |
| Versioni runtime | Windows Installer da 1.0 (1999) a 5.0 (2009, incluso in Windows 7 e Server 2008 R2) |
| Rilasciato | 2000 (Windows Installer 1.0, shipped with Office 2000 / Windows 2000) |
| Specifica | learn.microsoft.com |
Conversioni MSI
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file MSI.