2011-04-07 46 views
3

我在將包含分號的數據設置爲CustomActionData屬性時遇到問題。 默認情況下,CustomActionData類使用分號作爲DataSeparator,當它包含分號時,它使我的數據完整。 有沒有什麼辦法把分號放到CustomActionData中,除了用come關鍵字替換它們?Wix:將分號設置爲CustomActionData

+0

你有沒有試過把分號數據放到屬性裏面?在這種情況下,它將看起來像'param1 = [value1]; param2 = [value2]'等。 – 2011-04-07 11:30:23

+0

是的。實際上,我的一個屬性中有一個分號。在這種情況下,我在CustomAction中使用了brocken數據,因爲CustomActionData將我的屬性值分爲兩部分。 – 2011-04-07 11:58:35

+0

嘗試使用反斜槓'(\)'來轉義分號 – 2011-04-07 12:21:40

回答

4

要在您的CustomActionData中傳遞分號,您應該再添加一個分號。

實施例:

CustomActionData = 「鍵1 =值;鍵2 = value2.1 ;; value2.2 ;; value2.3」 - 這將通過鍵1 =值和鍵2 = value2.1; VALUE2 .2; value2.3

如果你不知道分號在哪裏,那麼我想你可以通過用兩個分號替換每個分號來創建方法來逃脫它們。

如果還有更多的符號不知道如何逃避,您可以輕鬆找到創建一個創建CustomActionData實例的簡單應用程序,添加一個鍵值對並使用ToString()輸出CustomActionData字符串表示形式。

例子:

CustomActionData data = new CustomActionData(); 
data.Add("key1", "value1"); 
data.Add("key2", "value2.1;value2.2;value2.3"); 

Console.WriteLine(data.ToString()); 

我希望的信息是有幫助的。

+0

Tnx。我創建了一個額外的CustomAction,用關鍵字替換分號。 – 2011-04-08 12:12:38

+0

也可以通過'session [「CustomActionData」]'訪問原始字符串,如果你想控制它的反序列化,那就是[session.CustomActionData](https://stackoverflow.com/a/46965464/521757)確實。 – jnm2 2017-10-27 00:02:46

1

早在2006年,我寫了一篇博客文章和示例項目:

InstallScript, meet CustomActionData

基本上我所用的模式:/鍵1 =值/鍵2 =值

庫通過調用查找工作函數傳遞它「/ KEY1 =」。然後它返回所有數據直到下一個「/」結束。

無論如何,我已經不再使用這個了,因爲我已經轉移到了C#DTF,它有一個CustomActionData類來處理我的派生/反序列化。