簡體   English   中英

MSI安裝程序數據屬性

[英]MSI Installer Data Properties

我正在為一個正在從事的大型項目進行MSI安裝,我很想知道有關我所看到的此屬性的更多信息。

它們是[TARGETDIR]之類的東西,或包裹在[[PROPERTNAMEHERE]“中的任何東西。 我正在嘗試找出它們是否在任何地方都是這些的列表?

順便說一句,是否仍然可以通過自定義操作訪問所有這些屬性。 我已經查看了Context.Parameters集合,但在那里什么都沒有看到。 我已經將/ name =“ [TARGETDIR] \\”作為CustomActionData傳遞給customaction,但這還不夠。

謝謝

史蒂夫

使用基於MSI的軟件包時,了解屬性非常重要。 首先,您應該知道有兩種屬性,即公共屬性私有屬性 使用自定義操作時,應始終使用公共屬性,以避免在安裝過程從InstallUI Sequence傳遞到InstallExecute Sequence時重置其值。

同樣, 非常重要的是 ,自定義操作無法在延遲運行時獲取/設置屬性。 只有立即(即非延遲) 自定義操作才能獲取/設置屬性值。

有一個例外,當運行延遲的自定義操作時,您可以從名為“ CustomActionData ”的特殊屬性中獲取值。

現在,無論如何考慮自定義動作,您都可以編寫C ++,C#或VBScript自定義動作來在安裝過程中獲取/設置屬性。

不建議在正式的應用程序版本中使用VBScript,但可以將其用於需要內部使用的快速工具。

對於C ++自定義操作,您將獲得一個DLL,從中可以導出一個或多個方法,以在觸發您的自定義操作時進行調用。 請注意,功能簽名不同於標准DLL,請仔細分析鏈接的示例。

如果更方便的話,您也可以獲得編寫C#代碼的類似DLL。

確保您不要嘗試將標准DLL作為自定義操作運行非常重要,某些商業/免費安裝創作工具也支持該功能,但並非全部。 如果您打算編寫DLL自定義操作,則最好從一開始就使用上面鏈接的兩個示例(C ++ / C#)之一執行此操作。

發布此消息幾秒鍾后,我發現了我要查找的關於屬性列表的內容: http : //msdn.microsoft.com/zh-cn/library/windows/desktop/aa370905(v=vs.85).aspx

現在我正在尋找一種通過代碼訪問這些內容的方法?

如果您使用的是WIX ...

首先要回答您的旁注-您可以從自定義操作中訪問自定義值(假設您知道如何設置自定義操作...)-查看您的會話對象(自定義操作的參數)-有一個帶有索引器的CustomActionData。 通過指定來指定要使用的屬性的名稱

session.CustomActionData["INSTALLLOCATION"]

但是,您需要先將該屬性添加到自定義操作中,然后才能訪問它-為此,您需要告訴wix進行設置...

<CustomAction Id="UNIQUEID" Return="check" Property="YourCustomActionNameInWix" Value="INSTALLLOCATION=[INSTALLLOCATION]" />

要回答您的另一個問題-不,我認為您無法在必須編寫腳本的代碼中獲得這些值。

HTH

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM