2017-03-01 71 views
0

試圖在一個WIX DTF自定義操作的DLL使用的功能從InstallShield將2016年的方法是相同的一個「受管代碼」類型的自定義動作執行延期自定義動作,不同之處在於對於DTF訪問,必須創建一個「新的MSI DLL」類型的自定義操作。自定義操作中的屬性名稱必須與引用的自定義操作DLL中的函數名稱相匹配。如果它們不匹配,CustomActionData將爲空。的InstallShield - 在C#WIX DTF自定義動作的dll訪問CustomActionData

對於任一自定義動作類型,「設置屬性」動作必須首先被執行,它設置CustomActionData的值。然後,執行與自定義操作相關的功能,並檢索以前在CustomActionData中設置的值。

我的財產,我的函數具有相同的名稱(SetRegionalServerUrl),和我第一次所說的「設置屬性」自定義操作,但CustomActionData是空的時自定義操作的功能,嘗試讀取其內容。

使用「託管代碼」類型的自定義操作DLL時,所以我希望有人可以建議可以嘗試,或指出什麼我已經錯過了這工作得很好。

謝謝。

+0

僅供參考,我可以從函數執行Session.Log()調用,並且MSI日誌顯示session.CustomActionData.Keys.Count = 0. – Vince

回答

0

如果你有遞延上下文中執行一個動作後,再正常變量不可用。你必須對所有這些包裝成CustomActionDatahttp://helpnet.flexerasoftware.com/isxhelp22/helplibrary/ActionExecutionOptions.htm

什麼你做的是定義一個CustomActionData等於原始屬性的整理和分析,然後在你的實際行動。

+0

感謝您的回覆....我提到過這個是延期行動,並且我在此延期行動之前立即稱之爲「設置財產」自定義行爲。我的理解是,這將設置CustomActionData,以便可以從與延遲自定義操作關聯的函數中訪問它。再說一次,這對於「託管代碼」類型的自定義操作很好,但不適用於調用WIX DTF自定義操作DLL的「新msi」類型的自定義操作。如果後者有不同的要求,那麼我會很感激你能提供的任何信息。 – Vince

+0

聽起來像你可能會說CustomActionData尚未定義,並且必須在設置屬性值之前聲明它?這與我閱讀過的所有內容相矛盾,所以我希望我只是誤解你的意思。 – Vince