Schemaläggningsalternativ för anpassad handlingsexekvering
Eftersom en anpassad åtgärd kan schemaläggas i både användargränssnittet och köra sekvenstabeller, och kan köras antingen i tjänsten eller klientprocessen, kan en anpassad åtgärd köras flera gånger.
Observera att installationsprogrammet:
- Kör åtgärder i en sekvenstabell omedelbart som standard.
- Kör inte en åtgärd om fältet villkorsuttryck i sekvenstabellen utvärderas till False.
- Bearbetar UI-sekvenstabellen i klientprocessen om den interna användarens gränssnittsnivå är inställd på det fullständiga användargränssnittsläget (se MsiSetInternalUI för en beskrivning av användargränssnittsnivåer).
- Registreras en programtjänst som standard när du använder Windows 2000, och i det här fallet bearbetas körningssekvenstabellen i installationsprogramtjänsten.
Du kan använda följande alternativflaggor för att styra omedelbar körning av flera anpassade åtgärder. Om du vill ange ett alternativ lägger du till värdet i den här tabellen till värdet i fältet Typ i tabellen CustomAction. Ingen av följande flaggor ska användas med anpassade åtgärder för uppskjuten körning.
-
(standard)
-
Hexadecimal: 0x00000000
Decimal: 0
Kör alltid. Åtgärden kan köras två gånger om den finns i båda sekvenstabellerna.
-
msidbCustomActionTypeFirstSequence
-
Hexadecimal: 0x00000100
Decimal: 256
Kör högst en gång om det finns i båda sekvenstabellerna. Hoppar alltid över åtgärden i exekveringssekvensen om användargränssnittssekvensen har körts. Ingen effekt i användargränssnittssekvensen. Åtgärden behöver inte vara med eller köras i användargränssnittssekvensen för att kunna hoppas över i körningssekvensen. Påverkas inte av installation av tjänstregistrering.
-
msidbCustomActionTypeOncePerProcess
-
Hexadecimal: 0x00000200
Decimal: 512
Kör en gång per process om den finns i båda sekvenstabellerna. Hoppar över åtgärden i körningssekvensen om användargränssnittssekvensen har körts i samma process, till exempel båda körs i klientprocessen. Används för att förhindra att åtgärder som ändrar sessionstillståndet, till exempel egenskaps- och databasdata, körs två gånger.
-
msidbCustomActionTypeClientRepeat
-
Hexadecimal: 0x00000300
Decimal: 768
Utför endast om det körs på klienten efter att användargränssnittets sekvens har körts. Åtgärden körs endast om körningssekvensen körs på klienten efter UI-sekvensen. Kan användas för att ange antingen/eller logik, eller för att förhindra den användargränssnittsrelaterade bearbetningen om den redan är klar för klientsessionen.
Observera att om du vill köra en anpassad åtgärd under två olika körningslägen skapar du två poster i tabellen CustomAction . Om du till exempel vill ha en anpassad åtgärd som anropar ett DLL (C/C++ Dynamic Link Library) ( anpassad åtgärdstyp 1) både när läget är MSIRUNMODE_SCHEDULED och MSIRUNMODE_ROLLBACK placerar du två poster i CustomAction-tabellen som anropar samma DLL men som har olika numeriska typer. Inkludera kod som anropar MsiGetMode för att avgöra när du ska köra vilken anpassad åtgärd.
Relaterade ämnen