Toegang tot de huidige installatiesessie vanuit een aangepaste actie
Niet-uitgestelde aangepaste acties die dynamische-koppelingsbibliotheken of scripts aanroepen, hebben mogelijk toegang tot een actieve installatie om de kenmerken van de huidige installatiesessie te raadplegen of te wijzigen. Er kan slechts één sessie--object bestaan voor elk proces en aangepaste actiescripts mogen niet proberen een andere sessie te maken.
Aangepaste acties kunnen alleen tijdelijke rijen, kolommen of tabellen toevoegen, wijzigen of verwijderen uit een database. Aangepaste acties kunnen geen permanente gegevens in een database wijzigen, bijvoorbeeld gegevens die deel uitmaken van de database die op schijf is opgeslagen.
Voor toegang tot een actieve installatie worden aangepaste acties die dynamic-linkbibliotheken (DLL) aanroepen, voorzien van een handle van het type MSIHANDLE voor de huidige sessie, als enig argument naar het toegangspunt van de DLL dat in de kolom Doel van de CustomAction Tablewordt genoemd. Omdat het installatieprogramma deze handle biedt, mag de aangepaste actie deze niet sluiten. Bijvoorbeeld, om de handle hInstall van het installatieprogramma te verkrijgen, wordt de functie voor de aangepaste actie als volgt gedeclareerd.
UINT __stdcall CustomAction(MSIHANDLE hInstall)
Voor alleen-lezentoegang tot de huidige database verkrijgt u de databasehandle door MsiGetActiveDatabase op te roepen. Zie Een databasehandgreep verkrijgenvoor meer informatie.
Aangepaste acties die zijn geschreven in VBScript of JScript, hebben toegang tot de huidige installatiesessie met behulp van het Sessieobject. Het installatieprogramma maakt een Session-object met de naam 'Session' dat verwijst naar de huidige installatie. Voor alleen-lezentoegang tot de huidige database gebruikt u de eigenschap Database van het object Session.
Omdat een script wordt uitgevoerd vanuit de context van het Session-object, is het niet altijd nodig om eigenschappen en methoden volledig te specificeren. In het volgende voorbeeld kan de verwijzing Naar mij bij het gebruik van VBScript het Sessie--object vervangen, bijvoorbeeld de volgende drie regels zijn gelijkwaardig.
Session.SetInstallLevel 1
Me.SetInstallLevel 1
SetInstallLevel 1
U hebt geen toegang tot de huidige installatiesessie vanuit aangepaste acties waarmee uitvoerbare bestanden worden aangeroepen die zijn gestart met een opdrachtregel, bijvoorbeeld Aangepast actietype 2 en Aangepast actietype 18.
aangepaste acties voor uitgestelde uitvoering
U hebt geen toegang tot de huidige installatiesessie of alle eigenschapsgegevens van een aangepaste actie voor de uitgestelde uitvoering. Voor meer informatie, zie Het verkrijgen van contextinformatie voor aangepaste acties met uitgestelde uitvoering.
Verwante onderwerpen