无法使用Session.CustomActionData设置属性

时间:2011-05-04 14:30:43

标签: properties wix windows-installer custom-action

无法使用Session.CustomActionData设置属性值。

        if (s.CustomActionData.ContainsKey(PropertyName0))
            s.CustomActionData[PropertyName0] = "1";
        else
            s.CustomActionData.Add(PropertyName0, "1");     

虽然此代码有效,但当自定义操作结束时,属性保持不变。 那么我该如何设置属性值呢? 我需要在一个自定义操作中设置属性值,然后在另一个自定义操作中读取它。

3 个答案:

答案 0 :(得分:2)

目前尚不清楚你在做什么。 延迟自定义操作中只有少数属性可用。您是否尝试将数据传递给延迟的自定义操作?

如果在运行时需要,可以编写立即自定义操作来编写属性,然后将这些操作传递给延迟自定义操作。

以下是即时CA的示例

[CustomAction]
public static ActionResult ImmediateCA(Session session)
{
   CustomActionData data = new CustomActionData();
   data["property1"] = "abc";
   data["property2"] = "def";
   session["myDeferredCAData"] = data.ToString();
   return ActionResult.Success;
}


[CustomAction]
public static ActionResult myDeferredCA(Session session)
{
   CustomActionData data = session.CustomActionData;
   string property1 = data["property1"];
   return ActionResult.Success;
}

此解决方案由Nick Ramirez提出

答案 1 :(得分:1)

您是否正在使用托管代码?我知道我在获取C ++ CA以获取属性并在一个CA中更新属性时遇到了麻烦。在过去,我已经在一个CA中写入了注册表并从中读取到另一个CA中的属性以解决此问题。

答案 2 :(得分:0)

无法在延迟的自定义操作中设置属性。 http://msdn.microsoft.com/en-us/library/aa370543(v=VS.85).aspx