我尝试在 WiX 中使用我的第一个自定义操作,我得到:
error 2896: Executing action CustomActionTest failed.
我正在使用 Visual Studio 2010、WiX 3.5、64 位 Windows 7 Ultimate、.NET Framework 4。
以下是我认为相关的部分:
<Binary Id="JudgeEditionCA" SourceFile="..\JudgeEditionCA\bin\Debug\JudgeEdition.CA.dll" />
<CustomAction Id="CustomActionTest" BinaryKey="JudgeEditionCA" DllEntry="CustomActionOne" Execute="immediate"/>
<Control Id="Next" Type="PushButton" X="248" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)" >
<Publish Event="DoAction" Value="CustomActionTest">1</Publish>
<Publish Event="DoAction" Value="InvalidClientDesc">CLIENT_DESC_VALID = "0"</Publish>
<Publish Event="NewDialog" Value="VerifyReadyDlg">CLIENT_DESC_VALID = "1"</Publish>
</Control>
来自 Action :
namespace JudgeEditionCA
{
public class CustomActions
{
[CustomAction]
public static ActionResult CustomActionOne( Session session )
{
return ActionResult.Success;
}
}
}
自定义操作的配置文件:
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="false">
<supportedRuntime version="v4.0" />
</startup>
</configuration>
最后,我在我的 WiX 项目中使用了对自定义操作的项目引用。我不确定我做错了什么。
最佳答案
我通过使用/lvx 选项运行我的 msi 来获得详细的日志记录。我还必须将我的操作移至 InstallExecuteSequence 部分以获取有意义的错误消息。当在 PushButton 中调用 CA 时,没有任何有意义的返回。
<InstallExecuteSequence>
<Custom Action='CustomActionTest' After='InstallFinalize' />
</InstallExecuteSequence>
System.BadImageFormatException:无法加载文件或程序集“JudgeEdition”或其依赖项之一。此程序集由比当前加载的运行时更新的运行时构建,无法加载。
我将 useLegacyV2RuntimeActivationPolicy 属性更改为 true。一切都开始运转良好。
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
</startup>
</configuration>
这些链接帮助我加快了速度:
关于c# - 使用 WiX C#/.NET 4 自定义操作时出现错误 2896,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3468964/