Wysyłanie komunikatów do Instalatora Windows przy użyciu funkcji MsiProcessMessage
Komunikaty wysyłane przy użyciu MsiProcessMessage są tymi samymi komunikatami, które są odbierane przez funkcję wywołania zwrotnego INSTALLUI_HANDLER, jeśli MsiSetExternalUI została wywołana. W przeciwnym razie Instalator Windows obsługuje komunikaty. Aby uzyskać szczegółowe informacje, zobacz analizowanie komunikatów Instalatora Windows.
Aby na przykład wysłać komunikat INSTALLMESSAGE_ERROR z ikoną MB_ICONWARNING i przyciskami MB_ABORTRETRYCANCEL:
PMSIHANDLE hInstall;
PMSIHANDLE hRec;
MsiProcessMessage(hInstall, INSTALLMESSAGE(INSTALLMESSAGE_ERROR|MB_ABORTRETRYIGNORE|MB_ICONWARNING), hRec);
Gdzie hInstall jest dojście do instalacji, dostarczone do akcji niestandardowej lub hProduct dojście z MsiOpenProduct lub MsiOpenPackage, a hRec jest rekord zawierający informacje o błędzie do sformatowania. Aby uzyskać informacje na temat sposobu formatowania, zobacz MsiFormatRecord.
Jeśli domyślnie wysyłany jest komunikat INSTALLMESSAGE_ERROR lub INSTALLMESSAGE_FATALEXIT bez określenia typu przycisku lub typów ikon, stosowane są MB_OK, brak ikony oraz MB_DEFBUTTON1.
Windows Installer nie etykietuje przycisku ABORT napisem "Abort," wyświetlając okno komunikatu MessageBox ze specyfikacją przycisku MB_ABORTRETRYIGNORE, zamiast tego etykietuje przycisk napisem "Anuluj". Wszystkie komunikaty o błędach powstrzymują się od używania słowa "Abort" i zamiast tego używają słowa "Anuluj".
Parametr hRecord funkcji MsiProcessMessage zależy od typu komunikatu wysłanego do MsiProcessMessage. Poniższa lista zawiera szczegółowe informacje o wymaganiach rekordu w odniesieniu do typu komunikatu:
INSTALLMESSAGE_FATALEXIT
INFORMACJA_INSTALACYJNA
Komunikat instalacyjny: Brak miejsca na dysku
Pole | Opis |
---|---|
0 | Szablon formatowania wynikowego ciągu. Aby uzyskać więcej informacji, zobacz MsiFormatRecord. Do pól rekordu odwołuje się [1] dla pola 1, [2] dla pola 2 itd. |
od 1 do n | Wszystkie kolejne pola są bezpośrednio powiązane z polami, do których odwołuje się szablon w polu 0. |
Jeśli pole 0 ma wartość null, ciąg otrzymany przez procedurę obsługi interfejsu użytkownika jest sformatowany jako: 1: [dane z pola 1] 2: [dane z pola 2] co oznacza, że dla każdego pola rekordu ciąg zawiera numer pola, po którym następuje dane przechowywane w polu.
Informacje z MsiProcessMessage są rejestrowane, gdy MsiEnableLog, komenda '/l' lub zasada rejestrowania określają "I" lub INSTALLLOGMODE_INFO.
BŁĄD KOMUNIKATU INSTALACJI
KOMUNIKAT_INSTALLACYJNY_OSTRZEŻENIE
INSTALLMESSAGE_USER
Aby użyć komunikatu z tabeli błędów.
Pole | Opis |
---|---|
0 | Musi mieć wartość null. |
1 | Numer komunikatu w tabeli błędów . |
od 2 do i | Powiązane z określonym komunikatem w tabeli błędów. |
Na przykład.
Pole | Typ | Dane |
---|---|---|
0 | struna | null |
1 | Int | 1304 |
2 | struna | Myfile.txt |
Wynikowy komunikat otrzymany z programu obsługi interfejsu użytkownika to:
Błąd 1304. Błąd zapisywania w pliku: Myfile.txt. Sprawdź, czy masz dostęp do tego katalogu.
Jeśli pole 0 nie ma wartości null, komunikat z tabeli błędów zostanie zastąpiony. Zamiast tego szablon pola 0 określa format komunikatu.
Komunikat może również określać przyciski, w tym przycisk domyślny i ikonę do użycia z komunikatem, jak wspomniano powyżej. Typy przycisków i ikon są wymienione w INSTALLUI_HANDLER.
INSTALLMESSAGE_COMMONDATA
Ten komunikat jest wysyłany w celu włączenia lub wyłączenia przycisku Anuluj w oknie dialogowym postępu.
Pole | Opis |
---|---|
0 | Nieużywane. |
1 | 2 odnosi się do przycisku Anuluj. |
2 | Wartość 1 wskazuje, że przycisk Anuluj powinien być widoczny. Wartość 0 wskazuje, że przycisk Anuluj powinien być niewidoczny. |
Na przykład, aby wyłączyć lub ukryć przycisk Anuluj, rekord zostanie wyświetlony w następujący sposób.
Pole | Typ | Dane |
---|---|---|
0 | struna | null |
1 | Int | 2 |
2 | Int | 0 |
Komunikat Instalacyjny: Rozpoczęcie Działania
INSTALLMESSAGE_ACTIONDATA
Rekord INSTALLMESSAGE_ACTIONSTART określa format rekordu ActionData.
Pole | Opis |
---|---|
0 | zero |
1 | Nazwa akcji. Nazwa w tym polu musi mieć wartość inną niż null. |
2 | Opis akcji. |
3 | Szablon akcji. Jest to używane w przypadku elementu ActionData, którego komunikat jest formatowany zgodnie z tym szablonem. |
Nie odwołuj się do pola 0 w komunikacie szablonu akcji.
Rekord INSTALLMESSAGE_ACTIONDATA jest sformatowany w następujący sposób.
Pole | Opis |
---|---|
0 | zero |
od 1 do oraz | Zależne od pola 3 odpowiedniego komunikatu INSTALLMESSAGE_ACTIONSTART lub szablonu określonego w tabeli ActionText. |
Na przykład rekord INSTALLMESSAGE_ACTIONSTART.
Pole | Typ | Dane |
---|---|---|
0 | struna | zero |
1 | struna | MojaAkcja |
2 | struna | Jest to opis "MyAction" |
3 | struna | Szablon MyAction: dane pola 1 to [1]. dane w polu 2 to [2] |
Szablon INSTALLMESSAGE_ACTIONSTART (pole 3) odwołuje się do pól 1 i 2, rekord INSTALLMESSAGE_ACTIONDATA powinien zawierać 2 pola zawierające uzasadnione dane. Pola mogą być polami ciągów lub liczb całkowitych.
rekord INSTALLMESSAGE_ACTIONDATA.
Pole | Typ | Dane |
---|---|---|
0 | struna | null |
1 | Int | 2 |
2 | struna | ActionData dla myAction |
KOMUNIKATINSTALACJI_PLIKIUZYWANE
Rekord FILESINUSE jest rekordem o zmiennej długości.
Pole | Opis |
---|---|
0 | To pole może mieć wartość null. W przypadku instalacji z podstawowym interfejsem użytkownika to pole może określać statyczny tekst do wyświetlenia w kontrolce ListBox w oknie dialogowym FilesInUse . W przypadku instalacji przy użyciu pełnego interfejsu użytkownika to pole nie ma wpływu, ponieważ tekst jest określony przez tworzenie niestandardowego okna dialogowego FilesInUse. |
1 | Nazwa używanego pliku. |
2 | To pole identyfikuje proces przechowujący plik w użyciu.Instalatora Windows w wersji 4.0: Identyfikator procesu (PID) procesu lub tytuł okna procesu. Windows Installer w wersji 3.1 i starszych: To pole musi być identyfikatorem procesu (PID). |
Na przykład w celu wysłania komunikatu FilesInUse wyświetlającego dwa używane pliki, red.exe i blue.exe, rekord zawiera cztery pola oraz pole 0. Format rekordu będzie pokazany w poniższej tabeli. Ten przykład wymaga Instalatora Windows w wersji 4.0.
Instalator Windows w wersji 3.1 i starszej: Pola 2 i 4 w poniższym przykładzie muszą zawierać identyfikatory PID procesów, które używają red.exe i blue.exe.
Pole | Opis |
---|---|
0 | zero |
1 | Red.exe |
2 | Tytuł czerwonego okna |
3 | Blue.exe |
4 | Niebieski tytuł okna |
Notatka
W Instalatorze Windows w wersji 4.0, jeśli PID przekazany z usługi nie ma tytułu okna, takiego jak aplikacja w zasobniku systemowym, plik nie zostanie wyświetlony, a pełny dziennik zawiera następujące komunikaty.
File In Use: -<FileName>- Window could not be found. Process ID: <PID>
No window with title could be found for FilesInUse
INSTALLMESSAGE_ROZWIĄŻŹRÓDŁO
Rekord INSTALLMESSAGE_RESOLVESOURCE ma siedem pól. Aby INSTALLMESSAGE_RESOLVESOURCE działał poprawnie, zewnętrzna procedura obsługi interfejsu użytkownika nie powinna obsługiwać komunikatu INSTALLMESSAGE_RESOLVESOURCE. Instalator Windows musi obsługiwać komunikat INSTALLMESSAGE_RESOLVESOURCE. Oznacza to, że zewnętrzna procedura obsługi interfejsu użytkownika zwraca wartość 0, aby wskazać "nie podjęto żadnej akcji" podczas filtrowania komunikatu INSTALLMESSAGE_RESOLVESOURCE. Najlepszym rozwiązaniem jest unikanie wysyłania komunikatu RESOLVESOURCE.
Pole | Opis |
---|---|
0 | null |
1 | null |
2 | Nazwa pakietu. |
3 | Kod produktu. |
4 | Ścieżka względna, jeśli jest znana, może mieć wartość null. |
5 | 0 |
6 | Czy należy zweryfikować kod pakietu. Wartość "1" wskazuje, że kod pakietu powinien zostać zweryfikowany. Wartość "0" wskazuje, że pakiet nie powinien być weryfikowany. |
7 | Wymagany dysk z tabeli multimediów. Wartość "0" wskazuje, że dowolny dysk jest akceptowalny. |