CPackage::GetFileDirectory

The CPackage::GetFileDirectory function returns the installation directory for the specified file.

UINT GetFileDirectory(
BOOL bExpandDirectory, // expand directory macros
DWORD dwFilePlatform, // file platform
DWORD dwFileChecksum, // file checksum
LPCTSTR lpszFileName, // file name in package
LPTSTR lpszDirectory, // installation directory buffer
UINT nMaxLength // buffer size
);

Parameters

bExpandDirectory
[in] Specifies if the installation directory should be expanded, resolving any environment variables or folder macros.
 
dwFilePlatform
[in] Specifies the target platform for the file.
 
This may be one of the following values:
Value Description
PACKAGE_FILE_PLATFORM_DEFAULT Return the installation directory for the file which is targeted for the current platform.
PACKAGE_FILE_PLATFORM_WIN95 The file may be applied to a system running Windows 95.
PACKAGE_FILE_PLATFORM_WIN98 The file may be applied to a system running Windows 98 or Windows 98 SE.
PACKAGE_FILE_PLATFORM_WINME The file may be applied to a system running Windows ME.
PACKAGE_FILE_PLATFORM_WINNT40 The file may be applied to a system running Windows NT 4.0.
PACKAGE_FILE_PLATFORM_WIN2000 The file may be applied to a system running Windows 2000.
PACKAGE_FILE_PLATFORM_WINXP The file may be applied to a system running Windows XP.
PACKAGE_FILE_PLATFORM_WIN2003 The files may be applied to a system running Windows Server 2003.
In addition to the above platform-specific values, there are predefined values which specify platform groups:
 
Value Description
PACKAGE_FILE_PLATFORM_WIN32 The file may be applied to any 32-bit version of the Windows operating system.
PACKAGE_FILE_PLATFORM_WIN9X The file may be applied to any system running Windows 95, Windows 98 or Windows ME. The file will not be applied on a system running Windows NT, Windows 2000 or Windows XP.
PACKAGE_FILE_PLATFORM_WINNT The file may be applied to any system running Windows NT, Windows 2000 or Windows XP. The file will not be applied on a system running Windows 95, Windows 98 or Windows ME.
PACKAGE_FILE_PLATFORM_WINDOWS The files may be applied to any system running any version of Microsoft Windows.
dwFileChecksum
[in] Specifies the 32-bit checksum for the file. If the package contains multiple file versions, this value is used to uniquely identify the file. This parameter is ignored if the PACKAGE_OPTION_MULTIPLE_VERSIONS package option has not been enabled or if the parameter value is zero.
 
lpszFileName
[in] A pointer to a null-terminated string which specifies the package file.
 
lpszInstallPath
[out] A pointer to a string buffer that will contain the installation directory for the specified file when the function returns. It is recommended that this buffer be at least MAX_PATH bytes in size. If this parameter is NULL, the function will return the length of the installation directory.
 
nMaxLength
[in] The maximum number of characters which may be stored in the lpszInstallPath buffer.

Return Values

If the CPackage::GetFileDirectory function succeeds, it will return the length of the installation directory for the specified file, not including the terminating null byte.

If the function fails, it will return a value of zero. To get extended error information, call GetLastError.

Remarks

The CPackage::GetFileDirectory function will return the installation directory for the specified file. If the bExpandDirectory parameter is non-zero, any environment variables or folder macros will be expanded. These are special tokens which are replaced when the package is applied on the target system. See the CPackage::SetFileDirectory function for more information about folder macros.

Requirements

Windows NT/2000/XP: Requires Windows NT 4.0 SP3 or later.
Windows 95/98: Requires Windows 95 or later.
Header: Include apatch.h.
Library: Use apatch32.lib.
Unicode: Implemented as Unicode and ANSI versions on Windows NT/2000/XP.

See Also

CPackage::SetFileDirectory