Udostępnij za pośrednictwem


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.