【问题标题】:The system cannot find the file "wixca.dll"系统找不到文件“wixca.dll”
【发布时间】:2018-09-20 09:54:52
【问题描述】:

我将项目从 Wix 2.0 迁移到 4.0,然后当我尝试从 Visual Studio 2017 (Votive) 构建项目以生成安装程序软件包时,出现以下错误:

系统找不到文件“wixca.dll”

我查看了以下路径,但没有找到 dll:

ProgramFiles\Wix Toolset v4.0\bin

在我的 LicenseAgreementDlg.wxs 文件中,我使用下面的代码,并从这里使用 Value="WixUIPrintEula" 我们调用 Common.wxs 文件

<Control Id="LicenseText" Type="ScrollableText" X="20" Y="60" Width="330" Height="140" Sunken="yes" TabSkip="no">
                    <Text SourceFile="$(var.LicenseFile)" />
                </Control>
                <Control Id="Print" Type="PushButton" X="76" Y="243" Width="65" Height="17" Text="!(loc.WixUIPrint)">
                    <Publish Event="DoAction" Value="WixUIPrintEula">1</Publish>
                </Control>

我在 Common.wxs 文件中使用“wixca.dll”

如下图:

<Fragment>
<CustomAction Id="WixUIPrintEula" BinaryKey="WixUIWixca" DllEntry="PrintEula" Return="ignore" Execute="immediate"/>
<Binary Id="WixUIWixca" SourceFile="wixca.dll"/>
</Fragment>

请帮助我在哪里可以获得 wixca.dll?

【问题讨论】:

  • 请不要破坏已发布的问题,包括您自己的问题。回滚。

标签: wix wix3.5 wix3.7 wix3.6 wix3.8


【解决方案1】:

看起来您有一个自定义操作要与安装程序一起执行。检查创建 wixCA.dll 的任何其他项目。

【讨论】:

    【解决方案2】:

    消除碎片:正如我在a previous comment 中所写,也许可以阅读这个答案:How to get rid of wixca.dll and print Eula in WIX v3。总而言之,WiX 3 及更高版本中似乎不再需要此用于许可协议打印的 sn-p,前提是您 use a standard WiX dialog set。只需尝试取出整个片段并设置一个 WiX 对话框集,看看是否可以解决问题。

    WiX 对话框集:在 WiX Votive (Visual Studio) 中添加标准对话框集。

    • 在 Visual Studio 中,对于您的 WiX 项目:添加对 %ProgramFiles (x86)%\WiX Toolset v3.11\bin\WixUIExtension.dll 的项目引用。
    • 在您的 WiX 源中设置 Mondo 默认 GUI:&lt;UIRef Id="WixUI_Mondo" /&gt;(注释掉其他 UIRef 元素)。或设置另一组,list here
    • 测试编译。您的设置现在应该神奇地拥有一组默认的标准对话框。

    WixCA.dll:记录在案 WixCA.dll 包含 WiX standardized custom actions(有趣的概念:标准自定义操作 - 语言之花)和此 DLL 被编译到任何使用 WiX 提供的内置自定义操作的 WiX 构建的 MSI 的二进制表中。

    使用这些自定义操作的 WiX 源会将命名空间 xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" 添加到其顶部 WiX 元素。当它也被编译到二进制表中时,可能还有其他情况,但如果该命名空间存在,并且添加了任何自定义操作元素,那么肯定会出现这种情况。查找以&lt;util:.....&gt; 开头的元素(除了该命名空间之外,还有许多自定义操作。See documentation

    【讨论】:

    • 我不太记得 WiX 2,所以我有点不稳定。但是,您参考的与 GUI 相关的 wxs 文件:LicenseAgreementDlg.wxs 和类似的可能是不必要的,除非它们是为您的项目主动定制的独特功能。如果是,那么您需要进行复杂的迁移,但如果对话框只是普通的普通对话框,没有任何复杂性,那么您可以将它们替换为从 WixUIExtension.dll 获得的默认对话框集。当您浏览 WiX2 对话框时,您是否看到任何自定义字段?任何非标准值?
    • 也许您可以在问题中添加屏幕截图,以便我们查看它是否是标准的。可能不会。
    • 嗯,我无法访问 WiX2,但这看起来肯定是定制的。您可以访问旧的 WiX2 安装程序 MSI 吗?还是你只有资源?如果您有原始安装程序 MSI 文件,可以尝试使用 WiX 4 反编译器 dark.exe 对它们进行反编译。使用版本 4 非常重要。如果可行,反编译的 wxs 应该可以用作 WiX 4 对话框。也许吧。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多