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 |