Invio di messaggi a Windows Installer tramite MsiProcessMessage

I messaggi inviati tramite MsiProcessMessage sono gli stessi messaggi ricevuti dalla funzione di callback INSTALLUI_HANDLER se è stato chiamato MsiSetExternalUI . In caso contrario, Windows Installer gestisce i messaggi. Per informazioni dettagliate, vedere Analisi dei messaggi di Windows Installer.

Ad esempio, per inviare un messaggio di INSTALLMESSAGE_ERROR con l'icona MB_ICONWARNING e i pulsanti MB_ABORTRETRYCANCEL:

PMSIHANDLE hInstall;
PMSIHANDLE hRec;
MsiProcessMessage(hInstall, INSTALLMESSAGE(INSTALLMESSAGE_ERROR|MB_ABORTRETRYIGNORE|MB_ICONWARNING), hRec);

Dove hInstall è l'handle per l'installazione, fornito a un'azione personalizzata o all'handle hProduct da MsiOpenProduct o MsiOpenPackage e hRec è il record contenente le informazioni sull'errore da formattare. Per informazioni sull'esecuzione della formattazione, vedere MsiFormatRecord.

Per impostazione predefinita, se viene inviato un messaggio INSTALLMESSAGE_ERROR o INSTALLMESSAGE_FATALEXIT senza specificare il tipo di pulsante o i tipi di icona, MB_OK, nessuna icona e MB_DEFBUTTON1 vengono usati.

Windows Installer non etichetta il pulsante ABORT con la stringa "Abort" quando viene visualizzato un MessageBox con la specifica del pulsante MB_ABORTRETRYIGNORE, ma etichetta il pulsante con la stringa "Annulla". Tutti i messaggi di errore non possono usare la parola "Abort" e usare invece la parola "Cancel".

Il parametro hRecord della funzione MsiProcessMessage dipende dal tipo di messaggio inviato a MsiProcessMessage. Nell'elenco seguente vengono descritti in dettaglio i requisiti del record in relazione al tipo di messaggio:

INSTALLMESSAGE_FATALEXIT

 

INSTALLMESSAGE_INFO

 

INSTALLMESSAGE_OUTOFDISKSPACE

Campo Descrizione
0 Modello per la formattazione della stringa risultante. Per altre informazioni, vedere MsiFormatRecord . Ai campi del record viene fatto riferimento usando [1] per il campo 1, [2] per il campo 2 e così via.
da 1 a n Tutti i campi successivi sono direttamente correlati ai campi a cui fa riferimento il modello nel campo 0.

 

Se il campo 0 è Null, la stringa ricevuta dal gestore dell'interfaccia utente viene formattata come: 1: [dati dal campo 1] 2: [dati dal campo 2] ovvero per ogni campo del record, la stringa contiene il numero di campo seguito dai dati archiviati nel campo.

I messaggi informativi di MsiProcessMessage vengono registrati quando MsiEnableLog, l'opzione della riga di comando '/l' o i criteri di registrazione specificano 'I' o INSTALLLOGMODE_INFO.

INSTALLMESSAGE_ERROR

 

INSTALLMESSAGE_WARNING

 

INSTALLMESSAGE_USER

Per usare un messaggio dalla tabella Error.

Campo Descrizione
0 Deve essere Null.
1 Numero di messaggio nella tabella Error.
da 2 a n Correlato al messaggio specificato nella tabella Error.

 

Ad esempio,

Campo Tipo Dati
0 string Null
1 INT 1304
2 string Myfile.txt

 

Il messaggio risultante ricevuto dal gestore dell'interfaccia utente è:

Errore 1304. Errore durante la scrittura nel file: Myfile.txt. Verificare di avere accesso a tale directory.

Se il campo 0 non è Null, viene eseguito l'override del messaggio della tabella degli errori. Il modello di campo 0 determina invece il formato del messaggio.

Il messaggio può anche specificare i pulsanti, incluso il pulsante predefinito, e l'icona da usare con il messaggio come indicato in precedenza. I tipi di pulsante e icona sono elencati in INSTALLUI_HANDLER.

INSTALLMESSAGE_COMMONDATA

Questo messaggio viene inviato per abilitare o disabilitare il pulsante Annulla in una finestra di dialogo di stato.

Campo Descrizione
0 Non utilizzato.
1 2 fa riferimento al pulsante Annulla .
2 Il valore 1 indica che il pulsante Annulla deve essere visibile. Il valore 0 indica che il pulsante Annulla deve essere invisibile.

 

Ad esempio, per disabilitare o nascondere il pulsante Annulla , il record verrà visualizzato come indicato di seguito.

Campo Tipo Dati
0 string Null
1 INT 2
2 INT 0

 

INSTALLMESSAGE_ACTIONSTART

 

INSTALLMESSAGE_ACTIONDATA

Il record INSTALLMESSAGE_ACTIONSTART determina il formato del record ActionData.

Campo Descrizione
0 Null
1 Nome azione. Il nome in questo campo deve essere diverso da Null.
2 Descrizione dell'azione.
3 Modello di azione. Viene utilizzato per ActionData il cui messaggio viene formattato in base a questo modello.

 

Non fare riferimento al campo 0 nel messaggio modello azione.

Il record INSTALLMESSAGE_ACTIONDATA viene formattato come indicato di seguito.

Campo Descrizione
0 Null
da 1 a n Dipendente dal campo 3 del INSTALLMESSAGE_ACTIONSTART messaggio o modello corrispondente specificato nella tabella ActionText.

 

Ad esempio, il record INSTALLMESSAGE_ACTIONSTART.

Campo Tipo Dati
0 string Null
1 string MyAction
2 string Questa è la descrizione di "MyAction"
3 string Modello MyAction: i dati field1 sono [1]. i dati del campo 2 sono [2].

 

Il modello per INSTALLMESSAGE_ACTIONSTART (campo 3) fa riferimento ai campi 1 e 2, il record INSTALLMESSAGE_ACTIONDATA deve contenere 2 campi contenenti i dati garantiti. I campi possono essere campi stringa o integer.

INSTALLMESSAGE_ACTIONDATA record.

Campo Tipo Dati
0 string Null
1 INT 2
2 string ActionData per MyAction

 

INSTALLMESSAGE_FILESINUSE

Il record FILESINUSE è un record di lunghezza variabile.

Campo Descrizione
0 Questo campo può essere Null. Per un'installazione usando un'interfaccia utente di base, questo campo può specificare testo statico per la visualizzazione nel controllo ListBox della finestra di dialogo FilesInUse. Per un'installazione usando un'interfaccia utente completa, questo campo non ha alcun effetto perché il testo viene specificato dalla creazione della finestra di dialogo FilesInUse personalizzata.
1 Nome del file in uso.
2 Questo campo identifica il processo che contiene il file in uso. Windows Installer versione 4.0: ID processo (PID) del processo o titolo della finestra per il processo.
Windows Installer versione 3.1 e versioni precedenti: Questo campo deve essere l'ID processo (PID) del processo.

 

Ad esempio, per inviare un messaggio FilesInUse che mostra due file in uso, red.exe e blue.exe, il record include quattro campi più il campo 0. Il formato del record sarà come illustrato nella tabella seguente. Questo esempio richiede Windows Installer versione 4.0.

Windows Installer versione 3.1 e versioni precedenti: I campi 2 e 4 nell'esempio seguente devono contenere i PID dei processi che contengono red.exe e blue.exe in uso.

Campo Descrizione
0 Null
1 Red.exe
2 Titolo finestra rossa
3 Blue.exe
4 Titolo finestra blu

 

Nota

In Windows Installer versione 4.0, se il PID passato dal servizio non ha un titolo della finestra, ad esempio un'applicazione di barra di sistema, il file non viene visualizzato e il log dettagliato contiene i messaggi seguenti.

 

File In Use: -<FileName>- Window could not be found. Process ID: <PID>
No window with title could be found for FilesInUse

INSTALLMESSAGE_RESOLVESOURCE

Il record INSTALLMESSAGE_RESOLVESOURCE contiene sette campi. Affinché INSTALLMESSAGE_RESOLVESOURCE funzioni correttamente, un gestore dell'interfaccia utente esterno potrebbe non gestire il messaggio di INSTALLMESSAGE_RESOLVESOURCE. Windows Installer deve gestire il messaggio di INSTALLMESSAGE_RESOLVESOURCE. Ovvero, il gestore dell'interfaccia utente esterno restituisce 0 per indicare "nessuna azione eseguita" quando si filtra il messaggio di INSTALLMESSAGE_RESOLVESOURCE. La procedura consigliata consiste nell'evitare l'invio di un messaggio RESOLVESOURCE.

Campo Descrizione
0 Null
1 Null
2 Il nome del package.
3 Codice prodotto.
4 Il percorso relativo, se noto, può essere Null.
5 0
6 Se convalidare il codice del pacchetto. Un valore '1' indica che il codice del pacchetto deve essere convalidato. Un valore '0' indica che il pacchetto non deve essere convalidato.
7 Disco richiesto dalla tabella multimediale. Un valore '0' indica che qualsiasi disco è accettabile.