当前位置: 首页 > 编程语言 > C#

通过WiX使用的C#中的自定义操作失败,错误1154分享

时间:2023-04-10 15:49:38 C#

C#学习教程:通过WiX在C#中自定义操作失败,错误1154(WiX的后期每周构建在其自定义操作模板方面似乎很糟糕,至少目前如此。1930是最近的构建,它似乎对可构建的C#CA具有工作参考。)我有两个#Custom编写的动作程序集。其中一个工作正常。另一个失败并出现以下错误:CustomActionnNameHere返回实际错误代码1154(请注意,如果翻译发生在沙箱内,这可能不是100%准确)我已经将.csproj文件与.wixproj文件进行了比较,我可以看出差异是适当的(例如,包含.cs文件的列表)。我已经更改了非工作.wxs以调用工作自定义操作而不是非工作自定义操作,后者按预期工作。我还能看到什么来完成这项工作?编辑:只是为了完成1154引用无效的DLL-nethelpmsg将其(英文)翻译为“运行此应用程序所需的库文件之一已损坏”。第二次编辑:在dll上运行peverify(在安装程序运行时从Windows安装程序获取副本),它说dll中的一切都很好。DLL只有一个“返回成功”的自定义操作方法,因此验证不多,但确实可以确认DLL没有损坏。第三次编辑:损坏的自定义操作中的代码如下:usingMicrosoft.Deployment.WindowsInstaller;namespaceFramework.Installer.Database{publicclassCustomActions{[CustomAction]publicstaticActionResultRunMigration(Sessionsession){returnActionResult.Success;}}}不多。.wxs的相关部分如下:听起来您正在使用DTF。如果您看到:使用Microsoft.Deployment.WindowsInstaller;那你肯定是。请务必阅读以下内容以了解其工作原理:DeploymentToolFoundation(DTF)ManagedCustomActions您还可以在WiX下的开始菜单中找到DTF帮助chm。基本上,我认为您是将.NET程序集链接到安装程序而不是未管理的包装器dll。阅读上面的文章,了解如何在Depends中查看它并了解预期结果。WiX|C#自定义操作项目应输出Foo.dll和Foo.CA.dll。您需要安装程序中的更高版本。对于将来登陆此页面的任何人(答案最初是发帖人),需要检查一整套事情:您是否在二进制表中引用了正确的DLL?您是否引用了正确的导出函数名称?你的课程是公开的吗?您的方法是否使用了正确的签名?就是这样:用正确的CustomAction属性标记标记为公共?标记为静态?返回操作结果?以会议为论据?确保使用WiXC#CustomActionProject类型来确保调用postbuild事件来创建本机DLL包装器。(参见#1)其中任何一个都可能导致1154错误。这就是为什么我写了一篇关于这个主题的综合博客文章并在这个答案中与之相关的原因。重要的是要充分了解托管代码如何呈现给非托管WindowsInstaller服务,并了解如何使用Depends验证公共静态方法是否在WiX/DTF生成的.CA.dll中导出为stdcall函数。我只是发现了同样的问题(使用正确的.CA.dll文件),在我的情况下,这是因为我没有使用静态方法。我有这个:publicActionResultMyMethod(Sessionsession)而不是这个:publicstaticActionResultMyMethod(Sessionsession)改变方法后它工作正常。希望它能帮助别人。如果您在VisualStudio(Votive)中创建自定义操作,请确保您创建的是WixCustonAction项目而不是类库,否则您必须使用MakeSfxCA工具来打包自定义操作。我发现错误1154的另一个非常简单(和愚蠢)的原因:CustomAction元素中拼写错误的DLL条目名称...比较其他人发现的各种原因,在我看来,错误1154在大多数情况下意味着“未找到DLL输入”。我看到此错误的另一个原因是因为我忘记将[CustomAction]属性添加到我的c#函数的名称中。尝试在Hope中调用自定义操作以获得更好的错误消息。根据调用操作的方式,我会收到不同的错误消息。另外,尝试使用fuslogvw.exe。它还可能会给您一个非常好的错误消息。在我的例子中,它是函数名称的长度。它有27个字符,我们得到了错误。我们将函数名称更改为24个字符,并且它起作用了。以上就是C#学习教程:WiX使用C#自定义操作失败,错误1154分享全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。—本文来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: