Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Bevor Sie eine der folgenden Datenbank funktionen aus einem Programm aufrufen, z. B. eine benutzerdefinierte Aktion oder einen Automatisierungsprozess, muss das Installationsprogramm zuerst die CostInitialize-Aktion, FileCost-Aktionund CostFinalize-Aktionausführen.
Es folgt eine Liste der Datenbankfunktionen, die in Windows Installer verwendet werden:
- MsiGetComponentState-
- MsiGetFeatureCost-
- MsiGetFeatureState-
- MsiGetFeatureValidStates
- MsiGetSourcePath-
- MsiGetTargetPath-
- MsiSetComponentState-
- MsiSetFeatureState-
- MsiSetInstallLevel-
- MsiSetTargetPath-
- MsiVerifyDiskSpace-
Vor dem Aufrufen MsiSetFeatureAttributes aus einem Programm muss das Installationsprogramm zuerst die CostInitialize-Aktion ausführen. Anschließend führt das Installationsprogramm die CostFinalize-Aktion nach MsiSetFeatureAttributesaus.
Das folgende Beispiel veranschaulicht die Reihenfolge, in der Funktionsaktionen aufgerufen werden müssen, wenn MsiGetTargetPath- in einem Programm verwendet wird.
#include <windows.h>
#include <Msiquery.h>
#include <tchar.h>
#pragma comment(lib, "msi.lib")
int main()
{
MSIHANDLE hInstall;
TCHAR *szBuf;
DWORD cch = 0 ;
if(MsiOpenPackage(_T("PathToPackage...."), &hInstall) == ERROR_SUCCESS)
{
if(MsiDoAction(hInstall, _T("CostInitialize"))==ERROR_SUCCESS
&& MsiDoAction(hInstall, _T("FileCost"))==ERROR_SUCCESS
&& MsiDoAction(hInstall, _T("CostFinalize"))==ERROR_SUCCESS)
{
if(MsiGetTargetPath(hInstall, _T("FolderName"), _T(""),&cch)==ERROR_MORE_DATA)
{
cch++; // add 1 to include null terminator since MsiGetTargetPath does not include it on return
szBuf = (TCHAR *) malloc(cch*sizeof(TCHAR));
if(szBuf)
{
if(MsiGetTargetPath(hInstall, _T("FolderName"), szBuf,&cch)==ERROR_SUCCESS)
{
// Add code to use szBuf here
}
free(szBuf);
}
}
}
MsiCloseHandle(hInstall);
}
return 0;
}