Dela via


Skicka meddelanden till Windows Installer med msiProcessMessage

Meddelanden som skickas med MsiProcessMessage är samma som de meddelanden som tas emot av motsvarande funktion INSTALLUI_HANDLER ifall MsiSetExternalUI anropades. Annars hanterar Windows Installer meddelandena. Mer information finns i Tolka Windows Installer-meddelanden.

Om du till exempel vill skicka ett INSTALLMESSAGE_ERROR meddelande med ikonen MB_ICONWARNING och knapparna MB_ABORTRETRYCANCEL:

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

Där hInstall är referensen till installationen, som getts till en anpassad åtgärd eller referensen hProduct från MsiOpenProduct eller MsiOpenPackage, och hRec är den post som innehåller felinformationen som ska formateras. Information om hur formatering utförs finns i MsiFormatRecord.

Om ett INSTALLMESSAGE_ERROR- eller INSTALLMESSAGE_FATALEXIT-meddelande skickas som standard utan att ange knapptyp eller ikontyper används MB_OK, ingen ikon och MB_DEFBUTTON1.

Windows Installer märker inte knappen ABORT med strängen "Avbryta" när den visar en MessageBox med MB_ABORTRETRYIGNORE-knappspecifikationen. Istället märks knappen med strängen "Avbryt". Alla felmeddelanden avstår från att använda ordet "Avsluta" och använder i stället ordet "Avbryt".

Parametern hRecord för funktionen MsiProcessMessage beror på meddelandetypen som skickas till MsiProcessMessage. I följande lista beskrivs kraven för posten i förhållande till meddelandetypen:

INSTALLMESSAGE_FATALEXIT

 

INSTALLMESSAGE_INFO

 

INSTALLATIONSMEDDELANDE_OTILLRÄCKLIGTDISKUUTRYMME

Fält Beskrivning
0 Mall för formatering av den resulterande strängen. Mer information finns i MsiFormatRecord. Fälten i posten refereras med [1] för fält 1, [2] för fält 2 osv.
1 till n Alla efterföljande fält är direkt relaterade till de fält som refereras av mallen i fält 0.

 

Om fält 0 är null formateras strängen som tas emot av användargränssnittshanteraren som: 1: [data från fält 1] 2: [data från fält 2] vilket innebär att för varje fält i posten innehåller strängen fältnumret följt av data som lagras i fältet.

Informationsmeddelanden från MsiProcessMessage loggas när MsiEnableLog, kommandoradsalternativet "/l" eller loggningsprincip ange "I" eller INSTALLLOGMODE_INFO.

INSTALLATIONSMEDDELANDE_FEL

 

INSTALLMESSAGE_WARNING

 

INSTALLMESSAGE_USER

Så här använder du ett meddelande från tabellen Fel.

Fält Beskrivning
0 Måste vara null.
1 Meddelandenummer i tabellen Fel.
2 till n Relaterat till det angivna meddelandet i tabellen Fel.

 

Till exempel.

Fält Typ Data
0 sträng noll
1 Int 1304
2 sträng Myfile.txt

 

Det resulterande meddelandet som tas emot från UI-hanteraren är:

Fel 1304. Det gick inte att skriva till filen: Myfile.txt. Kontrollera att du har åtkomst till den katalogen.

Om fält 0 inte är null, åsidosättas meddelandet från feltabellen. I stället avgör fält 0-mallen formatet för meddelandet.

Meddelandet kan också ange knapparna, inklusive standardknappen, och ikonen för användning med meddelandet enligt ovan. Knapp- och ikontyperna visas i INSTALLUI_HANDLER.

INSTALLMESSAGE_COMMONDATA

Det här meddelandet skickas för att aktivera eller inaktivera knappen Avbryt i en dialogruta för förlopp.

Fält Beskrivning
0 Oanvänd.
1 2 refererar till knappen Avbryt.
2 Värdet 1 anger att knappen Avbryt ska vara synlig. Värdet 0 anger att knappen Avbryt ska vara osynlig.

 

Om du till exempel vill inaktivera eller dölja knappen Avbryt visas posten på följande sätt.

Fält Typ Data
0 sträng noll
1 Int 2
2 Int 0

 

INSTALLMESSAGE_ACTIONSTART

 

INSTALLMESSAGE_ÅTGÄRDSDATA

Posten INSTALLMESSAGE_ACTIONSTART avgör formatet på ActionData-posten.

Fält Beskrivning
0 noll
1 Åtgärdsnamn. Namnet i det här fältet måste vara icke-null.
2 Åtgärdsbeskrivning.
3 Åtgärdsmall. Detta används för ActionData vars meddelande formateras enligt den här mallen.

 

Referera inte till fält 0 i meddelandet Åtgärdsmall.

Rekordet INSTALLMESSAGE_ACTIONDATA är formaterat enligt följande.

Fält Beskrivning
0 noll
1 till n Beroende på fält 3 i motsvarande INSTALLMESSAGE_ACTIONSTART meddelande eller mall som anges i ActionText-tabell.

 

Till exempel posten INSTALLMESSAGE_ACTIONSTART.

Fält Typ Data
0 sträng noll
1 sträng MyAction
2 sträng Det här är beskrivningen av "MyAction"
3 sträng MyAction-mall: field1-data är [1]. data för fält 2 är [2].

 

Mallen för INSTALLMESSAGE_ACTIONSTART (fält 3) refererar till fälten 1 och 2, INSTALLMESSAGE_ACTIONDATA posten ska ha 2 fält som innehåller de data som behövs. Fälten kan vara antingen sträng- eller heltalsfält.

INSTALLMESSAGE_ACTIONDATA post.

Fält Typ Data
0 sträng noll
1 Int 2
2 sträng ActionData för MyAction

 

INSTALLATIONS MEDDELANDE_FILERIANVÄNDNING

Posten FILESINUSE är en post med variabel längd.

Fält Beskrivning
0 Det här fältet kan vara null. För en installation med ett grundläggande användargränssnitt kan det här fältet ange statisk text som ska visas i ListBox-kontrollen i dialogrutan FilesInUse. För en installation med ett fullständigt användargränssnitt har det här fältet ingen effekt eftersom texten anges i redigeringen av den anpassade dialogrutan FilesInUse.
1 Namnet på den fil som används.
2 Det här fältet identifierar processen som innehåller filen som används.Windows Installer version 4.0: Processens process-ID (PID) eller fönstrets rubrik för processen.
Windows Installer version 3.1 och tidigare: Det här fältet måste vara process-ID (PID) för processen.

 

Om du till exempel vill skicka ett FilesInUse-meddelande som visar två filer som används, red.exe och blue.exe, har posten fyra fält plus fältet 0. Formatet för posten skulle vara som det visas i följande tabell. Det här exemplet kräver Windows Installer version 4.0.

Windows Installer version 3.1 och tidigare: Fält 2 och 4 i följande exempel måste innehålla PID:erna för de processer som innehåller red.exe och blue.exe som används.

Fält Beskrivning
0 noll
1 Red.exe
2 Rubrik för rött fönster
3 Blue.exe
4 Rubrik för blått fönster

 

Anteckning

I Windows Installer version 4.0 visas inte filen och den utförliga loggen innehåller följande meddelanden om den PID som skickas från tjänsten inte har någon fönsterrubrik, till exempel ett systemfältprogram.

 

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

INSTALLMESSAGE_RESOLVESOURCE

Posten INSTALLMESSAGE_RESOLVESOURCE har sju fält. För att INSTALLMESSAGE_RESOLVESOURCE ska fungera korrekt kan det hända att en extern UI-hanterare inte hanterar INSTALLMESSAGE_RESOLVESOURCE meddelandet. Windows Installer måste hantera meddelandet INSTALLMESSAGE_RESOLVESOURCE. Det innebär att den externa UI-hanteraren returnerar 0 för att ange "ingen åtgärd har vidtagits" när INSTALLMESSAGE_RESOLVESOURCE meddelandet filtreras. Det bästa sättet är att undvika att skicka ett RESOLVESOURCE-meddelande.

Fält Beskrivning
0 noll
1 noll
2 Paketnamn.
3 Produktkod.
4 Relativ sökväg, om känd, kan vara null.
5 0
6 Om paketkoden ska verifieras. Värdet "1" anger att paketkoden ska verifieras. Värdet "0" anger att paketet inte ska valideras.
7 Krävs disk från medietabellen. Värdet "0" anger att alla diskar är acceptabla.