共用方式為


SetupInstallFilesFromInfSectionA 函式 (setupapi.h)

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

SetupInstallFilesFromInfSection 函式會將安裝的所有檔案排入佇列,以供安裝區段所列出的 [複製檔案]、[刪除檔案] 和 [重新命名檔案] 區段所指定的安裝。

如果修改檔案,此函式的呼叫端必須具有寫入目標目錄的許可權。

語法

WINSETUPAPI BOOL SetupInstallFilesFromInfSectionA(
  [in] HINF     InfHandle,
  [in] HINF     LayoutInfHandle,
  [in] HSPFILEQ FileQueue,
  [in] PCSTR    SectionName,
  [in] PCSTR    SourceRootPath,
  [in] UINT     CopyFlags
);

參數

[in] InfHandle

INF 檔案的句柄,其中包含要安裝的 區段。

[in] LayoutInfHandle

包含 SourceDisksFiles 和 SourceDisksNames 區段之 INF 檔案句柄的選擇性指標。

如果未指定 LayoutInfHandle,則會使用來自 InfHandle 的 SourceDisksFiles 和 SourceDisksNames 區段。

[in] FileQueue

要加入安裝作業之佇列的句柄。

[in] SectionName

InfHandle 參數中的 Install 區段名稱,其中列出要安裝之檔案的 [複製檔案]、[刪除檔案] 和 [重新命名檔案] 區段。

使用 null終止字串。

[in] SourceRootPath

要複製之來源檔案根路徑的選擇性指標,例如 A:\ 或 \pegasus\win\install。

使用 null終止字串。

[in] CopyFlags

一組旗標的選擇性指標,可控制檔案複製作業的行為。

旗標可以是下列值的組合。

SP_COPY_DELETESOURCE

複製工作成功時,會刪除來源檔案。

如果刪除工作失敗,則不會通知呼叫端。

SP_COPY_REPLACEONLY

只複製檔案以覆寫目的地路徑上的檔案。

SP_COPY_NEWER_OR_SAME

檢查所複製的每個檔案,以判斷版本資源是否表示它與目標上的現有複本相同,或不是更新版本。

如果來源檔案不是較新的或相等版本,函式會通知可以取消複本的呼叫端。

在版本檢查期間使用的檔案版本資訊是在 dwFileVersionMS dwFileVersion LS 中指定,VS_FIXEDFILEINFO 結構的成員,如 Win32 版本函式所填入。

如果其中一個檔案沒有版本資源,或它們具有相同的版本資訊,則來源檔案會被視為較新。

SP_COPY_NEWER_ONLY

檢查要複製的每個檔案,以判斷其版本資源是否指出它是否比目標上的現有複本還新。

如果來源檔案較新,但不等於現有目標的版本,則會複製該檔案。

SP_COPY_NOOVERWRITE

檢查以判斷目標檔案是否存在。

如果目標檔案存在,函式會通知可以取消複本的呼叫端。

SP_COPY_NODECOMP

不會解壓縮檔案。

設定此旗標時,目標檔案不會以未壓縮的形式提供來源名稱,例如,如果您將 f:\x86\cmd.ex_複製到 \install\temp,則結果是下列目標檔案:\install\temp\cmd.ex_。

如果未指定SP_COPY_NODECOMP旗標,則會解壓縮檔案,並將目標稱為 \install\temp\cmd.exe。

如果指定,則會刪除 DestinationName 的檔名部分,並以來源檔案的檔名取代。 指定SP_COPY_NODECOMP時,無法檢查語言和版本資訊。

SP_COPY_LANGUAGEAWARE

檢查要複製的每個檔案,以判斷語言是否與目標上任何現有檔案的語言不同。

如果語言不同,函式會通知可以取消複製工作的呼叫端。

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

警告當用戶嘗試略過檔案時,略過檔案可能會影響安裝。

將此旗標用於系統關鍵檔案。

傳回值

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

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

言論

SetupInstallFilesFromInfSection 可以呼叫多次,以將多個 INF 區段中指定的檔案排入佇列。 成功認可佇列並複製、重新命名和/或刪除檔案之後,SetupInstallFromInfSection 呼叫,以執行登錄和 INI 安裝作業。

如果 UNC 目錄指定為檔案安裝的目標目錄,您必須先確定 UNC 目錄存在,再呼叫 setupInstallFilesFromInfSection 。 安裝程式函式不會檢查目錄是否存在,也不會建立 UNC 目錄。 如果目標 UNC 目錄不存在,檔案安裝就會失敗。

注意

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

要求

要求 價值
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
支援的最低伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平臺 窗戶
標頭 setupapi.h
連結庫 Setupapi.lib
DLL Setupapi.dll

另請參閱

函式

概觀

SetupInstallFromInfSection

SetupInstallServicesFromInfSection