Функция 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