Accesso alla sessione del programma di installazione corrente dall'interno di un'azione personalizzata
Le azioni personalizzate non differite che chiamano librerie a collegamento dinamico o script possono accedere a un'installazione in esecuzione per eseguire query o modificare gli attributi della sessione di installazione corrente. Per ogni processo può esistere un solo oggetto sessione e gli script di azione personalizzati non devono tentare di creare un'altra sessione.
Le azioni personalizzate possono solo aggiungere, modificare o rimuovere righe, colonne o tabelle temporanee da un database. Le azioni personalizzate non possono modificare dati persistenti in un database, ad esempio dati che fanno parte del database archiviato su disco.
Per accedere a un'installazione in esecuzione, le azioni personalizzate che chiamano librerie a collegamento dinamico (DLL) vengono passate un handle del tipo MSIHANDLE per la sessione corrente come unico argomento per il punto di ingresso della DLL denominato nella colonna Destinazione 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 segue.
UINT __stdcall CustomAction(MSIHANDLE hInstall)
Per ottenere accesso in sola lettura al database corrente, ottieni l'handle del database chiamando MsiGetActiveDatabase. Per ulteriori informazioni, consultare Ottenere un riferimento del database.
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 sessione denominato "Session" che fa riferimento all'installazione corrente. Per l'accesso in sola lettura al database corrente, utilizzare la proprietà Database dell'oggetto Sessione.
Poiché uno script viene eseguito dal contesto dell'oggetto sessione, non è sempre necessario specificare completamente proprietà e metodi. Nell'esempio seguente, quando si usa VBScript, il riferimento Me può sostituire l'oggetto sessione, ad esempio, le tre righe seguenti sono equivalenti.
Session.SetInstallLevel 1
Me.SetInstallLevel 1
SetInstallLevel 1
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 personalizzata 2 e tipo di azione personalizzata 18.
Azioni personalizzate di esecuzione posticipata
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 ulteriori informazioni, vedere Ottenere informazioni sul contesto per le azioni personalizzate di esecuzione posticipata.
Argomenti correlati