我正在寻找一些完整的wix项目示例,参考.NET dll(完整的wix VS项目,.net dll VS项目,以及编译的.net dll)。
我正在尝试运行SampleAskKeyNet并且经常出现错误“此Windows Installer程序包存在问题。无法运行此安装所需的DLL。请联系您的支持人员或程序包供应商,我是试图找出我做错了什么。
我在VS中创建了wix项目,在VS中创建了.net dll项目,编译了dll项目,将CheckPidPackage.dll复制到wix VS项目目录并编译wix项目。然后我运行它,我得到了这个错误。
答案 0 :(得分:5)
在接受的答案中提到的链接(用户431821)确实很有帮助,但发布了对我有帮助的确切内容。
自定义操作项目会创建2个dll。如果项目是CustomActionProject,它将创建 CustomActionProject.dll 和 CustomActionProject.CA.dll
我正在引用CustomActionProject.dll,如下所示,这是常规的dll。
<Binary Id="CustomActionProject"
src="..\CustomActionProject\bin\$(var.Configuration)\CustomActionProject.dll" />
<CustomAction Id="MyAction"
Return="check"
BinaryKey="CustomActionProject"
DllEntry="Validate"/>
WIX创建CustomActionProject.CA.dll,它实际上不是.NET托管程序集,而是非托管程序集。因此,我们必须参考它而不是常规的。
<Binary Id="CustomActionProject"
src="..\CustomActionProject\bin\$(var.Configuration)\CustomActionProject.CA.dll" />
<CustomAction Id="MyAction"
Return="check"
BinaryKey="CustomActionProject"
DllEntry="Validate"/>
这解决了我的问题。
答案 1 :(得分:4)
答案 2 :(得分:1)
对我来说,这是我的CustomAction DllEntry与我的方法名称不匹配。即。
<CustomAction Id="CheckingPID" BinaryKey="CheckPID.CA" DllEntry="BadValue" />
public static ActionResult CheckPID(Session session)
答案 3 :(得分:0)
我忘了在dll上使用MakeSfxCA.exe来包装它。
此处的详细信息Custom Action in C# used via WiX fails with error 1154和此处http://blog.deploymentengineering.com/2008/05/deployment-tools-foundation-dtf-custom.html