Wix和自定义.net DLL

时间:2010-12-07 18:09:27

标签: wix

我正在寻找一些完整的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项目。然后我运行它,我得到了这个错误。

4 个答案:

答案 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)