INF CopyFiles 指示詞

CopyFiles 指示詞可以執行下列任一動作:

  • 導致將單一檔案從來源媒體複製到預設目的地目錄。

  • 參考 INF 中一或多個 INF 寫入器定義的區段,每個區段會指定要從來源媒體複製到目的地的檔案清單。

[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]... 

CopyFiles 指示詞可以在正式語法語句中顯示的任何區段內指定。 您也可以在下列任何 INF 區段內指定這個指示詞:

CopyFiles 指示詞所參考的每個具名區段都有一或多個下列格式的專案:

[file-list-section]
destination-file-name[,[source-file-name][,[unused][,flag]]]
...

INF-writer-defined file-list-section 可以有任意數目的專案,每個專案都位於不同的行上。

每個 file-list-section 都可以有下列窗體的選擇性相關聯 file-list-section.security 區段:

[file-list-section.security]
"security-descriptor-string"

項目

destination-file-name
指定目的地檔案的名稱。 如果未指定 source-file-name ,此規格也是來源檔案的名稱。

source-file-name
指定來源檔案的名稱。 如果檔案複製作業的來源和目的地檔名相同,則可以省略 source-file-name

閑置
Windows 2000 和更新版本的 Windows 不再支援此專案。

旗標
這些選擇性旗標是以十六進位表示法或區段專案中的十進位值表示,可用來控制 (或) 特定原始程式檔是否複製到目的地。 您可以指定下列系統定義旗標的一或多個 (ORed) 值。 不過,其中一些旗標互斥:

0x00000001 (COPYFLG_WARN_IF_SKIP)
如果使用者選擇不複製檔案,請傳送警告。 這個旗標和下一個是互斥的,而且兩者都與數字簽署的 INF 檔案無關。

0x00000002 (COPYFLG_NOSKIP)
不允許使用者略過複製檔案。 如果 已簽署驅動程式套件 ,則會隱含此旗標。

0x00000004 (COPYFLG_NOVERSIONCHECK)
忽略檔案版本,並寫入目的地目錄中的現有檔案。 這個旗標和下兩個是互斥的。 此旗標與數字簽署的 INF 檔案無關。

0x00000008 (COPYFLG_FORCE_FILE_IN_USE)
強制使用檔案行為:如果目前開啟檔案,請勿複製相同名稱的現有檔案。 相反地,請複製具有暫存名稱的指定原始程序檔,以便在下次重新啟動時重新命名及使用。

0x00000010 (COPYFLG_NO_OVERWRITE)
請勿將目的地目錄中的現有檔案取代為相同名稱的來源檔案。 此旗標無法與任何其他旗標結合。

0x00000020 (COPYFLG_NO_VERSION_DIALOG)
如果現有檔案比原始程序檔還新,請勿使用來源檔案寫入目的地目錄中的檔案。

較新的檢查會使用檔案版本來完成,如從VS_VERSIONINFO檔版本資源擷取。 如需詳細資訊,請參閱 版本資訊。 如果目標檔案不是可執行檔或資源映像,或檔案不包含檔案版本資訊,則裝置安裝會假設目標檔案較舊。

0x00000040 (COPYFLG_OVERWRITE_OLDER_ONLY)
只有在目的地上的檔案被較新版本取代時,才將來源檔案複製到目的地目錄。 此旗標與數字簽署的 INF 檔案無關。 版本檢查會使用與上述程式相同的程式COPYFLG_NO_VERSION_DIALOG。

0x00000400 (COPYFLG_REPLACEONLY)
只有在目的地目錄中已經有檔案時,才將來源檔案複製到目的地目錄。

0x00000800 (COPYFLG_NODECOMP) (Windows 7 和更新版本)
將來源檔案複製到目的地目錄,而不壓縮來源檔案。

0x00001000 (COPYFLG_REPLACE_BOOT_FILE)
系統載入器需要此檔案。 系統會提示使用者重新啟動系統。

0x00002000 (COPYFLG_NOPRUNE)
請勿因為優化而刪除此作業。

例如,Windows 可能會判斷檔案複製作業並非必要,因為檔案已經存在。 不過,INF 的寫入器知道需要此作業,並指示 Windows 覆寫其優化並執行檔案作業。

如果檔案也指定於 INF DelFiles 指示詞或 INF RenFiles 指示詞中,則可以使用此旗標來確保檔案會複製。

0x00004000 (COPYFLG_IN_USE_RENAME)
如果因為使用目的地檔案而無法複製來源檔案,請重新命名目的地檔案,然後將來源檔案複製到目的地檔案,然後刪除重新命名的目的地檔案。 如果無法重新命名目的地檔案,請在下一次系統重新啟動期間完成複製作業。 如果無法刪除重新命名的目的地檔案,請在下次重新啟動系統期間刪除重新命名的目的地檔案。

security-descriptor-string
指定要套用至由具名 file-list-section 複製的所有檔案的安全性描述項。 security-descriptor-string 是具有標記的字串,用來指出 DACL (D:) 安全性元件。

如需安全性描述項字串的相關信息,請參閱 安全性描述項定義語言 (Windows)

如果未指定 file-list-section.security 區段,檔案會繼承檔案複製所在目錄的安全性特性。

如果指定 file-list-section.security 區段,則必須包含下列 ACE,才能安裝及升級裝置和系統 Service Pack:

  • (A;;Ga;;;SY) - 授與本機系統的所有存取權。

  • (A;;Ga;;;BA) — 授與內建系統管理員的所有存取權。

請勿指定授與非特殊許可權使用者的寫入許可權的 ACE 字串。

如需如何指定安全描述元的詳細資訊,請參閱 建立安全裝置安裝

備註

如果檔案具有 INF CopyFiles 指示詞,Windows 只會將驅動程式套件複製到其目的地位置作為驅動程式安裝的一部分。 複製檔案時,作業系統會在下次啟動操作系統時自動產生暫存檔名,並重新命名複製的來源檔案。

INF 檔案寫入器也必須使用 INF SourceDisksNames 區段和 INF SourceDisksFiles 區段,為從來源媒體複製的檔案提供路徑規格,以明確指定來源媒體中每個來源檔案相對於 INF 檔案的路徑。

複製作業的目的地是由 INF DestinationDirs 區段所控制。 本節會控制所有檔案複製作業的目的地,如下所示:

  • 如果 CopyFiles 指示詞所參考的具名區段在相同 INF 的 DestinationDirs 區段中有對應的專案,該專案會明確指定目標目的地目錄,其中會複製命名區段中所列的所有檔案。 如果未在 DestinationDirs 區段中列出具名區段,Windows 會在 INF 檔案的 DestinationDirs 區段中使用 DefaultDestDir 專案。

  • 如果 CopyFiles 指示詞使用@檔名語法,Windows 會在 INF 檔案的 DestinationDirs 區段中使用 DefaultDestDir 專案。

下列幾點適用於 INF CopyFiles 指示詞:

  • 每個 file-list-section 名稱都必須是唯一的 INF 檔案,但可由 CopyFiles、DelFilesRenFiles 指示詞參考相同 INF 檔案中的其他位置。 區段名稱必須遵循 INF 檔案的一般語法規則中所述的一般規則

  • 檔名file-list-section 專案中指定的@檔名必須是來源媒體上檔案的確切名稱。 您無法使用 %strkey% 令牌來指定檔案名。 如需 %strkey% Token 的詳細資訊,請參閱 INF 字串一節

  • CopyFiles 指示詞不支援以系統定義的平臺擴展名裝飾檔案清單區段名稱, (.nt.ntx86.ntia64.ntamd64) 。

  • 請勿使用 CopyFiles 指示詞來複製 INF 檔案。 如需詳細資訊,請參閱 複製 INF 檔案

從 Windows Vista 開始,下列幾點也適用於 INF CopyFiles 指示詞:

  • 當驅動程式套件暫存於 驅動程式存放區時,如果檔案具有對應的 INF CopyFiles 指示詞,則只會將檔案從驅動程式套件來源複製到驅動程式存放區。

  • 在 Windows 升級過程中,如果檔案具有 INF CopyFiles 指示詞,Windows 只會將驅動程式套件檔案複製到驅動程式存放區作為驅動程式移轉的一部分。

範例

此範例示範 SourceDisksNamesSourceDisksFilesDestinationDirs 區段如何指定在處理簡單裝置驅動程式 INF 時發生的複製檔案作業路徑。

[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
; ...

如需如何使用 INF CopyFiles 指示詞的其他範例,請參閱 Windows 驅動程式套件 (WDK) src 目錄中的裝置驅動程式範例 INF 檔案。

另請參閱

AddInterface

ClassInstall32

DDInstall

DDInstall。介面

DelFiles

DestinationDirs

InterfaceInstall32

RenFiles

SourceDisksFiles

SourceDisksNames

字串

版本