VerInstallFileW 関数 (winver.h)

VerFindFile 関数から返された情報に基づいて、指定されたファイルをインストールします。 VerInstallFile は、必要に応じてファイルを圧縮解除し、一意のファイル名を割り当て、古いファイルなどのエラーをチェックします。

構文

DWORD VerInstallFileW(
  [in]      DWORD   uFlags,
  [in]      LPCWSTR szSrcFileName,
  [in]      LPCWSTR szDestFileName,
  [in]      LPCWSTR szSrcDir,
  [in]      LPCWSTR szDestDir,
  [in]      LPCWSTR szCurDir,
  [out]     LPWSTR  szTmpFile,
  [in, out] PUINT   puTmpFileLen
);

パラメーター

[in] uFlags

型: DWORD

このパラメーターには、次の値のいずれかを指定できます。 その他のビットはすべて予約されています。

説明
VIFF_FORCEINSTALL
0x0001
バージョン番号の不一致に関係なく、ファイルをインストールします。 この関数は、インストール中の物理エラーのみをチェックします。
VIFF_DONTDELETEOLD
0x0002
以前にインストールしたファイルがコピー先ディレクトリにない場合は、以前にインストールしたファイルを削除せずにファイルをインストールします。

[in] szSrcFileName

種類: LPCTSTR

インストールするファイルの名前。 これは、 szSrcDir パラメーターによって指されるディレクトリ内のファイル名です。ファイル名には、パスではなく、ファイル名と拡張子のみを含めることができます。

[in] szDestFileName

種類: LPCTSTR

VerInstallFile という名前は、インストール時に新しいファイルを指定します。 このファイル名は、 szSrcFileName ディレクトリのファイル名とは異なる場合があります。 新しい名前には、パスではなく、ファイル名と拡張子のみを含める必要があります。

[in] szSrcDir

種類: LPCTSTR

ファイルが見つかるディレクトリの名前。

[in] szDestDir

種類: LPCTSTR

ファイルをインストールするディレクトリの名前。 VerFindFile は、 szDestDir パラメーターでこの値を返します。

[in] szCurDir

種類: LPCTSTR

このファイルの既存のバージョンが見つかるディレクトリの名前。 VerFindFile は、 szCurDir パラメーターでこの値を返します。

[out] szTmpFile

種類: LPTSTR

ソース ファイルの一時コピーの名前。 バッファーは 少なくとも_MAX_PATH 文字の長さにする必要がありますが、これは必須ではなく、入力時には空にする必要があります。

[in, out] puTmpFileLen

型: PUINT

szTmpFile バッファーの長さ。 このポインターは NULL にすることはできません。

関数が戻ると、 lpuTmpFileLen はszTmpFile で返されるデータのサイズ (終端の null 文字を含む) を文字単位で受け取ります。 バッファーが小さすぎてすべてのデータを格納できない場合、 lpuTmpFileLen はデータを保持するために必要なバッファーのサイズになります。

戻り値

型: DWORD

戻り値は、例外を示すビットマスクです。 これは、次の値のなかから 1 つまたは複数を指定できます。 その他の値はすべて予約されています。

リターン コード/値 Description
VIF_ACCESSVIOLATION
0x00000200L
アクセス違反が原因で、読み取り、作成、削除、または名前変更の操作が失敗しました。
VIF_BUFFTOOSMALL
0x00040000L
szTmpFile バッファーが小さすぎて、一時ソース ファイルの名前が格納されませんでした。 関数が戻ると、 lpuTmpFileLen には、ファイル名を保持するために必要なバッファーのサイズが含まれます。
VIF_CANNOTCREATE
0x00000800L
関数は一時ファイルを作成できません。 特定のエラーは、別のフラグで記述できます。
VIF_CANNOTDELETE
0x00001000L
関数は、コピー先ファイルを削除することも、別のディレクトリにある既存のバージョンのファイルを削除することもできません。 VIF_TEMPFILE ビットが設定されている場合、インストールは失敗し、コピー先ファイルを削除できない可能性があります。
VIF_CANNOTDELETECUR
0x00004000L
ファイルの既存のバージョンを削除できず、 VIFF_DONTDELETEOLD が指定されていません。
VIF_CANNOTLOADCABINET
0x00100000L
この関数はキャビネット ファイルを読み込めません。
VIF_CANNOTLOADLZ32
0x00080000L
関数は圧縮ファイルを読み込めません。
VIF_CANNOTREADDST
0x00020000L
関数は、コピー先 (既存の) ファイルを読み取ることができません。 これにより、関数がファイルの属性を調べることができなくなります。
VIF_CANNOTREADSRC
0x00010000L
関数はソース ファイルを読み取ることができません。 これは、パスが正しく指定されていないことを意味する可能性があります。
VIF_CANNOTRENAME
0x00002000L
関数は一時ファイルの名前を変更できませんが、コピー先ファイルは既に削除されています。
VIF_DIFFCODEPG
0x00000010L
新しいファイルには、現在実行中のシステムのバージョンでは表示できないコード ページが必要です。 このエラーは、VIFF_FORCEINSTALL フラグが設定された状態で VerInstallFile を呼び出すことによってオーバーライドできます。
VIF_DIFFLANG
0x00000008L
新しいファイルと既存のファイルの言語またはコード ページの値が異なります。 このエラーは、VIFF_FORCEINSTALL フラグを設定して VerInstallFile をもう一度呼び出すことでオーバーライドできます。
VIF_DIFFTYPE
0x00000020L
新しいファイルの種類、サブタイプ、またはオペレーティング システムは、既存のファイルとは異なります。 このエラーは、VIFF_FORCEINSTALL フラグを設定して VerInstallFile をもう一度呼び出すことでオーバーライドできます。
VIF_FILEINUSE
0x00000080L
既存のファイルはシステムによって使用されており、削除できません。
VIF_MISMATCH
0x00000002L
新しいファイルと既存のファイルは、1 つ以上の属性で異なります。 このエラーは、VIFF_FORCEINSTALL フラグを設定して VerInstallFile をもう一度呼び出すことでオーバーライドできます。
VIF_OUTOFMEMORY
0x00008000L
メモリ不足のため、関数は要求された操作を完了できません。 一般に、これは、アプリケーションが圧縮ファイルを拡張しようとしてメモリが不足したことを意味します。
VIF_OUTOFSPACE
0x00000100L
関数は、コピー先ドライブのディスク領域が不足しているため、一時ファイルを作成できません。
VIF_SHARINGVIOLATION
0x00000400L
共有違反が原因で、読み取り、作成、削除、または名前変更の操作が失敗しました。
VIF_SRCOLD
0x00000004L
インストールするファイルが既存のファイルよりも古い。 このエラーは、VIFF_FORCEINSTALL フラグを設定して VerInstallFile をもう一度呼び出すことでオーバーライドできます。
VIF_TEMPFILE
0x00000001L
新しいファイルの一時コピーは、コピー先ディレクトリにあります。 エラーの原因は、他のフラグに反映されます。
VIF_WRITEPROT
0x00000040L
既存のファイルは書き込み保護されています。 このエラーは、VIFF_FORCEINSTALL フラグを設定して VerInstallFile をもう一度呼び出すことでオーバーライドできます。

解説

この関数は、16 ビット、32 ビット、64 ビットのファイル イメージで動作します。

VerInstallFile は 、ソース ディレクトリからコピー先ディレクトリにファイルをコピーします。 szCurDir がシステム上に以前のバージョンのファイルが存在することを示す場合、VerInstallFile はファイルのバージョン スタンプ情報を比較します。 以前にインストールしたバージョンのファイルが新しいバージョンよりも新しいバージョンである場合、またはファイルの属性が異なる場合 (たとえば、言語が異なる場合)、 VerInstallFile は 1 つ以上の回復可能なエラー コードを返します。

VerInstallFile は 、一時ファイルをコピー先ディレクトリに残します。 アプリケーションは、エラーをオーバーライドするか、一時ファイルを削除できます。 アプリケーションでエラーがオーバーライドされた場合、 VerInstallFile は以前にインストールしたバージョンを削除し、一時ファイルの名前を元のファイル名に変更します。

注意

winver.h ヘッダーは、VerInstallFile をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winver.h (Windows.h を含む)
Library Version.lib
[DLL] Api-ms-win-core-version-l1-1-0.dll

関連項目

概念

リファレンス

VerFindFile

バージョン情報