Direktif INF CopyFiles
Direktif CopyFiles dapat melakukan salah satu hal berikut:
Menyebabkan satu file disalin dari media sumber ke direktori tujuan default.
Referensikan satu atau beberapa bagian yang ditentukan INF-writer di INF yang masing-masing menentukan daftar file yang akan disalin dari media sumber ke tujuan.
[DDInstall] |
[DDInstall.CoInstallers] |
[ClassInstall32] |
[ClassInstall32.ntx86] |
[ClassInstall32.ntia64] | (Windows XP and later versions of Windows)
[ClassInstall32.ntamd64] | (Windows XP and later versions of Windows)
[ClassInstall32.ntarm] | (Windows 8 and later versions of Windows)
[ClassInstall32.ntarm64] (Windows 10 version 1709 and later versions of Windows)
CopyFiles=@filename | file-list-section[, file-list-section]...
Direktif CopyFiles dapat ditentukan dalam salah satu bagian yang ditunjukkan dalam pernyataan sintaks formal. Arahan ini juga dapat ditentukan dalam salah satu bagian INF berikut:
Bagian add-interface yang direferensikan oleh direktif INF AddInterface dalam DDInstall. Bagian antarmuka .
Bagian antarmuka penginstalan yang dirujuk di bagian INF InterfaceInstall32
Setiap bagian bernama yang direferensikan oleh direktif CopyFiles memiliki satu atau beberapa entri formulir berikut:
[file-list-section]
destination-file-name[,[source-file-name][,[unused][,flag]]]
...
Bagian daftar file yang ditentukan penulis INF dapat memiliki sejumlah entri, masing-masing pada baris terpisah.
Setiap file-list-section dapat memiliki bagian file-list-section.security opsional yang terkait dari formulir berikut:
[file-list-section.security]
"security-descriptor-string"
Entri
destination-file-name
Menentukan nama file tujuan. Jika tidak ada nama file sumber yang diberikan, spesifikasi ini juga merupakan nama file sumber.
source-file-name
Menentukan nama file sumber. Jika nama file sumber dan tujuan untuk operasi penyalinan file sama, nama file sumber dapat dihilangkan.
tidak digunakan
Entri ini tidak lagi didukung di Windows 2000 dan versi Windows yang lebih baru.
Bendera
Bendera opsional ini, yang dinyatakan dalam notasi heksadesimal atau sebagai nilai desimal dalam entri bagian, dapat digunakan untuk mengontrol bagaimana (atau apakah) file sumber tertentu disalin ke tujuan. Satu atau beberapa nilai (ORed) untuk bendera yang ditentukan sistem berikut dapat ditentukan. Namun, beberapa bendera ini saling eksklusif:
0x00000001 (COPYFLG_WARN_IF_SKIP)
Kirim peringatan jika pengguna memilih untuk tidak menyalin file. Bendera ini dan yang berikutnya saling eksklusif, dan keduanya tidak relevan dengan file INF yang ditandatangani secara digital.
0x00000002 (COPYFLG_NOSKIP)
Jangan izinkan pengguna untuk melewati penyalinan file. Bendera ini tersirat jika paket driver ditandatangani.
0x00000004 (COPYFLG_NOVERSIONCHECK)
Abaikan versi file dan tulis file yang ada di direktori tujuan. Bendera ini dan dua berikutnya saling eksklusif. Bendera ini tidak relevan dengan file INF yang ditandatangani secara digital.
0x00000008 (COPYFLG_FORCE_FILE_IN_USE)
Paksa perilaku penggunaan file: jangan salin file yang ada dengan nama yang sama jika saat ini terbuka. Sebagai gantinya, salin file sumber yang diberikan dengan nama sementara sehingga dapat diganti namanya dan digunakan saat mulai ulang berikutnya terjadi.
0x00000010 (COPYFLG_NO_OVERWRITE)
Jangan ganti file yang ada di direktori tujuan dengan file sumber dengan nama yang sama. Bendera ini tidak dapat digabungkan dengan bendera lainnya.
0x00000020 (COPYFLG_NO_VERSION_DIALOG)
Jangan menulis file di direktori tujuan dengan file sumber jika file yang ada lebih baru dari file sumber.
Pemeriksaan yang lebih baru dilakukan menggunakan versi file, seperti yang diekstrak dari sumber daya versi file VS_VERSIONINFO. Untuk informasi selengkapnya, lihat Informasi Versi. Jika file target bukan gambar yang dapat dieksekusi atau sumber daya, atau file tidak berisi informasi versi file, maka penginstalan perangkat mengasumsikan bahwa file target lebih lama.
0x00000040 (COPYFLG_OVERWRITE_OLDER_ONLY)
Salin file sumber ke direktori tujuan hanya jika file di tujuan digantikan oleh versi yang lebih baru. Bendera ini tidak relevan dengan file INF yang ditandatangani secara digital. Pemeriksaan versi menggunakan prosedur yang sama seperti yang dijelaskan di atas dalam COPYFLG_NO_VERSION_DIALOG.
0x00000400 (COPYFLG_REPLACEONLY)
Salin file sumber ke direktori tujuan hanya jika file sudah ada di direktori tujuan.
0x00000800 (COPYFLG_NODECOMP) (Windows 7 dan yang lebih baru)
Salin file sumber ke direktori tujuan tanpa mendekompresi file sumber jika dikompresi.
0x00001000 (COPYFLG_REPLACE_BOOT_FILE)
File ini diperlukan oleh pemuat sistem. Sistem akan meminta pengguna untuk memulai ulang sistem.
0x00002000 (COPYFLG_NOPRUNE)
Jangan hapus operasi ini sebagai akibat dari pengoptimalan.
Misalnya, Windows mungkin menentukan bahwa operasi penyalinan file tidak diperlukan karena file sudah ada. Namun, penulis INF tahu bahwa operasi diperlukan dan mengarahkan Windows untuk mengambil alih pengoptimalannya dan melakukan operasi file.
Bendera ini dapat digunakan untuk memastikan bahwa file disalin jika juga ditentukan dalam arahan INF DelFiles atau arahan INF RenFiles .
0x00004000 (COPYFLG_IN_USE_RENAME)
Jika file sumber tidak dapat disalin karena file tujuan sedang digunakan, ganti nama file tujuan, lalu salin file sumber ke file tujuan, dan hapus file tujuan yang diganti namanya. Jika file tujuan tidak dapat diganti namanya, selesaikan operasi salin selama sistem berikutnya dimulai ulang. Jika file tujuan yang diganti namanya tidak dapat dihapus, hapus file tujuan yang diganti namanya selama sistem berikutnya dimulai ulang.
security-descriptor-string
Menentukan deskriptor keamanan, untuk diterapkan ke semua file yang disalin oleh bagian daftar file bernama.
String deskriptor keamanan adalah string dengan token untuk menunjukkan komponen keamanan DACL (D:).
Untuk informasi tentang string deskriptor keamanan, lihat Bahasa Definisi Deskriptor Keamanan (Windows).
Jika bagian file-list-section.security tidak ditentukan, file mewarisi karakteristik keamanan direktori tempat file disalin.
Jika bagian file-list-section.security ditentukan, ACE berikut harus disertakan sehingga penginstalan dan peningkatan perangkat dan paket layanan sistem dapat terjadi:
(A;; GA;;; SY) − Memberikan semua akses ke sistem lokal.
(A;; GA;;; BA) − Memberikan semua akses ke administrator bawaan.
Jangan tentukan string ACE yang memberikan akses tulis kepada pengguna yang tidak memiliki hak istimewa.
Untuk informasi selengkapnya tentang cara menentukan deskriptor keamanan, lihat Membuat Penginstalan Perangkat Aman.
Keterangan
Windows hanya menyalin paket pengandar ke lokasi tujuannya sebagai bagian dari penginstalan pengandar jika berkas memiliki direktif INF CopyFiles . Ketika menyalin file, sistem operasi secara otomatis menghasilkan nama file sementara, jika perlu, dan mengganti nama file sumber yang disalin saat berikutnya sistem operasi dimulai.
Penulis file INF juga harus menyediakan spesifikasi jalur untuk file yang disalin dari media sumber dengan menggunakan bagian INF SourceDisksNames dan bagian INF SourceDisksFiles untuk secara eksplisit menentukan jalur setiap file sumber relatif terhadap file INF di media sumber.
Tujuan operasi salin dikontrol oleh bagian INF DestinationDirs. Bagian ini mengontrol tujuan untuk semua operasi penyalinan file, sebagai berikut:
Jika bagian bernama yang direferensikan oleh direktif CopyFiles memiliki entri terkait di bagian DestinationDirs dari INF yang sama, entri tersebut secara eksplisit menentukan direktori tujuan target tempat semua file yang tercantum di bagian bernama disalin. Jika bagian bernama tidak tercantum di bagian DestinationDirs , Windows menggunakan entri DefaultDestDir di bagian DestinationDirs dari file INF.
Jika direktif CopyFiles menggunakan @ sintaks nama file, Windows menggunakan entri DefaultDestDir di bagian DestinationDirs dari file INF.
Poin-poin berikut berlaku untuk direktif INF CopyFiles :
Setiap nama file-list-section harus unik untuk file INF, tetapi dapat direferensikan oleh direktif CopyFiles, DelFiles, atau RenFiles di tempat lain dalam file INF yang sama. Nama bagian harus mengikuti aturan umum yang dijelaskan dalam Aturan Sintaks Umum untuk File INF.
Nama file yang ditentukan dalam @ entri nama file atau file-list-section harus merupakan nama file yang tepat pada media sumber. Anda tidak dapat menggunakan token %strkey% untuk menentukan nama file. Untuk informasi selengkapnya tentang token %strkey%, lihat Bagian String INF.
Direktif CopyFiles tidak mendukung dekorasi nama file-list-section dengan ekstensi platform yang ditentukan sistem (.nt, .ntx86, .ntia64, atau .ntamd64).
Jangan gunakan direktif CopyFiles untuk menyalin file INF. Untuk informasi selengkapnya, lihat Menyalin File INF.
Dimulai dengan Windows Vista, poin-poin berikut juga berlaku untuk direktif INF CopyFiles :
Ketika paket driver dipentaskan di penyimpanan driver, file hanya disalin dari sumber paket driver ke penyimpanan driver jika file memiliki direktif INF CopyFiles yang sesuai.
Sebagai bagian dari pemutakhiran Windows, Windows hanya menyalin file paket driver ke penyimpanan driver sebagai bagian dari migrasi driver jika file memiliki arahan INF CopyFiles .
Contoh
Contoh ini menunjukkan bagaimana bagian SourceDisksNames, SourceDisksFiles, dan DestinationDirs menentukan jalur untuk operasi salin-file yang terjadi dalam memproses INF driver perangkat sederhana.
[SourceDisksNames]
1 = %Floppy_Description%,,,\WinNT
[SourceDisksFiles.x86]
aha154x.sys = 2,\x86 ; on distribution disk 2, in subdir \WinNT\x86
[DestinationDirs]
DefaultDestDir = 13
; ... Manufacturer and Models sections omitted here
[AHA154X.NTx86]
CopyFiles=@AHA154x.SYS
; ... some other directives and sections omitted here
; ...
Untuk contoh tambahan tentang cara menggunakan direktif INF CopyFiles , lihat file INF untuk sampel driver perangkat yang disertakan dalam direktori src Windows Driver Kit (WDK).