Partager via


MsiGetTargetPathA, fonction (msiquery.h)

La fonction msiGetTargetPath retourne le chemin cible complet d’un dossier de la table Directory.

Syntaxe

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

Paramètres

[in] hInstall

Gérez l’installation fournie à une action personnalisée DLL ou obtenue via msiOpenPackage, MsiOpenPackageExou MsiOpenProduct.

[in] szFolder

Chaîne terminée par null qui spécifie un enregistrement de la table répertoire . Si le répertoire est un répertoire racine, il peut s’agir d’une valeur de la colonne DefaultDir. Sinon, il doit s’agir d’une valeur de la colonne Directory.

[out] szPathBuf

Pointeur vers la mémoire tampon qui reçoit le chemin d’accès cible complet terminé par null. N’essayez pas de déterminer la taille de la mémoire tampon en transmettant une valeur Null (value=0) pour szPathBuf. Vous pouvez obtenir la taille de la mémoire tampon en passant une chaîne vide (par exemple « »). La fonction retourne ensuite ERROR_MORE_DATA et pcchPathBuf contient la taille de mémoire tampon requise dans les TCHAR, sans inclure le caractère null de fin. Lors du retour de ERROR_SUCCESS, pcchPathBuf contient le nombre de TCHAR écrits dans la mémoire tampon, sans inclure le caractère null de fin.

[in, out] pcchPathBuf

Pointeur vers la variable qui spécifie la taille, dans TCHARs, de la mémoire tampon pointée par la variable szPathBuf Lorsque la fonction retourne ERROR_SUCCESS, cette variable contient la taille des données copiées dans szPathBuf, sans inclure le caractère null de fin. Si szPathBuf n’est pas suffisamment volumineux, la fonction retourne ERROR_MORE_DATA et stocke la taille requise, sans inclure le caractère null de fin, dans la variable pointée par pcchPathBuf.

Valeur de retour

La fonction msiGetTargetPath retourne les valeurs suivantes :

Remarques

Si ERROR_MORE_DATA est retournée, le paramètre qui est un pointeur donne la taille de la mémoire tampon requise pour contenir la chaîne. Si ERROR_SUCCESS est retourné, il donne le nombre de caractères écrits dans la mémoire tampon de chaîne. Par conséquent, vous pouvez obtenir la taille de la mémoire tampon en transmettant une chaîne vide (par exemple « ») pour le paramètre qui spécifie la mémoire tampon. N’essayez pas de déterminer la taille de la mémoire tampon en passant une valeur Null (value=0).

Avant d’appeler cette fonction, le programme d’installation doit d’abord exécuter l’action CostInitialize, action FileCostet action CostFinalize. Pour plus d’informations, consultez Appel de fonctions de base de données à partir de programmes.

MsiGetTargetPath retourne le chemin d’accès par défaut du répertoire cible créé dans le package si l’emplacement actuel de la cible n’est pas disponible pour une installation. Par exemple, si, pendant une installation de maintenance un répertoire cible à un emplacement réseau n’est pas disponible, le programme d’installation réinitialise les chemins d’accès du répertoire cible à leurs valeurs par défaut. Pour obtenir le chemin d’accès réel du répertoire cible dans ce cas, appelez MsiProvideComponent pour un composant connu pour avoir été précédemment installé dans le répertoire recherché et définissez dwInstallMode sur INSTALLMODE_NODETECTION.

Pour plus d’informations, consultez Appel de fonctions de base de données à partir de programmes.

Si la fonction échoue, vous pouvez obtenir des informations d’erreur étendues à l’aide de MsiGetLastErrorRecord.

Note

L’en-tête msiquery.h définit MsiGetTargetPath comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Exigences

Exigence Valeur
client minimum pris en charge Windows Installer 5.0 sur Windows Server 2012, Windows 8, Windows Server 2008 R2 ou Windows 7. Windows Installer 4.0 ou Windows Installer 4.5 sur Windows Server 2008 ou Windows Vista. Windows Installer sur Windows Server 2003 ou Windows XP
plateforme cible Windows
d’en-tête msiquery.h
bibliothèque Msi.lib
DLL Msi.dll

Voir aussi

Fonctions d’emplacement du programme d’installation

passage de null en tant qu’argument des fonctions Windows Installer