自定義動作類型 17
此自定義動作會呼叫以 C 或 C++撰寫的動態連結庫 (DLL)。
源
DLL 會在目前的工作階段期間隨應用程式一起安裝。 CustomAction 數據表的 Source 欄位 包含 File 資料表索引鍵。 自定義動作程式代碼的位置取決於此檔案的目標路徑解析;因此,此自定義動作必須在安裝該檔案之後以及移除該檔案之前呼叫。
類型值
在 CustomAction 資料表 的 Type 數據行中包含下列值,以指定基本數值類型。
常數 | 十六進位 | 十進位 |
---|---|---|
msidbCustomActionTypeDll + msidbCustomActionTypeSourceFile | 0x011 | 17 |
目標
DLL 會透過 CustomAction 數據表的 [目標] 欄位中名為 的進入點來呼叫 ,並將單一自變數傳遞至目前安裝會話的句柄。 數據表中指定的進入點名稱必須符合從 DLL 導出的進入點名稱。 請注意,如果未指定專案函式,則為 。DEF 檔案或 /EXPORT: 鏈接器規格,名稱可能有前置底線和 “@4” 後綴。 呼叫的函式必須指定呼叫慣例__stdcall。
傳回處理選項
在 CustomAction 資料表 的 Type 數據行中包含選擇性旗標位,以指定傳回處理選項。 如您選擇與值的描述,請參閱 自訂動作傳回處理選項。
執行排程選項
在 CustomAction 資料表 的 Type 數據行中包含選擇性旗標位,以指定執行排程選項。 這些選項可控制自定義動作的多重執行。 如您設定的描述,請參閱 自訂動作執行排程選項。
In-Script 執行選項
在 customAction 資料表 的 Type 數據行中包含選擇性旗標位,以指定腳本內執行選項。 這些選項會將動作程式代碼複製到執行、復原或認可腳本。 如您選項的描述,請參閱 自訂動作 In-Script 執行選項。
傳回值
言論
呼叫動態連結庫 (DLL) 的自定義動作需要安裝會話的句柄。 如果這也是延遲執行的自定義動作,則會話在執行安裝腳本期間可能已不存在。 如需此類型之自訂動作如何取得內容資訊的資訊,請參閱 取得延遲執行自定義動作的內容資訊。
自定義動作會在個別線程中執行,而且可能會有有限的系統存取權。 在目前序列終止或安裝會話終止時,以異步方式執行的自定義動作會封鎖主要線程,直到它們傳回為止。
參考已安裝檔案做為其來源的自定義動作,例如自定義動作類型 17 (DLL),必須遵守下列排序限制:
- 自定義動作必須在 CostFinalize 巨集指令之後排序。 如此一來,自定義動作就可以解析找到 DLL 所需的路徑。
- 如果計算機上尚未安裝來源檔案,則此類型的延後自定義動作必須在 InstallFiles 巨集指令之後排序。
- 如果電腦上尚未安裝來源檔案,則此類型的非延後自定義動作必須在 InstallFinalize 巨集指令之後排序。
相關主題