Функция MsiGetTargetPathA (msiquery.h)

Функция MsiGetTargetPath возвращает полный целевой путь к папке в таблице Directory.

Синтаксис

UINT MsiGetTargetPathA(
  [in]      MSIHANDLE hInstall,
  [in]      LPCSTR    szFolder,
  [out]     LPSTR     szPathBuf,
  [in, out] LPDWORD   pcchPathBuf
);

Параметры

[in] hInstall

Обработка установки, предоставленной пользовательскому действию DLL или полученная с помощью MsiOpenPackage, MsiOpenPackageEx или MsiOpenProduct.

[in] szFolder

Строка, завершающаяся значением NULL, указывающая запись таблицы Directory. Если каталог является корневым каталогом, это может быть значение из столбца DefaultDir. В противном случае это должно быть значение из столбца Каталог.

[out] szPathBuf

Указатель на буфер, который получает полный конечный путь, завершающийся null. Не пытайтесь определить размер буфера, передав значение NULL (value=0) для szPathBuf. Размер буфера можно получить, передав пустую строку (например, ""). Затем функция возвращает ERROR_MORE_DATA, а pcchPathBuf содержит требуемый размер буфера в TCHAR, не включая завершающий символ NULL. При возврате ERROR_SUCCESS pcchPathBuf содержит число TCHAR, записанных в буфер, не включая завершающий символ NULL.

[in, out] pcchPathBuf

Указатель на переменную, указывающую размер буфера в TCHAR, на который указывает переменная szPathBuf . Когда функция возвращает ERROR_SUCCESS, эта переменная содержит размер данных, скопированных в szPathBuf, не включая завершающий символ NULL. Если szPathBuf недостаточно велик, функция возвращает ERROR_MORE_DATA и сохраняет требуемый размер, не включая завершающий символ NULL, в переменной, на которую указывает pcchPathBuf.

Возвращаемое значение

Функция MsiGetTargetPath возвращает следующие значения:

Комментарии

Если возвращается ERROR_MORE_DATA, параметр, являющийся указателем, задает размер буфера, необходимый для хранения строки. Если возвращается ERROR_SUCCESS, отображается количество символов, записанных в буфер строк. Поэтому размер буфера можно получить, передав пустую строку (например, "") для параметра, задающего буфер. Не пытайтесь определить размер буфера путем передачи значения Null (value=0).

Перед вызовом этой функции установщик должен сначала запустить действия CostInitialize, FileCost и CostFinalize. Дополнительные сведения см. в разделе Вызов функций базы данных из программ.

MsiGetTargetPath возвращает путь по умолчанию к целевому каталогу, созданным в пакете, если текущее расположение целевого объекта недоступно для установки. Например, если во время установки обслуживания целевой каталог в сетевом расположении недоступен, установщик сбрасывает пути к целевым каталогам по умолчанию. Чтобы получить фактический путь к целевому каталогу в этом случае, вызовите MsiProvideComponent для компонента, который, как известно, был ранее установлен в искомый каталог, и задайте для dwInstallMode значение INSTALLMODE_NODETECTION.

Дополнительные сведения см. в разделе Вызов функций базы данных из программ.

В случае сбоя функции можно получить расширенные сведения об ошибке с помощью MsiGetLastErrorRecord.

Примечание

Заголовок msiquery.h определяет MsiGetTargetPath как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

   
Минимальная версия клиента Установщик Windows 5.0 в Windows Server 2012, Windows 8, Windows Server 2008 R2 или Windows 7. Установщик Windows 4.0 или Установщик Windows 4.5 в Windows Server 2008 или Windows Vista. Установщик Windows в Windows Server 2003 или Windows XP
Целевая платформа Windows
Header msiquery.h
Библиотека Msi.lib
DLL Msi.dll

См. также раздел

Функции расположения установщика

Передача null в качестве аргумента функций установщика Windows