VerInstallFile

機能
ファイルをインストールする
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
(戻り値)コピー元のファイル名を受け取るバッファ
MAX_PATH(=256)以上を確保すること
lpuTnpFileLen
同、バッファのバイト数
戻り値
正常終了のとき         定数の組み合わせ
エラーのとき           0
uFlagsの定数

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が小さすぎる