VerFindFile

機能
ファイルのインストール先を調べる
Declare Function VerFindFile Lib "version.dll" Alias "VerFindFileA" _
(ByVal dwFlags As Long, ByVal szFileName As String, ByVal szWinDir As String, _
ByVal szAppDir As String, ByVal szCurrDir As String, ByVal lpuCurDirLen As Long, _
ByVal szDestDir As String, ByVal lpuDestDirLen As Long) As Long
Declare Function VerFindFile Lib "version.dll" Alias "VerFindFileA" _
(ByVal dwFlags As Integer, ByVal szFileName As String, ByVal szWinDir As String, _
ByVal szAppDir As String, ByVal szCurrDir As String, ByVal lpuCurDirLen As Integer, _
ByVal szDestDir As String, ByVal lpuDestDirLen As Integer) As Integer

DWORD VerFindFile(
DWORD dwFlags,
LPTSTR szFileName,
LPTSTR szWinDir,
LPTSTR szAppDir,

LPTSTR szCurDir,

PUINT lpuCurDirLen,
LPTSTR szDestDir,

PUINT lpuDestDirLen
);
引数
dwFlags

関数の動作条件を指定する定数
szFileName
インストールするファイル名(パス名を含まない)
szWinDir
Windowsディレクトリ名
szAppDir
インストール先のディレクトリ名
szCurrDir
(戻り値)既存バージョンのあるディレクトリ名を受け取るバッファ
既存バージョンがないときは、長さ0の文字列が戻る
lpuCurDirLen
同、バッファのバイト数
szDestDir
(戻り値)インストール先のディレクトリ名を受け取るバッファ
MAX_PATH(=256)以上を確保すること
lpuDestDirLen
同、バッファのバイト数
戻り値
正常終了のとき         ファイルの状況を示す定数の組み合わせ
エラーのとき           0
備考
バージョン管理が必要なファイル(DLLなど)をシステムにインストールするとき
同じファイルの別のバージョンが存在するかどうかを調べて
この関数を実行して戻ったインストール先のディレクトリ名に基づいてVerInstallFile()関数を実行する
dwFlagsの定数
VFFF_ISSHAREDFILE = &H1                   共有ファイルである
0                                         共有ファイルではない
戻り値の定数

VFF_CURENDEST = &H1                       既存バージョンのファイルがszAppDirで指定したディレクトリにない
VFF_FILEINUSE = &H2                       既存ファイルは使用中である
VFF_BUFFOOSMALL = &H4                     szCurreDir、またはszDestDirのバッファが小さい