Wix 和自定义 .net dll

标签 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 项目。然后我运行它,我得到了这个错误。

最佳答案

接受的答案中提到的链接(由 user431821 提供)确实有帮助,但发布了对我有帮助的确切内容。

自定义操作项目创建 2 个 dll。如果项目是CustomActionProject,它会创建CustomActionProject.dllCustomActionProject.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"/>

这解决了我的问题。

关于Wix 和自定义 .net dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4380031/

相关文章:

windows - 多种架构,winusb 和 wix

MSBuild:directory.build.props 和 directory.build.targets 不适用于 *.wixproj

wix - 我可以选择使用转换在 Wix Heat 中包含特定文件扩展名吗?

windows - 从 32 位 wix 脚本注册 64 位 com 组件

wix - 安装或主要升级的自定义操作

wix - 使用 WiX 获取 INI 文件值

wix - 如何使 ExePackage 的 Wix DetectCondition 始终为 True?

user-interface - 使用 WiX 如何根据属性更改禁用/启用控件?

wix - WindowsFolder 属性作为 exe 地址的一部分不起作用

wix - wix主要升级未安装所有文件