Condividi tramite


Accesso alla sessione del programma di installazione corrente dall'interno di un'azione personalizzata

Le azioni personalizzate non posticipate che chiamano librerie di collegamento dinamico o script possono accedere a un'installazione in esecuzione per eseguire query o modificare gli attributi della sessione di installazione corrente. Solo un oggetto Session può esistere per ogni processo e gli script di azione personalizzati non devono tentare di creare un'altra sessione.

Le azioni personalizzate possono aggiungere, modificare o rimuovere righe, colonne o tabelle temporanee da un database. Le azioni personalizzate non possono modificare i dati persistenti in un database, ad esempio i dati che fanno parte del database archiviato su disco.

Librerie a collegamento dinamico

Per accedere a un'installazione in esecuzione, le azioni personalizzate che chiamano librerie di collegamento dinamico (DLL) vengono passate un handle del tipo MSIHANDLE per la sessione corrente come unico argomento al punto di ingresso della DLL denominato nella colonna Target della tabella CustomAction. Poiché il programma di installazione fornisce questo handle, l'azione personalizzata non deve chiuderla, ad esempio per ricevere l'handle hInstall dal programma di installazione, la funzione di azione personalizzata viene dichiarata come indicato di seguito.

UINT __stdcall CustomAction(MSIHANDLE hInstall)

Per l'accesso in sola lettura al database corrente, ottenere l'handle del database chiamando MsiGetActiveDatabase. Per altre informazioni, vedere Recupero di un handle di database.

Script

Le azioni personalizzate scritte in VBScript o JScript possono accedere alla sessione di installazione corrente usando l'oggetto Sessione. Il programma di installazione crea un oggetto Session denominato " Session " che fa riferimento all'installazione corrente. Per l'accesso in sola lettura al database corrente, usare la proprietà Database dell'oggetto Session .

Poiché uno script viene eseguito dal contesto dell'oggetto Session , non è sempre necessario qualificare completamente le proprietà e i metodi. Nell'esempio seguente, quando si usa VBScript, il riferimento Me può sostituire l'oggetto Session , ad esempio, le tre righe seguenti sono equivalenti.

Session.SetInstallLevel 1
Me.SetInstallLevel 1
SetInstallLevel 1

File eseguibili

Non è possibile accedere alla sessione del programma di installazione corrente da azioni personalizzate che chiamano file eseguibili avviati con una riga di comando, ad esempio, tipo di azione personalizzato 2 e tipo di azione personalizzato 18.

Azioni personalizzate di esecuzione posticipate

Non è possibile accedere alla sessione del programma di installazione corrente o a tutti i dati delle proprietà da un'azione personalizzata di esecuzione posticipata. Per altre informazioni, vedere Ottenere informazioni sul contesto per azioni personalizzate di esecuzione posticipata.

Accesso a un database o a una sessione dall'interno di un'azione personalizzata