ファイルをインストールする
Declare Function VerInstallFile Lib "version.dll" Alias "VerInstallFileA" _
(ByVal uFlags As Long, ByVal szSrcFileName As String, ByVal szDestFileName As String, _
ByVal szSrcDir As String, ByVal szDestDir As String, ByVal szCurDir As String, _
ByVal szTmpFile As String, ByVal lpuTnpFileLen As Long) As Long
Declare Function VerInstallFile Lib "version.dll" Alias "VerInstallFileA" _
(ByVal uFlags As Integer, ByVal szSrcFileName As String, ByVal szDestFileName As String, _
ByVal szSrcDir As String, ByVal szDestDir As String, ByVal szCurDir As String, _
ByVal szTmpFile As String, ByVal lpuTnpFileLen As Integer) As Integer
DWORD VerInstallFile(
DWORD uFlags,
LPTSTR szSrcFileName,
LPTSTR szDestFileName,
LPTSTR szSrcDir,
LPTSTR szDestDir,
LPTSTR szCurDir,
LPTSTR szTmpFile,
PUINT lpuTmpFileLen
);
引数
uFlags
関数の動作条件を指定する定数szSrcFileName
インストールするファイル名(パス名を含まない)szDestFileName
インストール後のファイル名(通常はszSrcFileNameと同じ)szSrcDir
コピー元ファイルのあるディレクトリ名szDestDir
インストール先のディレクトリ名(VerFindFile()関数の戻り値)szCurDir
現バージョンのファイルのあるディレクトリ名szTmpFile
(戻り値)コピー元のファイル名を受け取るバッファlpuTnpFileLen
MAX_PATH(=256)以上を確保すること
同、バッファのバイト数戻り値
正常終了のとき 定数の組み合わせuFlagsの定数
エラーのとき 0
戻り値の定数
VIFF_FORCEINTALL = &H1 バージョンチェックなしにファイルをインストールする
VIFF_DONTDELETEOLD = &H2 インストール先になければ既存のバージョンを削除しない
あれば上書きする
VIF_TEMPFILE = &H1 新しいファイルのTempファイルが残っているので削除が必要
VIF_MISMATCH = &H2 既存のファイルとバージョン属性が異なる
VIF_SRCOLD = &H4 既存のファイルのほうがバージョンが新しい
VIF_DIFFLANG = &H8 新しいバージョンが既存言語と異なる
VIF_DIFFCODEPG = &H10 新しいバージョンのcode pageが必要
VIF_DIFFTYPE = &H20 新しいバージョンが既存タイプと異なる
VIF_WRITEPROT = &H40 既存のファイルが書込み禁止になってる
VIF_FILEINUSE = &H80 既存のファイルが使用中
VIF_OUTOFSPACE = &H100 ディスクスペースが不足
VIF_ACCESSVIOLATION = &H200 アクセス違反によるエラー
VIF_SHARINGVIOLATION = &H400 共有違反による違反
VIF_CANNOTCREATE = &H800 Tempファイルが作られなかった
VIF_CANNOTDELETE = &H1000 既存ファイルを削除できなかった
VIF_CANNOTRENAME = &H2000 Tempファイルを既存のファイル名に変更できなかった
VIF_CANNOTDELETECUR = &H4000 既存ファイルを削除できなかった
(VIFF_DONTDELETEOLDが指定されてない)
VIF_OUTOFMEMORY = &H8000& メモリ不足
VIF_CANNOTREADSRC = &H10000 ファイルを読み込めなかった
VIF_CANNOTREADDST = &H20000 既存のファイルを読み込めなかった
VIF_BUFFTOOSMALL = &H40000 TmpFileLenが小さすぎる