Bagikan melalui


Fungsi VerInstallFileA (winver.h)

Menginstal file yang ditentukan berdasarkan informasi yang dikembalikan dari fungsi VerFindFile . VerInstallFile mendekompresi file, jika perlu, menetapkan nama file unik, dan memeriksa kesalahan, seperti file yang kedaluarsa.

Sintaks

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
);

Parameter

[in] uFlags

Jenis: DWORD

Parameter ini bisa menjadi salah satu nilai berikut. Semua bit lainnya dicadangkan.

Nilai Makna
VIFF_FORCEINSTALL
0x0001
Menginstal file terlepas dari nomor versi yang tidak cocok. Fungsi ini hanya memeriksa kesalahan fisik selama penginstalan.
VIFF_DONTDELETEOLD
0x0002
Menginstal file tanpa menghapus file yang diinstal sebelumnya, jika file yang diinstal sebelumnya tidak ada di direktori tujuan.

[in] szSrcFileName

Jenis: LPCTSTR

Nama file yang akan diinstal. Ini adalah nama file dalam direktori yang diarahkan oleh parameter szSrcDir ; nama file hanya dapat menyertakan nama file dan ekstensi, bukan jalur.

[in] szDestFileName

Jenis: LPCTSTR

Nama VerInstallFile akan memberikan file baru saat penginstalan. Nama file ini mungkin berbeda dari nama file di direktori szSrcFileName . Nama baru hanya boleh menyertakan nama file dan ekstensi, bukan jalur.

[in] szSrcDir

Jenis: LPCTSTR

Nama direktori tempat file dapat ditemukan.

[in] szDestDir

Jenis: LPCTSTR

Nama direktori tempat file harus diinstal. VerFindFile mengembalikan nilai ini dalam parameter szDestDir-nya .

[in] szCurDir

Jenis: LPCTSTR

Nama direktori tempat versi file ini yang sudah ada sebelumnya dapat ditemukan. VerFindFile mengembalikan nilai ini dalam parameter szCurDir-nya .

[out] szTmpFile

Jenis: LPTSTR

Nama salinan sementara file sumber. Buffer harus setidaknya _MAX_PATH karakter panjang, meskipun ini tidak diperlukan, dan harus kosong pada input.

[in, out] puTmpFileLen

Jenis: PUINT

Panjang buffer szTmpFile . Penunjuk ini tidak boleh NULL.

Saat fungsi kembali, lpuTmpFileLen menerima ukuran, dalam karakter, data yang dikembalikan dalam szTmpFile, termasuk karakter null yang mengakhiri. Jika buffer terlalu kecil untuk berisi semua data, lpuTmpFileLen akan menjadi ukuran buffer yang diperlukan untuk menyimpan data.

Nilai kembali

Jenis: DWORD

Nilai yang dikembalikan adalah bitmask yang menunjukkan pengecualian. Ini bisa berupa satu atau beberapa nilai berikut. Semua nilai lainnya dicadangkan.

Mengembalikan kode/nilai Deskripsi
VIF_ACCESSVIOLATION
0x00000200L
Operasi baca, buat, hapus, atau ganti nama gagal karena pelanggaran akses.
VIF_BUFFTOOSMALL
0x00040000L
Buffer szTmpFile terlalu kecil untuk memuat nama file sumber sementara. Saat fungsi kembali, lpuTmpFileLen berisi ukuran buffer yang diperlukan untuk menyimpan nama file.
VIF_CANNOTCREATE
0x00000800L
Fungsi tidak dapat membuat file sementara. Kesalahan spesifik dapat dijelaskan oleh bendera lain.
VIF_CANNOTDELETE
0x00001000L
Fungsi tidak dapat menghapus file tujuan, atau tidak dapat menghapus versi file yang ada yang terletak di direktori lain. Jika bit VIF_TEMPFILE diatur, penginstalan gagal, dan file tujuan mungkin tidak dapat dihapus.
VIF_CANNOTDELETECUR
0x00004000L
Versi file yang ada tidak dapat dihapus dan VIFF_DONTDELETEOLD tidak ditentukan.
VIF_CANNOTLOADCABINET
0x00100000L
Fungsi tidak dapat memuat file kabinet.
VIF_CANNOTLOADLZ32
0x00080000L
Fungsi tidak dapat memuat file terkompresi.
VIF_CANNOTREADDST
0x00020000L
Fungsi tidak dapat membaca file tujuan (yang sudah ada). Ini mencegah fungsi memeriksa atribut file.
VIF_CANNOTREADSRC
0x00010000L
Fungsi tidak dapat membaca file sumber. Ini bisa berarti bahwa jalur tidak ditentukan dengan benar.
VIF_CANNOTRENAME
0x00002000L
Fungsi tidak dapat mengganti nama file sementara, tetapi sudah menghapus file tujuan.
VIF_DIFFCODEPG
0x00000010L
File baru memerlukan halaman kode yang tidak dapat ditampilkan oleh versi sistem yang saat ini berjalan. Kesalahan ini dapat ditimpa dengan memanggil VerInstallFile dengan set bendera VIFF_FORCEINSTALL .
VIF_DIFFLANG
0x00000008L
File baru dan yang sudah ada sebelumnya memiliki nilai bahasa atau halaman kode yang berbeda. Kesalahan ini dapat ditimpa dengan memanggil VerInstallFile lagi dengan bendera VIFF_FORCEINSTALL diatur.
VIF_DIFFTYPE
0x00000020L
File baru memiliki jenis, subjenis, atau sistem operasi yang berbeda dari file yang sudah ada sebelumnya. Kesalahan ini dapat ditimpa dengan memanggil VerInstallFile lagi dengan bendera VIFF_FORCEINSTALL diatur.
VIF_FILEINUSE
0x00000080L
File yang sudah ada sebelumnya sedang digunakan oleh sistem dan tidak dapat dihapus.
VIF_MISMATCH
0x00000002L
File baru dan yang sudah ada sebelumnya berbeda dalam satu atau beberapa atribut. Kesalahan ini dapat ditimpa dengan memanggil VerInstallFile lagi dengan bendera VIFF_FORCEINSTALL diatur.
VIF_OUTOFMEMORY
0x00008000L
Fungsi tidak dapat menyelesaikan operasi yang diminta karena memori yang tidak mencukup. Umumnya, ini berarti aplikasi kehabisan memori yang mencoba memperluas file terkompresi.
VIF_OUTOFSPACE
0x00000100L
Fungsi tidak dapat membuat file sementara karena ruang disk tidak cukup pada drive tujuan.
VIF_SHARINGVIOLATION
0x00000400L
Operasi baca, buat, hapus, atau ganti nama gagal karena pelanggaran berbagi.
VIF_SRCOLD
0x00000004L
File yang akan diinstal lebih lama dari file yang sudah ada sebelumnya. Kesalahan ini dapat ditimpa dengan memanggil VerInstallFile lagi dengan bendera VIFF_FORCEINSTALL diatur.
VIF_TEMPFILE
0x00000001L
Salinan sementara file baru ada di direktori tujuan. Penyebab kegagalan tercermin dalam bendera lain.
VIF_WRITEPROT
0x00000040L
File yang sudah ada sebelumnya dilindungi terhadap penulisan. Kesalahan ini dapat ditimpa dengan memanggil VerInstallFile lagi dengan bendera VIFF_FORCEINSTALL diatur.

Keterangan

Fungsi ini berfungsi pada gambar file 16,32-, dan 64-bit.

VerInstallFile menyalin file dari direktori sumber ke direktori tujuan. Jika szCurDir menunjukkan bahwa versi file sebelumnya ada pada sistem, VerInstallFile membandingkan informasi stempel versi file. Jika versi file yang diinstal sebelumnya lebih baru daripada versi baru, atau jika atribut file secara signifikan berbeda, misalnya, jika mereka dalam bahasa yang berbeda, maka VerInstallFile mengembalikan dengan satu atau beberapa kode kesalahan yang dapat dipulihkan.

VerInstallFile meninggalkan file sementara di direktori tujuan. Aplikasi dapat mengambil alih kesalahan atau menghapus file sementara. Jika aplikasi mengambil alih kesalahan, VerInstallFile menghapus versi yang diinstal sebelumnya dan mengganti nama file sementara dengan nama file asli.

Catatan

Header winver.h mendefinisikan VerInstallFile sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta praprosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header winver.h (termasuk Windows.h)
Pustaka Version.lib
DLL Api-ms-win-core-version-l1-1-0.dll

Lihat juga

Konseptual

Referensi

VerFindFile

Informasi Versi