Udostępnij za pośrednictwem


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.

Dynamic-Link biblioteki

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.

skrypty

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

Pliki Wykonywalne

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.

Dostęp do bazy danych lub sesji z poziomu akcji niestandardowej