Uzyskiwanie dostępu do bieżącej sesji Instalatora z poziomu akcji niestandardowej
Nieodroczone operacje niestandardowe wywołujące biblioteki dynamicznego linku lub skrypty mogą uzyskiwać dostęp do uruchomionej instalacji w celu wykonywania zapytań lub modyfikowania atrybutów bieżącej sesji instalacji. Dla każdego procesu może istnieć tylko jeden obiekt sesji, a niestandardowe skrypty akcji nie mogą próbować utworzyć innej sesji.
Akcje niestandardowe mogą dodawać, modyfikować lub usuwać tylko tymczasowe wiersze, kolumny lub tabele z bazy danych. Akcje niestandardowe nie mogą modyfikować trwałych danych w bazie danych, na przykład danych, które są częścią bazy danych przechowywanej na dysku.
Aby uzyskać dostęp do uruchomionej instalacji, akcje niestandardowe, które wywołują biblioteki łączące dynamicznie (DLL), są przekazywane jako uchwyt typu MSIHANDLE dla bieżącej sesji, jako jedyny argument punktu wejścia DLL nazwanego w kolumnie Target tabeli CustomAction . Ponieważ instalator udostępnia ten uchwyt, akcja niestandardowa nie powinna go zamykać; na przykład, aby odebrać uchwyt hInstall z instalatora, funkcja akcji niestandardowej jest zadeklarowana w następujący sposób.
UINT __stdcall CustomAction(MSIHANDLE hInstall)
Aby uzyskać dostęp tylko do odczytu do bieżącej bazy danych, uzyskaj dojście bazy danych przez wywołanie MsiGetActiveDatabase. Aby uzyskać więcej informacji, zobacz Uzyskiwanie dojścia bazy danych.
Akcje niestandardowe napisane w języku VBScript lub JScript mogą uzyskiwać dostęp do bieżącej sesji instalacji przy użyciu obiektu sesji . Instalator tworzy obiekt Session o nazwie "Session" odwołujący się do bieżącej instalacji. Aby uzyskać dostęp tylko do odczytu do bieżącej bazy danych, użyj właściwości Database obiektu sesji.
Ponieważ skrypt jest uruchamiany z kontekstu obiektu sesji , nie zawsze jest konieczne pełne kwalifikowanie właściwości i metod. W poniższym przykładzie w przypadku używania języka VBScript odwołanie me może zastąpić obiekt sesji, na przykład następujące trzy wiersze są równoważne.
Session.SetInstallLevel 1
Me.SetInstallLevel 1
SetInstallLevel 1
Nie można uzyskać dostępu do bieżącej sesji instalatora z akcji niestandardowych, które wywołują pliki wykonywalne uruchamiane za pomocą wiersza poleceń, takich jak Typ akcji niestandardowej 2 i Typ akcji niestandardowej 18.
Niestandardowe akcje z odroczonym wykonaniem
Nie można uzyskać dostępu do bieżącej sesji instalatora ani do wszystkich danych właściwości z niestandardowej akcji wykonanej w trybie odroczonym. Aby uzyskać więcej informacji, zobacz Uzyskiwanie informacji kontekstowych dla odroczonego wykonania akcji niestandardowych.
Tematy pokrewne