我正在爲具有多個先決條件的產品編寫引導程序。要確定要安裝哪些準備,我使用MSI AppSearch。Windows Installer:MsiDoAction()返回ERROR_FUNCTION_NOT_CALLED
引導程序打開myproduct.msi包::MsiOpenPackageEx()
,然後調用::MsiDoAction("AppSearch")
加載性能,並最終獲取感興趣的屬性,以確定哪些prereqs需要加載。然後關閉prereqs會話(::MsiCloseHandle()
),以便它不會干擾prereqs安裝程序使用的任何MSI會話。最終(在安裝prereq之後)引導程序運行msiexec /i myproduct.msi
。
我想通過調用自定義操作::MsiDoAction("MyExtendedAppSearch")
來擴展此操作,該操作將在prereqs會話期間使用WMI執行MSI AppSearch無法執行的搜索來填充其他MSI屬性。但是,當我打電話給該行動時,它將返回ERROR_FUNCTION_NOT_CALLED
。當在真實安裝會話中調用相同的操作時,工作得很好。
我已經嘗試過用C .dll和VBScript(嵌入,Binary
表,無所謂)。顯然,在我真正的安裝中,我沒有做某種初始化。另外或者,我沒有在動作上設置正確的標誌位,或者應該安排在InstallExecuteSequence
(或不是,或者其他)。
您的指導將非常感謝。提前致謝。
之後標準動作是您的自定義動作安排在哪個序列表中? MsiDoAction只能調用UI操作並執行InstallInitialize之前的操作。您是否嘗試在AppSearch之後立即安排自定義操作? – 2011-02-24 08:25:55