共用方式為


SetupQueueCopySectionA 函式 (setupapi.h)

[此函式可用於需求一節中所述的操作系統。 它在後續版本中可能會變更或無法使用。 安裝程式API不應再用於安裝應用程式。 請改用 Windows Installer 來開發應用程式安裝程式。 SetupAPI 會繼續用於安裝設備驅動器。]

SetupQueueCopySection 函式會將 INF 檔案區段中的所有檔案放在安裝佇列中以供複製。 區段必須是正確的 複製檔格式 ,而且 INF 檔案必須包含 SourceDisksFilesSourceDisksNames 區段 (,或具有內含附加這些區段的 INF 檔案) 。

語法

WINSETUPAPI BOOL SetupQueueCopySectionA(
  [in] HSPFILEQ QueueHandle,
  [in] PCSTR    SourceRootPath,
  [in] HINF     InfHandle,
  [in] HINF     ListInfHandle,
  [in] PCSTR    Section,
  [in] DWORD    CopyStyle
);

參數

[in] QueueHandle

安裝程式 OpenFileQueue 傳回的安裝程序檔案佇列句柄。

[in] SourceRootPath

指定此復本來源根目錄之 Null 終止字串的指標,例如 A:。

[in] InfHandle

處理包含 SourceDisksFilesSourceDisksNames 區段的開啟 INF 檔案。 如果未指定 ListInfHandle,InfHandle 會包含區段名稱。 例如,如果用戶的系統 (存在平臺特定區段,SourceDisksNames.x86 和 SourceDisksFiles.x86) ,將會使用平臺特定區段。

[in] ListInfHandle

開啟之 INF 檔案的選擇性句柄,其中包含要排入佇列以進行複製的區段。 如果未指定 ListInfHandle ,則會假設 InfHandle 包含 區段。

[in] Section

Null 終止字串的指標,指定要排入佇列以供複製之區段的名稱。

[in] CopyStyle

旗標,控制檔案複製作業的行為。 這些旗標可能是下列值的組合。

SP_COPY_DELETESOURCE

成功複製時刪除來源檔案。 如果刪除失敗,則不會通知呼叫端。

SP_COPY_REPLACEONLY

只有在這麼做時,才會複製檔案,以覆寫目的地路徑上的檔案。

SP_COPY_NEWER_OR_SAME

檢查正在複製的每個檔案,以查看其版本資源是否表示其版本是否等於或不是比目標上現有的複本還新。

在版本檢查期間使用的檔案版本資訊是在 VS_FIXEDFILEINFO 結構之 dwFileVersionMS 和 dwFileVersionLS 成員中指定的,如版本函式填入。 如果其中一個檔案沒有版本資源,或它們具有相同的版本資訊,則會將原始程式檔視為較新。

如果來源檔案在版本或更新版本中不相等,且已指定 CopyMsgHandler ,則呼叫端會收到通知,而且可能會取消複本。 如果未指定 CopyMsgHandler ,則不會複製檔案。

SP_COPY_NEWER_ONLY

檢查正在複製的每個檔案,以查看其版本資源是否表示它不是比目標上現有的複本還新。 如果來源檔案較新,但版本與現有目標不相等,則會複製檔案。

SP_COPY_NOOVERWRITE

檢查目標檔案是否存在,如果是的話,請通知可能已經複製的呼叫端。 如果未指定 CopyMsgHandler ,則不會覆寫檔案。

SP_COPY_NODECOMP

請勿解壓縮檔案。 設定此旗標時,如果適當) ,則不會提供未壓縮格式的來源名稱 (目標檔案。 例如,將 f:\x86s\cmd.ex_複製到 \install\temp 會導致 \install\temp\cmd.ex_的目標檔案。 如果未指定SP_COPY_NODECOMP旗標,則會解壓縮檔案,並呼叫目標 \install\temp\cmd.exe。 如果指定 ,DestinationName 的檔名部分會遭到移除,並以來源檔案的檔名取代。 指定SP_COPY_NODECOMP時,無法檢查任何語言或版本資訊。

SP_COPY_LANGUAGEAWARE

檢查所複製的每個檔案,以查看其語言是否與目標上任何現有檔案的語言不同。 若是如此,並指定 CopyMsgHandler ,呼叫端會收到通知,而且可能會取消複本。 如果未指定 CopyMsgHandler ,則不會複製檔案。

SP_COPY_SOURCE_ABSOLUTE

SourceFile 是完整的來源路徑。 請勿在 INF 檔案的 SourceDisksNames 區段中查閱。

SP_COPY_SOURCEPATH_ABSOLUTE

SourcePathRoot 是原始程式檔的完整路徑部分。 針對檔案所在的來源媒體,忽略 INF 檔案之 SourceDisksNames 區段中指定的相對來源。 如果指定SP_COPY_SOURCE_ABSOLUTE,則會忽略此旗標。

SP_COPY_FORCE_IN_USE

如果目標存在,其行為就像正在使用中,並將檔案排入佇列,以便在下一次系統重新啟動時進行複製。

SP_COPY_IN_USE_NEEDS_REBOOT

如果檔案在複製作業期間正在使用中,請警示使用者系統必須重新啟動。

SP_COPY_NOSKIP

請勿為使用者提供略過檔案的選項。

SP_COPY_FORCE_NOOVERWRITE

檢查目標檔案是否存在,如果存在,則不會覆寫檔案。 呼叫端不會收到通知。

SP_COPY_FORCE_NEWER

檢查所複製的每個檔案,以查看其版本資源是否 (或非映射檔案的時間戳,) 指出它是否比目標上的現有複本還新。 如果複製的檔案不是較新的檔案,則不會複製檔案。 呼叫端不會收到通知。

SP_COPY_WARNIFSKIP

如果用戶嘗試略過檔案,請警告他們略過檔案可能會影響安裝。 (用於系統關鍵檔案.)

傳回值

如果函式成功,則傳回值是非零值。

如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

如果 UNC 目錄指定為檔案複製作業的目標目錄,您必須先確定它存在,才能認可佇列。 安裝程式函式不會檢查 是否存在,而且不會建立 UNC 目錄。 如果目標 UNC 目錄不存在,檔案複製將會失敗。

此函式需要 Windows INF 檔案。 某些較舊的 INF 檔案格式可能不受支援。

注意

setupapi.h 標頭會將 SetupQueueCopySection 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 setupapi.h
程式庫 Setupapi.lib
Dll Setupapi.dll

請參閱

函式

概觀

SetupQueueCopy

SetupQueueDefaultCopy