Condividi tramite


Windows Installer per sviluppatori di giochi

Illustra come è possibile usare Windows Installer per installare i giochi nei computer degli utenti finali. Windows Installer offre il supporto completo per un'interfaccia utente personalizzata, nonché per l'applicazione di patch.

Microsoft Windows Installer è l'API preferita per l'installazione del software nei computer basati su Windows. Anche se molte delle funzionalità di Windows Installer sono progettate per supportare la distribuzione di applicazioni aziendali in un ambiente aziendale, Windows Installer è anche completamente adatto per l'installazione di giochi nei computer degli utenti finali. I principali vantaggi dell'uso di Windows Installer per l'installazione del gioco sono:

  • Disinstallazione affidabile
  • Possibilità di installare contenuto su richiesta
  • Supporto per l'interfaccia utente completamente personalizzata
  • Applicazione efficiente di patch

Questo articolo offre una panoramica di Windows Installer, specificamente destinata agli sviluppatori di giochi. Per una documentazione dettagliata sulle funzionalità e sulle API menzionate in questo articolo, fare riferimento alla SDK per piattaforma Windows.

Panoramica

Tutte le configurazioni basate su Windows Installer usano un file di database di installazione denominato file MSI per descrivere come installare l'applicazione. Il file MSI contiene informazioni su quali file, chiavi del Registro di sistema, collegamenti desktop, associazioni di file e altri elementi dell'applicazione devono essere installati. I file effettivi da installare possono essere compressi all'interno del file MSI stesso, raggruppati e compressi in file CAB separati o archiviati altrove nel supporto di installazione come singoli file non compressi. Il file MSI può anche fare riferimento a azioni personalizzate implementate esternamente, per consentire azioni per le quali il file MSI non è consentito in modo nativo.

Un file MSI può facoltativamente contenere un'interfaccia utente per guidare l'utente tramite il processo di installazione. Questa interfaccia utente è adeguata per la maggior parte delle applicazioni. Tuttavia, ha l'aspetto di una normale applicazione Windows, e molti sviluppatori di giochi preferiscono avere la loro applicazione di configurazione mantenere l'aspetto del gioco stesso, per offrire un'esperienza utente finale più coerente. Per supportare questo scenario di interfaccia utente completamente personalizzato, un'applicazione di installazione può disattivare l'interfaccia utente predefinita di Windows Installer e gestire l'intera interfaccia utente stessa. L'API di Windows Installer espone un meccanismo di callback per consentire a un'interfaccia utente di configurazione personalizzata di ricevere una notifica dello stato di avanzamento dell'installazione, nonché eventi importanti, ad esempio richieste di modifica del disco.

Windows Installer non è una soluzione end-to-end per la creazione di configurazioni. È solo un'API che può essere usata da un programma di installazione per eseguire l'installazione effettiva di file, chiavi del Registro di sistema, collegamenti desktop e altri elementi dell'applicazione. Le versioni recenti di tutti i principali strumenti di installazione commerciale ,ad esempio InstallShield, WISE e Microsoft Visual Studio, supportano Windows Installer. Questi strumenti forniscono interfacce utente utili per la creazione della configurazione per un gioco, ma si basano sull'API di Windows Installer per eseguire gran parte dell'installazione effettiva. Questi strumenti possono essere usati anche solo per compilare un database MSI contenente il pacchetto di installazione, che può quindi essere installato da un'interfaccia utente di installazione scritta personalizzata. In alternativa agli strumenti di terze parti, l'API di Windows Installer fornisce tutte le funzioni necessarie per creare e modificare un database MSI a livello di codice e il SDK per piattaforma Windows include uno strumento di modifica del database MSI bare-bones denominato Orca.

Concetti chiave di Windows Installer

Ecco i componenti e le funzionalità di Windows Installer.

Componenti

Un'applicazione è costituita da uno o più componenti, identificati da un ID componente GUID. Un componente è un'unità atomica; è completamente installato o non è installato affatto. Un componente può essere costituito da un singolo file, più file, chiavi del Registro di sistema, collegamenti desktop o alcune combinazioni. Le risorse (file e così via) all'interno di un componente devono essere univoci per tale componente e non possono contenere la stessa risorsa. Un componente non viene mai installato in modo esplicito; viene installato solo come parte di una funzionalità (vedere di seguito).

Funzionalità

Una funzionalità è un gruppo di componenti, identificato da un ID funzionalità GUID. A differenza dei componenti, più funzionalità possono contenere lo stesso componente. Un componente condiviso tra più funzionalità verrà installato se una di queste funzionalità è installata e rimossa solo quando tutte le funzionalità che fanno riferimento al componente sono state disinstallate. L'installazione di una funzionalità può essere eseguita automaticamente come parte dell'installazione di un prodotto oppure può essere eseguita manualmente usando l'API MsiConfigureFeature .

Anche se alcuni giochi hanno più "funzionalità" che possono essere installate in modo indipendente, il concetto di Windows Installer di una funzionalità è ancora utile. Poiché una funzionalità di Windows Installer non è altro che una raccolta di componenti che possono essere installati insieme, i giochi possono usare funzionalità per raggruppare tutti i contenuti necessari per una fase specifica del gioco. Ad esempio, un gioco orientato a livello può definire una funzionalità per ogni livello, costituita da tutto il contenuto necessario per tale livello. Ciò consentirebbe al gioco di installare il contenuto un livello alla volta dall'interno del gioco stesso, invece di installare tutto il contenuto per tutti i livelli durante l'installazione iniziale.

Stati di installazione

Ogni componente o funzionalità ha uno stato di installazione associato, che determina se il componente o la funzionalità è disponibile e, in tal caso, in cui vengono installati i file per il componente o la funzionalità. I possibili stati di installazione per una funzionalità sono:

Assente

La funzionalità non è installata ed è pertanto inaccessibile.

Locale

La funzionalità è disponibile ed è installata per l'esecuzione dal disco rigido locale.

Fonte

La funzionalità è disponibile ed è installata per l'esecuzione dal supporto di origine originale (in genere un CD o UN DVD).

Pubblicizzato

La funzionalità non è installata, ma può essere installata su richiesta usando l'API MsiConfigureFeature . Quando la funzionalità è effettivamente installata, può essere installata nello stato Locale o Di origine.

Un componente può avere uno qualsiasi degli stati precedenti ad eccezione di "Annunciati". Se un componente fa parte di una funzionalità pubblicizzata, il componente verrà visualizzato come "Absent" fino a quando non viene installata la funzionalità.

Installare su richiesta

Windows Installer consente a un'applicazione di contrassegnare le funzionalità come annunciate, ovvero che la funzionalità non è ancora installata, ma è disponibile per l'installazione in fase di esecuzione, se necessario. L'installazione delle funzionalità in fase di esecuzione è nota come "Installazione su richiesta". I giochi possono usare Install on Demand per ridurre drasticamente il tempo necessario per la configurazione iniziale del gioco rinviando l'installazione del contenuto del gioco fino a quando non è necessario in fase di esecuzione. Il ritardo necessario per installare il contenuto in fase di esecuzione può spesso essere parzialmente o completamente nascosto eseguendo l'installazione su richiesta in un thread in background, mentre l'utente è altrimenti occupato con il gioco.

Interfaccia utente personalizzata

Anche se Windows Installer fornisce un'interfaccia utente predefinita che guida l'utente tramite l'installazione dell'applicazione, questa interfaccia è simile a quella di un'applicazione Windows standard. Molti sviluppatori di giochi preferiscono che l'interfaccia utente di installazione abbia lo stesso aspetto del gioco stesso, per fornire all'utente un gusto dell'atmosfera del gioco. Per supportare questo problema, Windows Installer consente di disabilitare completamente l'interfaccia utente predefinita, consentendo allo sviluppatore di fornire un'interfaccia utente completamente personalizzata.

Il programma di installazione personalizzato disabilita innanzitutto l'interfaccia utente predefinita di Windows Installer usando l'API MsiSetInternalUI per impostare il livello dell'interfaccia utente su INSTALLUILEVEL_NONE. Chiama quindi l'API MsiSetExternalUI per specificare una funzione di callback che verrà chiamata durante il processo di installazione per notificare al programma di installazione gli eventi chiave durante l'installazione.

Il processo di installazione effettivo viene quindi avviato chiamando l'API MsiInstallProduct . Questa API accetta una stringa di parametri che consente al chiamante di specificare i valori per le proprietà denominate. Queste proprietà possono essere usate all'interno del database di installazione stesso per personalizzare la modalità di installazione dell'applicazione. Queste proprietà possono essere usate per specificare:

  • Directory in cui deve essere installata l'applicazione
  • Quali funzionalità devono essere installate localmente e che devono essere installate per l'esecuzione dal CD/DVD (ad esempio, per abilitare la scelta tra un'installazione minima e un'installazione completa)
  • Indica se l'applicazione deve essere installata per tutti gli utenti del computer o solo per l'utente corrente

Durante l'installazione, il programma di installazione usa i messaggi di notifica inviati alla relativa funzione di callback per determinare quando aggiornare l'interfaccia utente dell'indicatore di stato, quando richiedere all'utente di inserire il CD successivo o quando informare l'utente di un errore nel processo di installazione.

Applicazione di patch

Windows Installer consente di applicare patch alle applicazioni installate applicando un file patch. Un file di patch contiene i nuovi file da aggiungere dalla patch, i file modificati dalla patch e un elenco di modifiche da apportare al database di installazione. Per risparmiare spazio, invece di archiviare il contenuto completo di un file modificato dalla patch, il file patch contiene in realtà solo le differenze tra la versione originale del file e la nuova versione del file.

Per creare una patch, è necessaria l'immagine di installazione per ognuna delle versioni dell'applicazione da cui si vuole eseguire l'aggiornamento della patch, nonché l'immagine di installazione per la nuova versione aggiornata dell'applicazione. Un'immagine di installazione è costituita dal database MSI e da tutti i file di dati effettivi per l'applicazione. Il modo migliore per creare un'immagine di installazione per una nuova versione dell'applicazione consiste nel copiare l'immagine di installazione dalla versione precedente dell'applicazione e quindi apportare le modifiche necessarie per aggiornare tale copia nella versione con patch.

Dopo aver creato tutte le immagini di installazione necessarie, è possibile creare le patch usando Msimsp.exe, che è uno strumento di creazione di patch disponibile come parte di Platform SDK. Lo strumento chiederà le posizioni di ognuna delle immagini di installazione e quindi determinerà come rappresentare in modo efficiente le differenze tra le versioni successive. L'output dello strumento è il file di patch finale (identificato dall'estensione MSP). Per installare la patch a livello di codice, chiamare l'API MsiApplyPatch . L'utente può anche installare manualmente la patch facendo doppio clic sul file MSP in Explorer.

Risorse aggiuntive