Condividi tramite


Invio di messaggi a Windows Installer tramite MsiProcessMessage

I messaggi inviati con 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 tipo 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, mentre 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 di INSTALLMESSAGE_ERROR o INSTALLMESSAGE_FATALEXIT senza specificare tipi di pulsante o di icona, MB_OK, nessuna icona e MB_DEFBUTTON1 vengono utilizzati.

Windows Installer non etichetta il pulsante ABORT con la stringa "Abort" quando visualizza una MessageBox con la specifica del pulsante MB_ABORTRETRYIGNORE; invece, etichetta il pulsante con la stringa "Annulla". Tutti i messaggi di errore si astengono dall'uso della parola "Abort" e usano invece la parola "Cancel".

Il parametro hRecord della funzioneMsiProcessMessagedipende dal tipo di messaggio inviato al MsiProcessMessage. L'elenco seguente illustra in dettaglio i requisiti del record in relazione al tipo di messaggio:

INSTALLMESSAGE_FATALEXIT

 

MESSAGGIO DI INSTALLAZIONE_INFO

 

MESSAGGIOINSTALLAZIONE_DISCODUESAURITO

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 del campo 2] ovvero per ogni campo del record, la stringa contiene il numero di campo seguito dai dati archiviati nel campo.

I messaggi informativi provenienti da 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

 

MESSAGGIO_INSTALLAZIONE_UTENTE

Per utilizzare un messaggio dalla tabella degli errori.

Campo Descrizione
0 Deve essere Null.
1 Numero di messaggio nella tabella errore .
Da 2 a in Correlato al messaggio specificato nella tabella Errore.

 

Per esempio.

Campo Digitare Dati
0 corda nullo
1 Int 1304
2 corda 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 progresso.

Campo Descrizione
0 Inutilizzato.
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 segue.

Campo Digitare Dati
0 corda nullo
1 Int 2
2 Int 0

 

INSTALLAZIONE_MESSAGGIO_AVVIOAZIONE

 

MESSAGGIOINSTALLAZIONE_DATIATTIVITÀ

Il record INSTALLMESSAGE_ACTIONSTART determina il formato del record ActionData.

Campo Descrizione
0 nullo
1 Nome dell'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 segue.

Campo Descrizione
0 nullo
da 1 a n A seconda del campo 3 del messaggio INSTALLMESSAGE_ACTIONSTART o del modello corrispondente specificato nella tabella ActionText .

 

Ad esempio, il record INSTALLMESSAGE_ACTIONSTART.

Campo Digitare Dati
0 corda nullo
1 corda MyAction
2 corda Questa è la descrizione di "MyAction"
3 corda 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 giustificati. I campi possono essere campi stringa o integer.

INSTALLMESSAGE_ACTIONDATA record.

Campo Digitare Dati
0 corda nullo
1 Int 2
2 corda ActionData per MyAction

 

MESSAGGIOINSTALLAZIONE_FILEINUSO

Il record FILESINUSE è un record di lunghezza variabile.

Campo Descrizione
0 Questo campo può essere Null. Per un'installazione tramite un'interfaccia utente di base, questo campo può specificare testo statico da visualizzare nel controllo ListBox della finestra di dialogo FilesInUse. Per un'installazione con 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: L'ID del processo (PID) del processo o il titolo della finestra per il processo.
Windows Installer versione 3.1 e 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 ha 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 precedenti: Negli esempi seguenti, i campi 2 e 4 devono contenere i PID dei processi che utilizzano red.exe e blue.exe.

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

 

Nota

In Windows Installer versione 4.0, se il PID passato dal servizio non dispone di un titolo di finestra, come nel caso di un'applicazione dell'area di notifica, il file potrebbe non essere 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 ha 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 INSTALLMESSAGE_RESOLVESOURCE. La procedura consigliata consiste nell'evitare di inviare un messaggio RESOLVESOURCE.

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