Riduzione delle dimensioni delle patch
A partire da Windows Installer versione 3.0, gli autori di patch possono usare la baseline del prodotto memorizzata nella cache dal programma di installazione per gestire più facilmente le applicazioni con patch differenziali più piccole. In molti casi, un patch differenziale che fornisce informazioni di manutenzione a un'applicazione può essere notevolmente inferiore rispetto a un pacchetto di installazione o patch full-file che fornisce le stesse informazioni.
Windows Installer 2.0: Non supportato. A partire da Windows Installer 3.0, il programma di installazione salva in modo selettivo le informazioni di base sui file quando vengono aggiornati.
Windows Installer offre tre metodi per l'aggiornamento e la manutenzione delle applicazioni: piccoli aggiornamenti, aggiornamenti secondarie aggiornamenti principali. Un piccolo aggiornamento viene anche definito aggiornamento QFE (Quick Fix Engineering) e un aggiornamento secondario viene anche definito aggiornamento service pack (SP). Un tipico aggiornamento principale rimuove un'applicazione precedente e installa una nuova applicazione. Windows Installer può fornire informazioni di manutenzione alle applicazioni come pacchetto di installazione ( file.msi) o come pacchetto patch (file msp).
Un pacchetto patch di Windows Installer che fornisce informazioni di manutenzione per un piccolo aggiornamento o un aggiornamento secondario è in genere molto più piccolo del pacchetto di installazione equivalente che fornisce le stesse informazioni di manutenzione. È consigliabile usare pacchetti di patch per la distribuzione di aggiornamenti di piccole e minori dimensioni. È consigliabile usare un pacchetto di installazione per la distribuzione di un aggiornamento principale.
Le patch di Windows Installer (file msp) possono essere generate da file completi o da differenze di file (detti anche delta del file). Una patch di Windows Installer generata dai delta dei file può essere molto più piccola della patch di file full-file equivalente. Tutte le versioni di Windows Installer possono usare patch full-file o patch differenziali.
A partire da Windows Installer versione 3.0, il programma di installazione salva in modo selettivo le informazioni di base sui file quando vengono aggiornate. Le informazioni sull'applicazione di base originale (versione RTM) e sull'aggiornamento secondario più recente (Service Pack) vengono salvate in un percorso privato quando l'applicazione viene installata o riceve un aggiornamento secondario.
Il programma di installazione esegue le operazioni seguenti per ridurre al minimo le dimensioni della cache di base:
- Non vengono mantenute più di due linee di base per ogni applicazione: una baseline del file come rilasciato originariamente (RTM) e una baseline del file all'aggiornamento secondario più recente (Service Pack).
- Un file non viene aggiunto alla cache fino a quando non viene applicata l'applicazione di patch. La cache di base è di tipo copy-on-write.
- Se l'applicazione non è mai stata aggiornata, nella cache di base non sono presenti file.
- Quando l'ultima manutenzione dell'applicazione è un aggiornamento secondario (Service Pack), l'applicazione è a livello di base e al massimo due copie di un file possono essere presenti nel computer. Una copia del file si trova nella directory di destinazione dell'installazione. L'altra copia può trovarsi nella cache di base RTM.
- Quando l'ultima manutenzione dell'applicazione era un piccolo aggiornamento (QFE), l'applicazione non è a livello di base e al massimo tre copie di un file possono essere presenti nel computer. La prima copia del file si trova nella directory di destinazione dell'installazione. La seconda copia del file si trova nella cache di base RTM. L'ultima copia del file si trova nella cache di base più recente.
- La cache di base dell'applicazione viene rimossa quando il prodotto viene disinstallato.
A partire da Windows Installer versione 3.0, il programma di installazione può usare la cache di base quando vengono applicate patch all'applicazione. Le informazioni di base possono essere usate per applicare una patch differenziale o per ripristinare un file a una versione precedente durante una disinstallazione di patch. Ciò può consentire agli autori di patch di trarre vantaggio da patch differenziali più piccole. Se il programma di installazione rileva che la patch differenziale non può essere applicata al file di destinazione, il programma di installazione può tentare di usare un file salvato nella cache di base come punto di partenza. Il programma di installazione si limita a richiedere l'origine di installazione originale dopo aver provato tutte le possibilità nella cache.
L'aderenza alle linee guida seguenti consente agli autori di patch di utilizzare le patch di Windows Installer versione 3.0 e la cache di base per creare patch differenziali di dimensioni ridotte:
- Creare patch che includono la tabella MsiPatchSequence. Questa tabella è necessaria per usare la cache di base ed è disponibile a partire da Windows Installer versione 3.0.
- Non impostare criteri che impediscano la memorizzazione nella cache della baseline. Il valore del criterio MaxPatchCacheSize specifica la percentuale massima di spazio su disco che è possibile usare. Se il criterio MaxPatchCacheSize è impostato su 0, nella cache di base non vengono salvati file aggiuntivi. Se il criterio non è impostato, è possibile usare un massimo di 10% dello spazio su disco. Se la dimensione totale della cache raggiunge la percentuale massima di spazio su disco, non vengono salvati file aggiuntivi. Il criterio non influisce sui file già salvati. Anche quando la memorizzazione nella cache è disabilitata, il programma di installazione può usare le cache di base del prodotto esistenti.
- Se la prima patch applicata include la tabella MsiPatchSequence, la memorizzazione nella cache è abilitata per l'applicazione.
- Se una patch nella transazione di manutenzione non include la tabella MsiPatchSequence, la memorizzazione nella cache è abilitata per l'applicazione solo se viene applicata correttamente una patch di aggiornamento secondaria (Service Pack) che include la tabella MsiPatchSequence al prodotto.
- Generare il pacchetto patch usando strumenti di creazione di patch, ad esempio Msimsp.exe e PATCHWIZ.DLL.
- Mirare sempre le patch alla versione Release to Manufacturing (RTM) dell'applicazione o a una versione di aggiornamento minore (Service Pack) dell'applicazione. Le destinazioni specificate nella tabella TargetImages del file Patch Creation Properties (PCP) devono essere punti di controllo del prodotto definiti dai primi tre campi della proprietà ProductVersion.
- Non destinare mai le patch su piccole immagini di aggiornamento. Gli obiettivi per la costruzione della patch non devono includere le immagini di aggiornamento incrementali precedenti.