SetupInstallFilesFromInfSectionW 函式 (setupapi.h)
[此函式可用於需求一節中所述的操作系統。 它在後續版本中可能會變更或無法使用。 安裝程式API不應再用於安裝應用程式。 請改用 Windows Installer 來開發應用程式安裝程式。 SetupAPI 會繼續用於安裝設備驅動器。]
SetupInstallFilesFromInfSection 函式會將 [複製檔案]、[刪除檔案] 和 [重新命名檔案] 區段中所指定安裝的所有檔案排入佇列。安裝區段所列出的檔案。
如果檔案已修改,則需要此函式的呼叫端具有寫入目標目錄的許可權。
語法
WINSETUPAPI BOOL SetupInstallFilesFromInfSectionW(
[in] HINF InfHandle,
[in] HINF LayoutInfHandle,
[in] HSPFILEQ FileQueue,
[in] PCWSTR SectionName,
[in] PCWSTR 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
檢查所複製的每個檔案,以判斷版本資源是否表示它與目標上現有的複本相同,還是不是更新的版本。
如果來源檔案不是較新的或相等版本,函式會通知可取消複本的呼叫端。
在版本檢查期間使用的檔案版本資訊是在VS_FIXEDFILEINFO結構的dwFileVersionMS 和 dwFileVersionLS 成員中指定,如 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 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | setupapi.h |
程式庫 | Setupapi.lib |
Dll | Setupapi.dll |