verInstallFileA 函式 (winver.h)
根據 VerFindFile 函式傳回的資訊安裝指定的檔案。 VerInstallFile 會在必要時解除壓縮檔案,並指派唯一的檔名,並檢查是否有錯誤,例如過期的檔案。
語法
DWORD VerInstallFileA(
[in] DWORD uFlags,
[in] LPCSTR szSrcFileName,
[in] LPCSTR szDestFileName,
[in] LPCSTR szSrcDir,
[in] LPCSTR szDestDir,
[in] LPCSTR szCurDir,
[out] LPSTR szTmpFile,
[in, out] PUINT puTmpFileLen
);
參數
[in] uFlags
類型: DWORD
此參數可以是下列其中一個值。 所有其他位都會保留。
值 | 意義 |
---|---|
|
不論版本號碼不符,都會安裝檔案。 函式只會在安裝期間檢查實體錯誤。 |
|
如果先前安裝的檔案不在目的地目錄中,則安裝檔案而不刪除先前安裝的檔案。 |
[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
傳回值是指出例外狀況的位掩碼。 它可以是下列一或多個值。 所有其他值都會保留。
傳回碼/值 | Description |
---|---|
|
讀取、建立、刪除或重新命名作業因存取違規而失敗。 |
|
szTmpFile 緩衝區太小,無法包含暫存原始程式檔的名稱。 當函式傳回時, lpuTmpFileLen 包含保存檔名所需的緩衝區大小。 |
|
函式無法建立臨時檔。 特定錯誤可由另一個旗標描述。 |
|
函式無法刪除目的地檔案,或無法刪除位於另一個目錄中的現有檔案版本。 如果已設定 VIF_TEMPFILE 位,則安裝失敗,而且可能無法刪除目的地檔案。 |
|
無法刪除現有的檔案版本,而且未指定 VIFF_DONTDELETEOLD 。 |
|
函式無法載入封包檔案。 |
|
函式無法載入壓縮檔案。 |
|
函式無法讀取現有) 檔案 (目的地。 這可防止函式檢查檔案的屬性。 |
|
函式無法讀取來源檔案。 這可能表示路徑未正確指定。 |
|
函式無法重新命名暫存盤,但已刪除目的地檔案。 |
|
新檔案需要目前執行之系統版本無法顯示的代碼頁。 呼叫已設定VIFF_FORCEINSTALL旗標的 VerInstallFile,即可覆寫此錯誤。 |
|
新的和預先存在的檔案有不同的語言或代碼頁值。 藉由再次呼叫 VerInstallFile 並設定 VIFF_FORCEINSTALL 旗標,即可覆寫此錯誤。 |
|
新檔案的類型、子類型或操作系統與預先存在的檔案不同。 藉由再次呼叫 VerInstallFile 並設定 VIFF_FORCEINSTALL 旗標,即可覆寫此錯誤。 |
|
系統正在使用預先存在的檔案,因此無法刪除。 |
|
新的和預先存在的檔案在一或多個屬性中有所不同。 您可以再次呼叫 VerInstallFile 並設定 VIFF_FORCEINSTALL 旗標來覆寫此錯誤。 |
|
函式因為記憶體不足而無法完成要求的作業。 一般而言,這表示應用程式已用盡記憶體嘗試擴充壓縮檔案。 |
|
函式無法建立臨時文件,因為目的地磁碟驅動器上的磁碟空間不足。 |
|
讀取、建立、刪除或重新命名作業失敗,因為共用違規。 |
|
要安裝的檔案比預先存在的檔案還舊。 您可以再次呼叫 VerInstallFile 並設定 VIFF_FORCEINSTALL 旗標來覆寫此錯誤。 |
|
新檔案的暫存復本位於目的地目錄中。 失敗的原因會反映在其他旗標中。 |
|
預先存在的檔案受到寫入保護。 您可以再次呼叫 VerInstallFile 並設定 VIFF_FORCEINSTALL 旗標來覆寫此錯誤。 |
備註
此函式適用於16位、32位和64位檔案映像。
VerInstallFile 會將檔案從來源目錄複製到目的地目錄。 如果 szCurDir 指出系統上存在舊版的檔案, VerInstallFile 會比較檔案的版本戳記資訊。 如果先前安裝的檔案版本比新版本還新,或者檔案的屬性明顯不同,例如,如果檔案的語言不同, 則 VerInstallFile 會傳回一或多個可復原的錯誤碼。
VerInstallFile 會離開目的地目錄中的臨時檔。 應用程式可以覆寫錯誤或刪除臨時檔。 如果應用程式覆寫錯誤, VerInstallFile 會刪除先前安裝的版本,並使用原始檔名重新命名暫存盤。
注意
winver.h 標頭會將 VerInstallFile 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | winver.h (包括 Windows.h) |
程式庫 | Version.lib |
Dll | Api-ms-win-core-version-l1-1-0.dll |
另請參閱
概念
參考